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

# Renew now

> Starts your next billing period today instead of waiting, for plans paid by card. By default it's a dry run: it shows what would happen and charges nothing.

With `{"dry_run": false}`: your plan's full price is charged now to the card on file, a new period starts today with your plan's contacts plus any you hadn't used (`carry_over`), and your next renewal moves to a month from today. There's no refund for days left in the old period. People exported in the old period aren't sold to you again. If the card is declined, nothing changes (`502 billing_failed`).

You can renew once a day; for more contacts on the same day, upgrade instead. See [Renew now](/guides/billing#renew-now).

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



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/billing/renew
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: 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.
  - 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 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/billing/renew:
    post:
      tags:
        - Billing
      summary: Renew now
      description: >-
        Starts your next billing period today instead of waiting, for plans paid
        by card. By default it's a dry run: it shows what would happen and
        charges nothing.


        With `{"dry_run": false}`: your plan's full price is charged now to the
        card on file, a new period starts today with your plan's contacts plus
        any you hadn't used (`carry_over`), and your next renewal moves to a
        month from today. There's no refund for days left in the old period.
        People exported in the old period aren't sold to you again. If the card
        is declined, nothing changes (`502 billing_failed`).


        You can renew once a day; for more contacts on the same day, upgrade
        instead. See [Renew now](/guides/billing#renew-now).


        **Admin key required.** Standard keys get `403 admin_key_required`.
      operationId: renewNow
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                dry_run:
                  type: boolean
                  default: true
                  description: >-
                    Default true: show what would happen. false: charge and
                    renew.
              required:
                - dry_run
            examples:
              dry_run:
                summary: Dry run
                value: {}
              renew:
                summary: Charge and renew
                value:
                  dry_run: false
      responses:
        '200':
          description: What renewing does (dry run), or the renewal.
          content:
            application/json:
              schema:
                type: object
                properties:
                  dry_run:
                    type: boolean
                  renewed:
                    type: boolean
                    description: Present and true after a real renewal.
                  plan:
                    type: string
                    enum:
                      - starter
                      - growth
                      - scale
                      - partner
                  price_usd:
                    type: integer
                    description: 'Charged now: the plan''s full monthly price.'
                  contacts:
                    type: integer
                    description: The plan's monthly contacts.
                  new_period_start:
                    type: string
                    format: date
                  next_renewal:
                    type: string
                    format: date
                    description: When the plan renews next.
                  carry_over:
                    type: integer
                    description: Unused contacts carried into the new period.
                  note:
                    type: string
                required:
                  - dry_run
                  - plan
                  - price_usd
                  - contacts
                  - new_period_start
                  - next_renewal
                  - carry_over
              examples:
                dry_run:
                  summary: Dry run
                  value:
                    dry_run: true
                    plan: starter
                    price_usd: 250
                    contacts: 2500
                    new_period_start: '2026-10-15'
                    next_renewal: '2026-11-15'
                    carry_over: 1200
                    note: >-
                      Send {"dry_run": false} to charge the card on file and
                      renew now. No refund for days left in the current period.
                renewed:
                  summary: Renewed
                  value:
                    dry_run: false
                    renewed: true
                    plan: starter
                    price_usd: 250
                    contacts: 2500
                    new_period_start: '2026-10-15'
                    next_renewal: '2026-11-15'
                    carry_over: 1200
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/AdminKeyRequired'
        '409':
          description: Can't renew early right now.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                no_card_plan:
                  value:
                    error: no_card_plan
                    message: >-
                      Renewing early needs a plan paid by card. Ask your DBEE
                      contact.
                plan_not_active:
                  value:
                    error: plan_not_active
                    message: >-
                      Your plan isn't active. Check your card on the billing
                      page first.
                renewed_today:
                  value:
                    error: renewed_today
                    message: >-
                      Your period already started today. To get more contacts
                      today, upgrade instead.
        '500':
          $ref: '#/components/responses/InternalError'
        '502':
          description: >-
            The card was declined or the payment provider refused. Nothing
            changed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                billing_failed:
                  value:
                    error: billing_failed
                    message: >-
                      The payment provider didn't accept that. Try again, or ask
                      your DBEE contact.
        '503':
          description: Online payment isn't set up.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                billing_not_configured:
                  value:
                    error: billing_not_configured
                    message: Online payment isn't set up yet. Ask your DBEE contact.
components:
  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.
  schemas:
    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.
  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.