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

> Your plan, its status and period, usage (as in Get usage), every plan you can move to, and how you're billed.

**Admin key required.** Standard keys get `403 admin_key_required`.

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



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/billing
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/billing:
    get:
      tags:
        - Billing
      summary: Get billing
      description: >-
        Your plan, its status and period, usage (as in Get usage), every plan
        you can move to, and how you're billed.


        **Admin key required.** Standard keys get `403 admin_key_required`.


        **Free.** This doesn't use any contacts from your plan.
      operationId: getBilling
      responses:
        '200':
          description: Billing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Billing'
              example:
                plan: growth
                status: active
                period_start: '2026-10-01'
                period_end: '2026-11-01'
                monthly_contacts: 7500
                rollover_contacts: 1200
                allowance: 8700
                used: 2350
                remaining: 6350
                held_by_exports_in_progress: 250
                left_to_export: 6100
                plans:
                  - id: starter
                    name: Starter
                    price_usd_per_month: 250
                    contacts_per_month: 2500
                    current: false
                  - id: growth
                    name: Growth
                    price_usd_per_month: 500
                    contacts_per_month: 7500
                    current: true
                  - id: scale
                    name: Scale
                    price_usd_per_month: 1000
                    contacts_per_month: 20000
                    current: false
                  - id: partner
                    name: Partner
                    price_usd_per_month: 2000
                    contacts_per_month: 50000
                    current: false
                billing: card
                invoices:
                  portal: POST /api/v1/billing/portal
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/AdminKeyRequired'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    Billing:
      type: object
      properties:
        plan:
          type:
            - string
            - 'null'
          description: >-
            Plan id (`starter`, `growth`, `scale`, `partner`), or null without a
            plan.
        status:
          type:
            - string
            - 'null'
          enum:
            - active
            - trialing
            - past_due
            - canceled
            - null
          description: >-
            Subscription status, or null without a plan. Exports need `active`
            or `trialing`.
        period_start:
          type:
            - string
            - 'null'
          format: date
          description: Start of the current billing period.
        period_end:
          type:
            - string
            - 'null'
          format: date
          description: End of the current billing period.
        monthly_contacts:
          type: integer
          description: Contacts included in the plan each period.
        rollover_contacts:
          type: integer
          description: >-
            Unused monthly contacts carried over from last period (for one
            period).
        allowance:
          type: integer
          description: '`monthly_contacts` + `rollover_contacts`.'
        used:
          type: integer
          description: People exported this period.
        remaining:
          type: integer
          description: '`allowance` − `used`.'
        held_by_exports_in_progress:
          type: integer
          description: Contacts reserved by exports still running.
        left_to_export:
          type: integer
          description: >-
            What a new export can take: `remaining` less what's held. 0 without
            an active plan.
        plans:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                enum:
                  - starter
                  - growth
                  - scale
                  - partner
              name:
                type: string
              price_usd_per_month:
                type: integer
              contacts_per_month:
                type: integer
              current:
                type: boolean
            required:
              - id
              - name
              - price_usd_per_month
              - contacts_per_month
              - current
          description: Every plan you can move to.
        billing:
          type: string
          enum:
            - card
            - none_yet
            - invoiced_by_dbee
          description: >-
            `card`: paid by card online (upgrades apply at once; invoices in the
            billing portal). `none_yet`: no plan yet (`POST
            /api/v1/billing/plan` returns a checkout link). `invoiced_by_dbee`:
            invoiced by your DBEE contact; plan changes are requests.
        invoices:
          description: Where invoices are.
          oneOf:
            - type: object
              properties:
                portal:
                  type: string
                  const: POST /api/v1/billing/portal
              required:
                - portal
            - type: object
              properties:
                note:
                  type: string
                  const: Invoices come from your DBEE contact.
              required:
                - note
      required:
        - plan
        - status
        - period_start
        - period_end
        - monthly_contacts
        - rollover_contacts
        - allowance
        - used
        - remaining
        - held_by_exports_in_progress
        - left_to_export
        - plans
        - billing
        - invoices
      example:
        plan: growth
        status: active
        period_start: '2026-10-01'
        period_end: '2026-11-01'
        monthly_contacts: 7500
        rollover_contacts: 1200
        allowance: 8700
        used: 2350
        remaining: 6350
        held_by_exports_in_progress: 250
        left_to_export: 6100
        plans:
          - id: starter
            name: Starter
            price_usd_per_month: 250
            contacts_per_month: 2500
            current: false
          - id: growth
            name: Growth
            price_usd_per_month: 500
            contacts_per_month: 7500
            current: true
          - id: scale
            name: Scale
            price_usd_per_month: 1000
            contacts_per_month: 20000
            current: false
          - id: partner
            name: Partner
            price_usd_per_month: 2000
            contacts_per_month: 50000
            current: false
        billing: card
        invoices:
          portal: POST /api/v1/billing/portal
    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_…'
    AdminKeyRequired:
      description: This endpoint needs an admin key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            admin_key_required:
              value:
                error: admin_key_required
                message: >-
                  This needs an admin API key. Owners can create one on the API
                  and CLI page.
    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.