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

# Get an export and its leads

> One export and its leads, oldest first. Poll this after starting an export: while `status` is `queued` or `running`, `leads` holds only what's been written so far.

Free to download again any number of times.

Returns every lead in the export, up to 100,000 (the largest export).

**CSV:** add `format=csv` to get a file (`intent-leads-export-<date>-<id>.csv`) with the headers `X-Lead-Count` and `X-Export-Status`. The CSV has one header row and these columns, in this order: `First Name`, `Last Name`, `Job Title`, `Seniority`, `Company`, `Website`, `Industry`, `Employees`, `City`, `State`, `Business Email`, `Email Status`, `Mobile`, `Mobile on DNC`, `Direct Phone`, `Company Phone`, `LinkedIn`, `Company LinkedIn`, `Intent Topics`, `Intent Score`, `Last Active`, `Lane`, `Keywords Matched`, `Intent Strength`, `First Seen`, `Exported`, `Seen Before`, `Suppressed`, `Lead ID`. `Exported` is `delivered_at`. Lists (`Keywords Matched`) are joined with `; `, booleans are `Yes` or `No`, empty values are empty cells, and lines end with CRLF. Cells that start with `=`, `+`, `-`, `@` or a tab are prefixed with `'` so spreadsheets don't run them as formulas (phone numbers like `+1 612 555 0142` are left as they are).

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



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/exports/{id}
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/exports/{id}:
    get:
      tags:
        - Exports
      summary: Get an export and its leads
      description: >-
        One export and its leads, oldest first. Poll this after starting an
        export: while `status` is `queued` or `running`, `leads` holds only
        what's been written so far.


        Free to download again any number of times.


        Returns every lead in the export, up to 100,000 (the largest export).


        **CSV:** add `format=csv` to get a file
        (`intent-leads-export-<date>-<id>.csv`) with the headers `X-Lead-Count`
        and `X-Export-Status`. The CSV has one header row and these columns, in
        this order: `First Name`, `Last Name`, `Job Title`, `Seniority`,
        `Company`, `Website`, `Industry`, `Employees`, `City`, `State`,
        `Business Email`, `Email Status`, `Mobile`, `Mobile on DNC`, `Direct
        Phone`, `Company Phone`, `LinkedIn`, `Company LinkedIn`, `Intent
        Topics`, `Intent Score`, `Last Active`, `Lane`, `Keywords Matched`,
        `Intent Strength`, `First Seen`, `Exported`, `Seen Before`,
        `Suppressed`, `Lead ID`. `Exported` is `delivered_at`. Lists (`Keywords
        Matched`) are joined with `; `, booleans are `Yes` or `No`, empty values
        are empty cells, and lines end with CRLF. Cells that start with `=`,
        `+`, `-`, `@` or a tab are prefixed with `'` so spreadsheets don't run
        them as formulas (phone numbers like `+1 612 555 0142` are left as they
        are).


        **Free.** This doesn't use any contacts from your plan.
      operationId: getExport
      parameters:
        - name: id
          in: path
          required: true
          description: Export id.
          schema:
            type: string
            format: uuid
          example: 0199e3a1-2f4b-7c10-8e2d-1a2b3c4d5e6f
        - name: format
          in: query
          required: false
          description: '`json` (default) or `csv`.'
          schema:
            type: string
            enum:
              - json
              - csv
            default: json
          example: csv
      responses:
        '200':
          description: The export and its leads, as JSON or (with `format=csv`) a CSV file.
          headers:
            X-Lead-Count:
              description: 'CSV only: number of leads in the file.'
              schema:
                type: integer
            X-Export-Status:
              description: 'CSV only: the export''s `status`.'
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  export:
                    $ref: '#/components/schemas/Export'
                  leads:
                    type: array
                    items:
                      $ref: '#/components/schemas/Lead'
                    maxItems: 5000
                required:
                  - export
                  - leads
              example:
                export:
                  id: 0199e3a1-2f4b-7c10-8e2d-1a2b3c4d5e6f
                  status: completed
                  lanes:
                    - L1
                    - L2
                  requested: 250
                  will_export: 250
                  exported: 250
                  min_strength: null
                  billing_period: '2026-10-01'
                  via: api
                  created_at: '2026-10-14T09:30:02.114502+00:00'
                  finished_at: '2026-10-14T09:41:55.903117+00:00'
                  error: null
                leads:
                  - lead_id: 0199e3b2-5a7c-7e21-b4d3-8c9f0a1b2c3d
                    lane: L1
                    keywords_matched:
                      - selling to group purchasing organizations
                    intent_strength: high
                    first_seen: '2026-10-03T00:00:00+00:00'
                    delivered_at: '2026-10-14T09:31:07.482913+00:00'
                    seen_before: false
                    suppressed: false
                    first_name: Jordan
                    last_name: Lee
                    job_title: VP of Sales
                    seniority: VP
                    company: Acme Medical Supply
                    website: example.com
                    industry: Medical Equipment Manufacturing
                    employees: 140
                    city: Minneapolis
                    state: MN
                    business_email: jordan.lee@example.com
                    email_status: valid
                    mobile: +1 612 555 0142
                    mobile_on_dnc: false
                    direct_phone: +1 612 555 0187
                    company_phone: +1 612 555 0100
                    linkedin: linkedin.com/in/example-jordan-lee
                    company_linkedin: linkedin.com/company/example-acme-medical
                    intent_topics: selling to group purchasing organizations
                    intent_score: 81
                    last_active: '2026-10-12'
                  - lead_id: 0199e3b2-5a7c-7e21-b4d3-8c9f0a1b2c3e
                    lane: L1
                    keywords_matched:
                      - finding medical device distributors
                    intent_strength: medium
                    first_seen: '2026-10-06T00:00:00+00:00'
                    delivered_at: '2026-10-14T09:31:07.482913+00:00'
                    seen_before: true
                    suppressed: false
                    first_name: Sam
                    last_name: Rivera
                    job_title: Director of Business Development
                    seniority: Director
                    company: Globex Surgical
                    website: example.org
                    industry: Medical Device
                    employees: 85
                    city: Columbus
                    state: OH
                    business_email: sam.rivera@example.org
                    email_status: valid
                    mobile: null
                    mobile_on_dnc: null
                    direct_phone: +1 614 555 0133
                    company_phone: +1 614 555 0100
                    linkedin: linkedin.com/in/example-sam-rivera
                    company_linkedin: linkedin.com/company/example-globex-surgical
                    intent_topics: finding medical device distributors
                    intent_score: 54
                    last_active: '2026-10-11'
            text/csv:
              schema:
                type: string
              example: "First Name,Last Name,Job Title,Seniority,Company,Website,Industry,Employees,City,State,Business Email,Email Status,Mobile,Mobile on DNC,Direct Phone,Company Phone,LinkedIn,Company LinkedIn,Intent Topics,Intent Score,Last Active,Lane,Keywords Matched,Intent Strength,First Seen,Exported,Seen Before,Suppressed,Lead ID\r\nJordan,Lee,VP of Sales,VP,Acme Medical Supply,example.com,Medical Equipment Manufacturing,140,Minneapolis,MN,jordan.lee@example.com,valid,+1 612 555 0142,No,+1 612 555 0187,+1 612 555 0100,linkedin.com/in/example-jordan-lee,linkedin.com/company/example-acme-medical,selling to group purchasing organizations,81,2026-10-12,L1,selling to group purchasing organizations,high,2026-10-03T00:00:00+00:00,2026-10-14T09:31:07.482913+00:00,No,No,0199e3b2-5a7c-7e21-b4d3-8c9f0a1b2c3d\r\nSam,Rivera,Director of Business Development,Director,Globex Surgical,example.org,Medical Device,85,Columbus,OH,sam.rivera@example.org,valid,,,+1 614 555 0133,+1 614 555 0100,linkedin.com/in/example-sam-rivera,linkedin.com/company/example-globex-surgical,finding medical device distributors,54,2026-10-11,L1,finding medical device distributors,medium,2026-10-06T00:00:00+00:00,2026-10-14T09:31:07.482913+00:00,Yes,No,0199e3b2-5a7c-7e21-b4d3-8c9f0a1b2c3e\r\n"
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: >-
            No export with that id in your organization (including ids that
            aren't UUIDs).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                export_not_found:
                  value:
                    error: export_not_found
                    message: No such export.
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    Export:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Export id.
        status:
          type: string
          enum:
            - queued
            - running
            - completed
            - partial
            - failed
          description: >-
            `queued` and `running` are in progress. `completed`: everything
            reserved was exported. `partial`: some people were exported, fewer
            than `will_export`. `failed`: nobody was exported. Contacts that
            weren't used go back to your allowance.
        lanes:
          type: array
          items:
            type: string
          description: Lane codes, in the order they're filled.
        requested:
          type: integer
          description: >-
            The number reserved when the export started (the quote's
            `will_export`), not the `max` you sent.
        will_export:
          type: integer
          description: Contacts reserved for this export.
        exported:
          type: integer
          description: People exported so far. Only these count against your plan.
        min_strength:
          type:
            - string
            - 'null'
          enum:
            - low
            - medium
            - high
            - null
          description: >-
            Strength override sent with the export, or null for each lane's own
            `min_strength`.
        billing_period:
          type: string
          format: date
          description: Start date of the billing period the export counts against.
        via:
          type: string
          enum:
            - dashboard
            - api
            - cli
            - mcp
          description: Where the export was started.
        created_at:
          type: string
          format: date-time
        finished_at:
          type:
            - string
            - 'null'
          format: date-time
        error:
          type:
            - string
            - 'null'
          description: >-
            Why a `partial` or `failed` export stopped short, e.g. `No new
            people were available in these lanes.` or `Fewer new people were
            available than estimated.` Always null for other statuses.
      required:
        - id
        - status
        - lanes
        - requested
        - will_export
        - exported
        - min_strength
        - billing_period
        - via
        - created_at
        - finished_at
        - error
      example:
        id: 0199e3a1-2f4b-7c10-8e2d-1a2b3c4d5e6f
        status: completed
        lanes:
          - L1
          - L2
        requested: 250
        will_export: 250
        exported: 250
        min_strength: null
        billing_period: '2026-10-01'
        via: api
        created_at: '2026-10-14T09:30:02.114502+00:00'
        finished_at: '2026-10-14T09:41:55.903117+00:00'
        error: null
    Lead:
      type: object
      properties:
        lead_id:
          type: string
          format: uuid
          description: Stable id for this lead. Use it to dedupe and to match suppressions.
        lane:
          type:
            - string
            - 'null'
          description: >-
            Code of the lane that found this person, or null if that lane no
            longer exists.
        keywords_matched:
          type: array
          items:
            type: string
          description: The lane keywords this person was researching.
        intent_strength:
          type:
            - string
            - 'null'
          enum:
            - low
            - medium
            - high
            - null
          description: How strongly this person is researching.
        first_seen:
          type:
            - string
            - 'null'
          format: date-time
          description: When this person was first seen researching the topic.
        delivered_at:
          type: string
          format: date-time
          description: When the lead was exported to you. The CSV column is `Exported`.
        seen_before:
          type: boolean
          description: >-
            True when this person was also exported to you in an earlier billing
            period. They count again in this one.
        suppressed:
          type: boolean
          description: >-
            True when this person asked to be removed. All contact fields are
            null; delete them from your systems (see Suppressions).
        first_name:
          type:
            - string
            - 'null'
        last_name:
          type:
            - string
            - 'null'
        job_title:
          type:
            - string
            - 'null'
        seniority:
          type:
            - string
            - 'null'
          description: Seniority level, e.g. `CXO`, `VP`, `Director`, `Manager`.
        company:
          type:
            - string
            - 'null'
          description: Company name.
        website:
          type:
            - string
            - 'null'
          description: Company domain.
        industry:
          type:
            - string
            - 'null'
          description: Company industry.
        employees:
          type:
            - integer
            - 'null'
          description: Company headcount.
        city:
          type:
            - string
            - 'null'
          description: Company city.
        state:
          type:
            - string
            - 'null'
          description: Company state (US two-letter code or name).
        business_email:
          type:
            - string
            - 'null'
          format: email
        email_status:
          type:
            - string
            - 'null'
          description: >-
            Validation status of `business_email`, lowercase (e.g. `valid`).
            Null when there's no email.
        mobile:
          type:
            - string
            - 'null'
          description: >-
            A mobile number. The first one not on the do-not-call list is picked
            when that's known.
        mobile_on_dnc:
          type:
            - boolean
            - 'null'
          description: >-
            Whether `mobile` is on the do-not-call list. Null when there's no
            mobile or it isn't known.
        direct_phone:
          type:
            - string
            - 'null'
          description: Direct dial.
        company_phone:
          type:
            - string
            - 'null'
          description: Company switchboard.
        linkedin:
          type:
            - string
            - 'null'
          description: Personal LinkedIn profile URL.
        company_linkedin:
          type:
            - string
            - 'null'
          description: Company LinkedIn page URL.
        intent_topics:
          type:
            - string
            - 'null'
          description: 'The topic this person matched: normally the lane keyword.'
        intent_score:
          type:
            - number
            - 'null'
          description: >-
            Intent score for the matched topic. Higher means more research
            activity. Not a percentile.
        last_active:
          type:
            - string
            - 'null'
          description: Day the person was last seen researching (`YYYY-MM-DD`).
      required:
        - lead_id
        - lane
        - keywords_matched
        - intent_strength
        - first_seen
        - delivered_at
        - seen_before
        - suppressed
        - first_name
        - last_name
        - job_title
        - seniority
        - company
        - website
        - industry
        - employees
        - city
        - state
        - business_email
        - email_status
        - mobile
        - mobile_on_dnc
        - direct_phone
        - company_phone
        - linkedin
        - company_linkedin
        - intent_topics
        - intent_score
        - last_active
      description: >-
        One exported person. Every field is always present; unknown values are
        null. Names, titles, companies and places are title-cased; emails, URLs
        and domains are left as they are.
      example:
        lead_id: 0199e3b2-5a7c-7e21-b4d3-8c9f0a1b2c3d
        lane: L1
        keywords_matched:
          - selling to group purchasing organizations
        intent_strength: high
        first_seen: '2026-10-03T00:00:00+00:00'
        delivered_at: '2026-10-14T09:31:07.482913+00:00'
        seen_before: false
        suppressed: false
        first_name: Jordan
        last_name: Lee
        job_title: VP of Sales
        seniority: VP
        company: Acme Medical Supply
        website: example.com
        industry: Medical Equipment Manufacturing
        employees: 140
        city: Minneapolis
        state: MN
        business_email: jordan.lee@example.com
        email_status: valid
        mobile: +1 612 555 0142
        mobile_on_dnc: false
        direct_phone: +1 612 555 0187
        company_phone: +1 612 555 0100
        linkedin: linkedin.com/in/example-jordan-lee
        company_linkedin: linkedin.com/company/example-acme-medical
        intent_topics: selling to group purchasing organizations
        intent_score: 81
        last_active: '2026-10-12'
    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.