> ## Documentation Index
> Fetch the complete documentation index at: https://exa.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> The Exa API is served at https://api.exa.ai. Authenticate with `Authorization: Bearer $EXA_API_KEY` (or `x-api-key: $EXA_API_KEY`); create keys at https://dashboard.exa.ai/api-keys?utm_source=docs&utm_medium=docs&utm_campaign=markdown_instructions. Every way an agent can get access to Exa is described at https://exa.ai/auth.md.
> Prefer the official SDKs, `exa-py` (`pip install exa-py`) and `exa-js` (`npm install exa-js`); both read `EXA_API_KEY` from the environment.
> Tool-using agents can call Exa without writing code through the hosted MCP server at https://mcp.exa.ai/mcp, or install the Exa agent skill with `npx skills add exa-labs/agent-skills` (skill file: https://exa.ai/docs/skill.md).
> The OpenAPI specs at https://exa.ai/docs/exa-spec.yaml and https://exa.ai/docs/team-management-spec.yaml are the source of truth for request and response schemas.

# Revoke previous API key secret

> End a rotation's grace period early so the old secret stops working now.

> [card] [Get your Exa API key](https://dashboard.exa.ai/api-keys?utm_source=docs\&utm_medium=docs\&utm_campaign=get_key_card)
>
> Create a key in the dashboard. New accounts start with free credits.

> [!NOTE]
>
> The Team Management API is enabled per team. It authenticates with a service account API key, which is created from the **Service keys** tab on the [API keys page](https://dashboard.exa.ai/api-keys?utm_source=docs\&utm_medium=docs\&utm_campaign=team_management_access) once the feature is enabled for your team. Contact [support@exa.ai](mailto:support@exa.ai) to request access.

## Overview

After a [rotation](https://exa.ai/docs/reference/team-management/rotate-api-key.md) with a grace period, the old secret keeps working until `previousSecretExpiresAt`. Call this endpoint once the new secret is deployed to revoke the old one immediately. The current secret is not affected.

The request is safe to repeat: when there is no previous secret in its grace period, it returns `revoked: false` and changes nothing.


## OpenAPI

````yaml team-management-spec.yaml POST /api-keys/{id}/revoke-previous
openapi: 3.1.0
info:
  version: 1.0.0
  title: Team Management API
  description: >-
    API for managing API keys within teams. Provides CRUD operations for
    creating, listing, updating, and deleting API keys with team-based access
    controls. The API is enabled per team. Contact support@exa.ai to request
    access.
servers:
  - url: https://admin-api.exa.ai/team-management
security:
  - apikey: []
paths:
  /api-keys/{id}/revoke-previous:
    post:
      tags:
        - Team Management
      summary: Revoke previous API key secret
      description: >-
        Ends a rotation's grace period early. The secret replaced by the last
        rotation stops working now; the current secret is unaffected. Responds
        with `revoked` set to false when there is no previous secret in its
        grace period.
      operationId: revoke-previous-api-key-secret
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: >-
            The key's `publicId`. The key's current secret is also accepted for
            backward compatibility.
      responses:
        '200':
          description: Previous secret revoked, or there was none to revoke
          content:
            application/json:
              schema:
                type: object
                properties:
                  apiKey:
                    type: object
                    properties:
                      publicId:
                        type: string
                      previousSecretExpiresAt:
                        type: 'null'
                  revoked:
                    type: boolean
                    description: Whether a previous secret was revoked by this request.
        '401':
          description: Unauthorized - Invalid or missing service key
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Unauthorized
        '403':
          description: Forbidden - the key is managed by an integration
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: >-
                      This key is managed by an integration and cannot be
                      rotated
        '404':
          description: Not Found - API key does not exist
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: API key not found
      security:
        - apikey: []
      x-codeSamples:
        - lang: bash
          label: Revoke the previous secret
          source: >
            curl -X POST
            'https://admin-api.exa.ai/team-management/api-keys/{id}/revoke-previous'
            \
              -H "x-api-key: $EXA_SERVICE_KEY"
components:
  securitySchemes:
    apikey:
      type: apiKey
      in: header
      name: x-api-key
      description: Service API key for team authentication

````