> ## Documentation Index
> Fetch the complete documentation index at: https://docs.letterdrop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Confirmed evaluations

> Accounts your team confirmed are evaluating vendors. Requires start_date and end_date; takes the same filters as /accounts except the *_within_days and *_older_than_days ones.



## OpenAPI

````yaml /openapi.json get /analytics/confirmed-evaluations
openapi: 3.1.0
info:
  title: Letterdrop Competitor Monitoring API
  version: 2.0.0
  license:
    name: Proprietary
    url: https://letterdrop.com/terms
  description: >-
    Read your workspace's Competitor Monitoring data: the accounts where people
    engaged your competitors, the contacts and signals behind each, their CRM
    context, your outreach, and the dashboard metrics.


    The API speaks the same language as the New Competitor Deal webhook (payload
    version v2): a field has the same name and the same values in both, so
    whatever you build on one reads the other.


    **Versioning.** The major version is in the path (/api/v2). Within v2
    changes are additive only (new optional fields, filters, endpoints), so
    ignore fields you do not recognise. The v1 competitor-monitoring endpoints
    keep working unchanged.


    **Rate limits.** Per workspace: 10 requests/second and 600/minute, plus 20
    uncached computations/minute (analytics count as 4). Cached reads
    (meta.cache = hit), including every later page of a list you already
    started, use no computation budget. Every response carries RateLimit-Limit /
    RateLimit-Remaining / RateLimit-Reset; a 429 carries Retry-After.


    **Freshness.** Results are cached for a few minutes (analytics and filter
    options a little longer); meta.data_as_of says when the data was computed.
    Signals are collected daily, so polling faster than every few minutes
    returns the same data.
servers:
  - url: https://api.letterdrop.com/api/v2
security: []
tags:
  - name: Accounts
    description: Companies with competitor signals, and what we know about each.
  - name: Contacts
    description: The people behind the signals.
  - name: Analytics
    description: The dashboard metrics, one endpoint each.
  - name: Filters
    description: Every key of every object, and how to select and filter on it.
externalDocs:
  description: Developer reference
  url: https://api.letterdrop.com/api/v2/docs
paths:
  /analytics/confirmed-evaluations:
    get:
      tags:
        - Analytics
      summary: Confirmed evaluations
      description: >-
        Accounts your team confirmed are evaluating vendors. Requires start_date
        and end_date; takes the same filters as /accounts except the
        *_within_days and *_older_than_days ones.
      operationId: getAnalyticsConfirmedEvaluations
      parameters:
        - name: start_date
          in: query
          required: true
          description: Start of the period, YYYY-MM-DD (UTC, inclusive). Required.
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
        - name: end_date
          in: query
          required: true
          description: End of the period, YYYY-MM-DD (UTC, inclusive). Required.
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
        - $ref: '#/components/parameters/search'
        - $ref: '#/components/parameters/account_competitors'
        - $ref: '#/components/parameters/account_competitor_cycle_stage'
        - $ref: '#/components/parameters/account_priority'
        - $ref: '#/components/parameters/account_icp_fit'
        - $ref: '#/components/parameters/account_signal_freshness'
        - $ref: '#/components/parameters/latest_signal_after'
        - $ref: '#/components/parameters/latest_signal_before'
        - $ref: '#/components/parameters/company_size'
        - $ref: '#/components/parameters/company_hq_country'
        - $ref: '#/components/parameters/crm_has_account'
        - $ref: '#/components/parameters/crm_is_customer'
        - $ref: '#/components/parameters/crm_has_opp'
        - $ref: '#/components/parameters/crm_latest_opp_stage'
        - $ref: '#/components/parameters/crm_latest_opp_owner_email'
        - $ref: '#/components/parameters/crm_account_owner_name'
        - $ref: '#/components/parameters/crm_account_owner_email'
        - $ref: '#/components/parameters/crm_latest_opp_date_after'
        - $ref: '#/components/parameters/crm_latest_opp_date_before'
        - $ref: '#/components/parameters/outreach_status'
        - $ref: '#/components/parameters/outreach_attribution'
        - $ref: '#/components/parameters/preset'
        - $ref: '#/components/parameters/crm_custom_fields'
        - name: fields
          in: query
          required: false
          description: Comma-separated metrics to return; omit for all.
          schema:
            type: string
            maxLength: 4000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - meta
                properties:
                  data:
                    $ref: '#/components/schemas/AnalyticsConfirmedEvaluations'
                  meta:
                    $ref: '#/components/schemas/Meta'
              example:
                data:
                  period:
                    start_date: '2026-08-01'
                    end_date: '2026-10-31'
                  confirmed_evaluations_count: 3
                meta:
                  api_version: '2'
                  data_as_of: '2026-11-02T09:36:28.016Z'
                  cache: hit
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/Unprocessable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - WorkspaceKey: []
        - BearerAuth:
            - mcp.read
components:
  parameters:
    search:
      name: search
      in: query
      required: false
      description: Free-text match on company and contact names.
      schema:
        type: string
        maxLength: 200
      x-filter: true
    account_competitors:
      name: account_competitors
      in: query
      required: false
      description: >-
        Accounts with signals for any of these competitors (names from GET
        /fields?object=account).
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          minLength: 1
          maxLength: 500
      x-filter: true
    account_competitor_cycle_stage:
      name: account_competitor_cycle_stage
      in: query
      required: false
      description: Inferred competitor buying-cycle stage.
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          enum:
            - Aware of Competitor
            - Historical
            - Prospecting
            - Early Stage
            - Late Stage
      x-filter: true
    account_priority:
      name: account_priority
      in: query
      required: false
      description: Priority.
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          enum:
            - High
            - Medium
            - Nurture
      x-filter: true
    account_icp_fit:
      name: account_icp_fit
      in: query
      required: false
      description: true = only ICP-fit accounts, false = only the rest.
      schema:
        type: string
        enum:
          - 'true'
          - 'false'
      x-filter: true
    account_signal_freshness:
      name: account_signal_freshness
      in: query
      required: false
      description: >-
        Stale alone = only stale accounts; Recent and Historic together =
        exclude stale accounts. Other combinations are rejected: Recent and
        Historic cannot be filtered apart yet.
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          enum:
            - Recent
            - Historic
            - Stale
      x-filter: true
    latest_signal_after:
      name: latest_signal_after
      in: query
      required: false
      description: Latest signal on or after this date.
      schema:
        type: string
      x-filter: true
    latest_signal_before:
      name: latest_signal_before
      in: query
      required: false
      description: Latest signal on or before this date.
      schema:
        type: string
      x-filter: true
    company_size:
      name: company_size
      in: query
      required: false
      description: Employee bands, e.g. "51-200".
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          minLength: 1
          maxLength: 500
      x-filter: true
    company_hq_country:
      name: company_hq_country
      in: query
      required: false
      description: >-
        Headquarters country, ISO 3166-1 alpha-2 (e.g. "US"); a country name
        ("United States") is accepted too.
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          minLength: 2
          maxLength: 100
      x-filter: true
    crm_has_account:
      name: crm_has_account
      in: query
      required: false
      description: >-
        true = the account was already in your CRM when we found it, false = net
        new (it was not). An account added to the CRM later can have
        crm_account_url set and still be net new.
      schema:
        type: string
        enum:
          - 'true'
          - 'false'
      x-filter: true
    crm_is_customer:
      name: crm_is_customer
      in: query
      required: false
      description: true = your customers only, false = exclude them.
      schema:
        type: string
        enum:
          - 'true'
          - 'false'
      x-filter: true
    crm_has_opp:
      name: crm_has_opp
      in: query
      required: false
      description: >-
        false = accounts with no CRM opportunity. true is the same as listing
        every crm_latest_opp_stage.
      schema:
        type: string
        enum:
          - 'true'
          - 'false'
      x-filter: true
    crm_latest_opp_stage:
      name: crm_latest_opp_stage
      in: query
      required: false
      description: >-
        Latest opportunity's stage, as your CRM labels it (values from GET
        /fields?object=account).
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          minLength: 1
          maxLength: 500
      x-filter: true
    crm_latest_opp_owner_email:
      name: crm_latest_opp_owner_email
      in: query
      required: false
      description: Latest opportunity owner's email.
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          format: email
          pattern: >-
            ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
      x-filter: true
    crm_account_owner_name:
      name: crm_account_owner_name
      in: query
      required: false
      description: CRM account owner's name (values from GET /fields?object=account).
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          minLength: 1
          maxLength: 500
      x-filter: true
    crm_account_owner_email:
      name: crm_account_owner_email
      in: query
      required: false
      description: CRM account owner's email.
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          format: email
          pattern: >-
            ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
      x-filter: true
    crm_latest_opp_date_after:
      name: crm_latest_opp_date_after
      in: query
      required: false
      description: Latest opportunity created or closed on or after this date.
      schema:
        type: string
      x-filter: true
    crm_latest_opp_date_before:
      name: crm_latest_opp_date_before
      in: query
      required: false
      description: Latest opportunity created or closed on or before this date.
      schema:
        type: string
      x-filter: true
    outreach_status:
      name: outreach_status
      in: query
      required: false
      description: >-
        Where outreach stands. *_after_signal values count only outreach after
        the first signal.
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          enum:
            - reached_out
            - replied
            - opportunity_created
            - not_reached_out
            - reached_out_after_signal
            - replied_after_signal
            - opportunity_created_after_signal
      x-filter: true
    outreach_attribution:
      name: outreach_attribution
      in: query
      required: false
      description: Attribution verdict.
      style: form
      explode: true
      schema:
        minItems: 1
        maxItems: 200
        type: array
        items:
          type: string
          enum:
            - direct_reply
            - driven
            - assisted
            - detected
            - competitive_deal
            - not_attributed
      x-filter: true
    preset:
      name: preset
      in: query
      required: false
      description: >-
        A prebuilt view of the table. CRM presets replace crm_latest_opp_stage
        with their own rule.
      schema:
        type: string
        enum:
          - pilot
          - advertising
          - capacity_based_outbound
          - sell_now
          - competitor_aware_tam
          - customers_at_risk
          - competitive_deals
      x-filter: true
    crm_custom_fields:
      name: crm_custom_fields
      in: query
      required: false
      description: >-
        Custom CRM fields, as crm_custom_fields[<crm>:<object>:<field>]=<value>
        (e.g. crm_custom_fields[hubspot:company:Tier]=A). Fields AND together;
        values of one field OR.
      style: deepObject
      explode: true
      schema:
        type: object
        propertyNames:
          type: string
          minLength: 1
          maxLength: 300
        additionalProperties:
          minItems: 1
          maxItems: 200
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 500
      x-filter: true
  schemas:
    AnalyticsConfirmedEvaluations:
      type: object
      description: Accounts your team confirmed are evaluating vendors.
      required:
        - period
      properties:
        period:
          type: object
          description: >-
            The period these numbers cover: the request's start_date and
            end_date.
          required:
            - start_date
            - end_date
          properties:
            start_date:
              type: string
              format: date
            end_date:
              type: string
              format: date
        confirmed_evaluations_count:
          description: Confirmed evaluations.
    Meta:
      type: object
      required:
        - api_version
        - data_as_of
        - cache
      properties:
        api_version:
          type: string
          const: '2'
        data_as_of:
          type: string
          format: date-time
          description: >-
            When the data in this response was computed. Responses are cached
            for a few minutes; this tells you how fresh they are.
        cache:
          type: string
          enum:
            - hit
            - miss
            - shared
            - 'off'
          description: >-
            hit = served from cache; miss = computed for this request; shared =
            joined a computation already running for the same query.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              enum:
                - invalid_request
                - invalid_json
                - invalid_cursor
                - cursor_expired
                - unauthorized
                - forbidden
                - account_not_found
                - not_found
                - rate_limited
                - internal_error
            message:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  path:
                    type: string
                  message:
                    type: string
              description: 'For invalid_request: one entry per parameter that failed.'
  responses:
    Unauthorized:
      description: Missing or invalid credential.
      x-status: 401
      x-codes:
        - unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The credential lacks the mcp.read scope.
      x-status: 403
      x-codes:
        - forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unprocessable:
      description: A parameter failed validation; details lists each one.
      x-status: 422
      x-codes:
        - invalid_request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Rate limited; wait Retry-After seconds.
      x-status: 429
      x-codes:
        - rate_limited
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait.
    ServerError:
      description: Our fault; retry, and contact support if it persists.
      x-status: 500
      x-codes:
        - internal_error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    WorkspaceKey:
      type: apiKey
      in: header
      name: api-key
    BearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.