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

# Rotate an API key

> Issues a new secret for a key, keeping its id, name and role. The old secret stops working at once, including when you rotate the key you're calling with. The new secret is shown only in this response.

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



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/keys/{id}/rotate
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/keys/{id}/rotate:
    post:
      tags:
        - API keys
      summary: Rotate an API key
      description: >-
        Issues a new secret for a key, keeping its id, name and role. The old
        secret stops working at once, including when you rotate the key you're
        calling with. The new secret is shown only in this response.


        **Admin key required.** Standard keys get `403 admin_key_required`.
      operationId: rotateKey
      parameters:
        - name: id
          in: path
          required: true
          description: Key id.
          schema:
            type: string
            format: uuid
          example: 7f3c2a9e-4b1d-4e8a-9c6f-2d5b8e1a0c34
      responses:
        '200':
          description: New secret.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeySecret'
              example:
                id: 7f3c2a9e-4b1d-4e8a-9c6f-2d5b8e1a0c34
                name: CRM sync
                role: standard
                key: il_live_Rt5Yu8Io2Pa4Sd6Fg9Hj3Kl7Zx1Cv5Bn
                note: The old secret no longer works. Store this one now.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/AdminKeyRequired'
        '404':
          description: No active key with that id in your organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                key_not_found:
                  value:
                    error: key_not_found
                    message: No active key with that id.
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    ApiKeySecret:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        role:
          type: string
          enum:
            - standard
            - admin
        key:
          type: string
          pattern: ^il_live_[A-Za-z0-9]{32}$
          description: The full secret. Shown only in this response; store it now.
        note:
          type: string
      required:
        - id
        - name
        - role
        - key
        - 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_…'
    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.