> ## 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.

# List lanes

> Your lanes in priority order, with keyword counts and three kinds of numbers:

- `researching_latest_day`: a quick one-day topic signal before any filter. Not people you could export.
- `researching_14d`: people researching the lane's keywords over the 14-day `data_window`, before filters, from the latest check.
- `after_filters`: people who pass every filter over the same window, from the latest check. Everyone already exported to you this billing period was left out when the check ran. `at_lane_strength` is the number at the lane's `min_strength`; this is what an export draws from.

`researching_14d` and `after_filters` are null until a lane's first check finishes. For the live number an export could take now, use a dry run of `POST /api/v1/exports`.

**Free.** This doesn't use any contacts from your plan.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/lanes
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_…`. Keys belong to one organization. Standard keys work with
    everything except billing, team and key management, which need an admin key.


    **What costs contacts.** Only `POST /api/v1/exports` with `"dry_run": false`
    uses contacts from your plan. Quotes, counts, checks, 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: Keywords
    description: Add and remove a lane's keywords; each one is approved as its 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: Suppressions
    description: People you exported who later asked to be removed.
  - name: Usage
    description: Contacts used and left this billing period.
  - name: Billing
    description: Plan, invoices and plan changes. Admin keys only.
  - name: Team
    description: Members and invite links. Admin keys only.
  - 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 its role.
  - name: Reference
    description: Valid values for lane filters.
  - name: Activity
    description: A feed of changes and events in your organization.
paths:
  /api/v1/lanes:
    get:
      tags:
        - Lanes
      summary: List lanes
      description: >-
        Your lanes in priority order, with keyword counts and three kinds of
        numbers:


        - `researching_latest_day`: a quick one-day topic signal before any
        filter. Not people you could export.

        - `researching_14d`: people researching the lane's keywords over the
        14-day `data_window`, before filters, from the latest check.

        - `after_filters`: people who pass every filter over the same window,
        from the latest check. Everyone already exported to you this billing
        period was left out when the check ran. `at_lane_strength` is the number
        at the lane's `min_strength`; this is what an export draws from.


        `researching_14d` and `after_filters` are null until a lane's first
        check finishes. For the live number an export could take now, use a dry
        run of `POST /api/v1/exports`.


        **Free.** This doesn't use any contacts from your plan.
      operationId: listLanes
      responses:
        '200':
          description: Lanes in priority order.
          content:
            application/json:
              schema:
                type: object
                properties:
                  lanes:
                    type: array
                    items:
                      $ref: '#/components/schemas/Lane'
                required:
                  - lanes
              example:
                lanes:
                  - code: L1
                    name: Medical device distributors
                    priority: 1
                    min_strength: medium
                    company_list_mode: 'off'
                    keywords_live: 8
                    keywords_pending: 2
                    researching_latest_day:
                      all: 1840
                      medium_plus: 620
                      high: 95
                      as_of: '2026-10-13'
                      deliverable: false
                      note: >-
                        Quick topic signal from a separate preview index for one
                        day, before any filter. Not people you could receive;
                        use after_filters for that.
                    researching_14d:
                      all: 21450
                      medium_plus: 7310
                      data_window:
                        start: '2026-09-30'
                        end: '2026-10-13'
                    after_filters:
                      all: 1265
                      medium_plus: 412
                      at_lane_strength: 412
                      filters_used: industries
                      data_window:
                        start: '2026-09-30'
                        end: '2026-10-13'
                      checked_at: '2026-10-14T06:12:41.528311+00:00'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    Lane:
      type: object
      properties:
        code:
          type: string
          example: L1
          description: Lane code, e.g. `L1`.
        name:
          type: string
        priority:
          type: integer
          description: Order in which lanes are listed and filled (lower first).
        min_strength:
          $ref: '#/components/schemas/Strength'
        company_list_mode:
          type: string
          enum:
            - narrow
            - replace
            - 'off'
          description: >-
            How the lane uses your company list: `narrow` = lane industries and
            your list; `replace` = your list instead of industries; `off` =
            ignore the list.
        keywords_live:
          type: integer
          description: Keywords approved and in use.
        keywords_pending:
          type: integer
          description: Keywords waiting for approval.
        researching_latest_day:
          type: object
          properties:
            all:
              type:
                - integer
                - 'null'
            medium_plus:
              type:
                - integer
                - 'null'
            high:
              type:
                - integer
                - 'null'
            as_of:
              type:
                - string
                - 'null'
              format: date
              description: The data day these numbers are for.
            deliverable:
              type: boolean
              const: false
              description: 'Always false: these aren''t people you could export.'
            note:
              type: string
          required:
            - all
            - medium_plus
            - high
            - as_of
            - deliverable
            - note
          description: >-
            Quick one-day topic signal, before any filter. Not people you could
            export.
        researching_14d:
          description: >-
            People researching the lane's keywords over the data window, before
            any filter, from the latest check. Null until the first check
            finishes.
          anyOf:
            - type: object
              properties:
                all:
                  type:
                    - integer
                    - 'null'
                medium_plus:
                  type:
                    - integer
                    - 'null'
                data_window:
                  $ref: '#/components/schemas/DataWindow'
              required:
                - all
                - medium_plus
                - data_window
            - type: 'null'
        after_filters:
          description: >-
            People who pass every filter over the data window, from the latest
            check. Everyone already exported to you this billing period was left
            out when the check ran. This is what an export draws from. Null
            until the first check finishes.
          anyOf:
            - type: object
              properties:
                all:
                  type:
                    - integer
                    - 'null'
                  description: Any strength.
                medium_plus:
                  type:
                    - integer
                    - 'null'
                  description: Medium and high.
                high:
                  type:
                    - integer
                    - 'null'
                  description: >-
                    High only. Present only when the check sized it (lanes with
                    `min_strength` `high`).
                at_lane_strength:
                  type:
                    - integer
                    - 'null'
                  description: At the lane's `min_strength`.
                filters_used:
                  type: string
                  enum:
                    - industries
                    - company_list
                    - industries_and_company_list
                  description: >-
                    Which filters the lane's headline count uses: its
                    industries, your company list (company_list_mode `replace`),
                    or both (`narrow`).
                data_window:
                  $ref: '#/components/schemas/DataWindow'
                checked_at:
                  type:
                    - string
                    - 'null'
                  format: date-time
              required:
                - all
                - medium_plus
                - at_lane_strength
                - filters_used
                - data_window
                - checked_at
            - type: 'null'
      required:
        - code
        - name
        - priority
        - min_strength
        - company_list_mode
        - keywords_live
        - keywords_pending
        - researching_latest_day
        - researching_14d
        - after_filters
      example:
        code: L1
        name: Medical device distributors
        priority: 1
        min_strength: medium
        company_list_mode: 'off'
        keywords_live: 8
        keywords_pending: 2
        researching_latest_day:
          all: 1840
          medium_plus: 620
          high: 95
          as_of: '2026-10-13'
          deliverable: false
          note: >-
            Quick topic signal from a separate preview index for one day, before
            any filter. Not people you could receive; use after_filters for
            that.
        researching_14d:
          all: 21450
          medium_plus: 7310
          data_window:
            start: '2026-09-30'
            end: '2026-10-13'
        after_filters:
          all: 1265
          medium_plus: 412
          at_lane_strength: 412
          filters_used: industries
          data_window:
            start: '2026-09-30'
            end: '2026-10-13'
          checked_at: '2026-10-14T06:12:41.528311+00:00'
    Strength:
      type: string
      enum:
        - low
        - medium
        - high
      description: >-
        Intent strength. As a minimum: `low` = any strength, `medium` = medium
        and high, `high` = high only.
    DataWindow:
      type: object
      properties:
        start:
          type: string
          format: date
          description: First data day (inclusive), UTC.
        end:
          type: string
          format: date
          description: Last data day (inclusive), UTC.
      required:
        - start
        - end
      description: >-
        The 14-day data window a count covers. It can be shorter when fewer
        consecutive data days are ready.
      example:
        start: '2026-09-30'
        end: '2026-10-13'
    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_…'
    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.