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

# Ask for a search lane's estimate

> Counts everyone who matches the search lane now, leaving out anyone you've already bought, your exclusions and removals. It usually takes under an hour: poll `GET` until `status` is `done`.

An estimate for the same filters from the last 24 hours is returned instead of a new one (`reused: true`). Change the filters for a fresh count.

**Free.** This doesn't spend your balance.



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/lanes/{code}/estimate
openapi: 3.1.0
info:
  title: Intent Leads API
  version: '1.0'
  description: >-
    The Intent Leads API finds B2B people actively researching the topics you
    sell into, and exports them with contact details into your own tools.


    **Authentication.** Send an API key as a bearer token: `Authorization:
    Bearer il_live_…`. Standard keys work with everything except billing, team
    and key management, which need an admin key.


    **Organizations and workspaces.** An organization holds the balance,
    invoices and people; lanes, leads, exports, lists, websites and webhooks
    live in its workspaces. A workspace key works in its workspace. An
    organization key manages workspaces, billing and people, and works in any of
    its workspaces with the header `Intent-Leads-Workspace: <workspace id>`.


    **What costs money.** Only `POST /api/v1/exports` with `"dry_run": false`
    spends your [balance](/guides/billing) (and website visitors as they're
    identified). Quotes, counts, checks, estimates, samples and re-downloads are
    free.


    **Errors.** Every error is JSON: `{"error": "code", "message":
    "Plain-English explanation"}`. Codes are stable; messages may change.


    **Conventions.** JSON by default. Dates are `YYYY-MM-DD` and timestamps ISO
    8601, all in UTC. Lane codes (`L1`) are case-insensitive.
servers:
  - url: https://intentleads.si
security:
  - bearerAuth: []
tags:
  - name: Exports
    description: Quote (free) and buy new people from your lanes, then download them.
  - name: Leads
    description: Pull and re-download the leads you've exported, and list deliveries.
  - name: Lanes
    description: >-
      Create, inspect and tune lanes: keywords plus the companies and roles you
      want.
  - name: Topics
    description: >-
      Topics we already track: live at once, with history. Use them before
      adding new keywords.
  - name: Keywords
    description: >-
      Add and remove a lane's keywords: existing topics, or new ones approved as
      their own topic.
  - name: Checks
    description: >-
      Free lane checks that size every filter step over 14 days, plus quick
      topic signals.
  - name: Company list
    description: >-
      The target-company list your lanes can narrow to or use instead of
      industries.
  - name: Exclusions
    description: Companies and people left out of every lane, before anything is bought.
  - name: Suppressions
    description: >-
      People you exported who later asked to be removed, by API or pushed to
      your webhook.
  - name: Webhooks
    description: >-
      Endpoints that receive events as they happen (removals, website visitors),
      signed, each with its own events, tests and delivery log.
  - name: Websites
    description: Identify the people who visit your websites.
  - name: Billing
    description: >-
      Your prepaid balance, prices and cost estimates (any key); top-ups and the
      monthly top-up (admin keys).
  - name: Team
    description: Members and invite links. Admin keys only.
  - name: Workspaces
    description: >-
      One workspace per client, all paid from your balance, with an optional
      monthly budget each; hand one over to the client.
  - name: API keys
    description: Create, rename, rotate and revoke API keys. Admin keys only.
  - name: Account
    description: Check which organization a key belongs to, and rename it.
  - name: Reference
    description: Valid values for lane filters.
  - name: Activity
    description: A feed of changes and events in your organization.
paths:
  /api/v1/lanes/{code}/estimate:
    post:
      tags:
        - Lanes
      summary: Ask for a search lane's estimate
      description: >-
        Counts everyone who matches the search lane now, leaving out anyone
        you've already bought, your exclusions and removals. It usually takes
        under an hour: poll `GET` until `status` is `done`.


        An estimate for the same filters from the last 24 hours is returned
        instead of a new one (`reused: true`). Change the filters for a fresh
        count.


        **Free.** This doesn't spend your balance.
      operationId: requestContactEstimate
      parameters:
        - $ref: '#/components/parameters/LaneCode'
        - $ref: '#/components/parameters/Workspace'
      responses:
        '200':
          description: An estimate for the same filters already exists.
          content:
            application/json:
              schema:
                type: object
                properties:
                  lane:
                    type: string
                  reused:
                    type: boolean
                  estimate:
                    $ref: '#/components/schemas/ContactEstimate'
                required:
                  - lane
                  - reused
                  - estimate
              example:
                lane: S1
                reused: true
                estimate:
                  status: done
                  people: 41382
                  requested_at: '2026-10-14T06:12:41.528311+00:00'
                  finished_at: '2026-10-14T06:12:41.528311+00:00'
                  approximate: false
                  sample:
                    - seniority: VP+
                      department: Executive
                      company: Example Family Medicine
                      industry: Medical Practices
                      employees: 34
                      city: Tampa
                      state: Florida
                      has_business_email: true
                      has_phone: true
                      has_linkedin: false
                  error: null
                  note: >-
                    People who match the lane's filters now, leaving out anyone
                    you've already bought, your exclusions and removals.
                    Estimates usually take under an hour and are free.
        '202':
          description: Counting.
          content:
            application/json:
              schema:
                type: object
                properties:
                  lane:
                    type: string
                  reused:
                    type: boolean
                  estimate:
                    $ref: '#/components/schemas/ContactEstimate'
                required:
                  - lane
                  - reused
                  - estimate
              example:
                lane: S1
                reused: false
                estimate:
                  status: queued
                  people: null
                  requested_at: '2026-10-14T06:12:41.528311+00:00'
                  finished_at: null
                  approximate: false
                  sample: []
                  error: null
                  note: Counting. This usually takes under an hour; it's free.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/LaneNotFound'
        '409':
          description: An intent lane.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                not_a_search_lane:
                  value:
                    error: not_a_search_lane
                    message: >-
                      L1 is an intent lane. Estimates are for search lanes;
                      intent lanes are checked daily.
        '500':
          $ref: '#/components/responses/InternalError'
components:
  parameters:
    LaneCode:
      name: code
      in: path
      required: true
      description: Lane code, e.g. `L1`. Case-insensitive.
      schema:
        type: string
      example: L1
    Workspace:
      name: Intent-Leads-Workspace
      in: header
      required: false
      description: >-
        Only with an **organization** key: the workspace to act in (its id;
        `?workspace=<id>` works too). Lanes, leads, exports, lists, websites and
        webhooks live in workspaces. Without it, an organization key acts in its
        only workspace, or gets `400 workspace_required` (with the list of
        workspaces) when it has several. Workspace keys don't need it. On keys,
        team and activity it switches from the organization's own to that
        workspace's.
      schema:
        type: string
        format: uuid
      example: 0a0e5135-a046-4f8c-8ca9-33de7cf9e54d
  schemas:
    ContactEstimate:
      type: object
      properties:
        status:
          type: string
          enum:
            - none
            - queued
            - building
            - done
            - failed
          description: '`none`, `queued`, `building`, `done` or `failed`.'
        people:
          type:
            - integer
            - 'null'
          description: >-
            People who match now, leaving out anyone you've already bought, your
            exclusions and removals.
        requested_at:
          type: string
          format: date-time
        finished_at:
          type:
            - string
            - 'null'
          format: date-time
        approximate:
          type: boolean
          description: >-
            True when your company list is counted in parts: someone tied to two
            listed companies can count twice.
        sample:
          type: array
          items:
            type: object
            properties:
              seniority:
                type:
                  - string
                  - 'null'
                description: A band, e.g. VP+.
              department:
                type:
                  - string
                  - 'null'
              company:
                type:
                  - string
                  - 'null'
              industry:
                type:
                  - string
                  - 'null'
              employees:
                type:
                  - integer
                  - 'null'
              city:
                type:
                  - string
                  - 'null'
              state:
                type:
                  - string
                  - 'null'
              has_business_email:
                type: boolean
              has_phone:
                type: boolean
              has_linkedin:
                type: boolean
            required:
              - seniority
              - department
              - company
              - industry
              - employees
              - city
              - state
              - has_business_email
              - has_phone
              - has_linkedin
          description: >-
            Up to 10 people who match: seniority band, department, company and
            location, and which contact details exist. No names, titles or
            contact details.
        error:
          type:
            - string
            - 'null'
        note:
          type: string
      required:
        - status
        - people
        - requested_at
        - finished_at
        - approximate
        - sample
        - error
        - note
    Error:
      type: object
      properties:
        error:
          type: string
          example: lane_not_found
          description: Stable machine-readable code, e.g. `lane_not_found`.
        message:
          type: string
          example: No lane L9.
          description: Plain-English explanation you can show to a person.
      required:
        - error
        - message
      description: Every error has this shape.
  responses:
    Unauthorized:
      description: Missing, malformed, unknown or revoked API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            unauthorized:
              value:
                error: unauthorized
                message: 'Send a valid API key as: Authorization: Bearer il_live_…'
    LaneNotFound:
      description: No lane with that code.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            lane_not_found:
              value:
                error: lane_not_found
                message: No lane L9.
    InternalError:
      description: >-
        Unexpected server error. Safe to retry reads; retry an export only with
        the same `idempotency_key`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            internal_error:
              value:
                error: internal_error
                message: Something went wrong. Try again.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: il_live_…
      description: >-
        An Intent Leads API key, e.g. `il_live_` followed by 32 letters and
        digits. Create one on the API and CLI page of the dashboard.

````

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