OpenAPI Specification

Import the full Apollo API into your tooling, generate client SDKs, or power AI agents.

The complete Apollo API is published as a machine-readable OpenAPI 3 specification — a single file describing every endpoint, parameter, and example request.

📘

Download the spec

https://docs.apollo.io/openapi/apollo-rest-api.json

What you can do with it

  • Import into an API client — load the spec into Postman or any OpenAPI-compatible client to get every Apollo endpoint, parameter, and example request ready to send. See Import into Postman below.
  • Generate a client SDK — feed the spec to tools like OpenAPI Generator or another tool of your choice to scaffold a typed client in your language of choice.
  • Power AI and custom tooling — point LLM agents, MCP servers, or your own doc viewers at the spec for an always-current, structured description of the API. OpenAPI specifications are easier for automated tooling and AI agents to consume than HTML documentation.

The spec is regenerated whenever these docs are published, so the download URL always reflects the latest version of the API. Before you make live calls, create an API key and review Authentication.

Import into Postman

You can load the entire Apollo API into Postman in about a minute:

  1. In Postman, click Import, then paste the spec URL: https://docs.apollo.io/openapi/apollo-rest-api.json. When prompted, import it as a Postman collection. Postman creates an apollo-rest-api collection with every Apollo endpoint, parameter, and example request body prefilled.

  2. Add your API key. The collection's Authorization tab is already configured for Apollo's API key authentication — the x-api-key header, with its value read from an {{apiKey}} variable. Select the collection, open its Variables tab, add a variable named apiKey (if it isn't listed yet), enter your Apollo API key as its Current value, and save. If you don't have a key yet, create an API key.

    📘

    Ensure you're using the correct authentication

    Apollo users authenticate with an API key sent in the x-api-key header — keep the collection's preconfigured API Key authorization and set the apiKey variable. Entering an API key as a Bearer Token results in a 401 Invalid API key error. Apollo partners using the OAuth 2.0 authorization flow can instead switch the collection's authorization type to Bearer Token and supply their OAuth access token.

  3. Send your first request. Open the Get Current User Profile request (GET /users/api_profile) and click Send. It consumes no credits, and a 200 response with your user profile confirms your key works. From there, explore any endpoint — check its reference page for credit consumption before sending requests that enrich or search data.

Your key's access still depends on your Apollo plan and the key's configured scopes — a 403 response means the endpoint isn't included in your plan or key scope, not that your import is broken. See Authentication and Rate Limits for details.

Generate a client SDK

You can turn the spec into a fully typed client library using a tool like OpenAPI Generator or a similar tool. This guide builds a TypeScript client on macOS and runs a People Search. To generate for another language or platform, see the OpenAPI Generator docs.

1. Install the tools. You can install OpenAPI Generator and Node.js with Homebrew or another tool of your choice:

brew install openapi-generator node

2. Generate the client. Point the generator at the published spec:

openapi-generator generate \
  -i https://docs.apollo.io/openapi/apollo-rest-api.json \
  -g typescript-fetch \
  -o ./apollo-client

3. Run a People Search.

  1. Create an API key.

  2. Set the key as an environment variable:

    export APOLLO_API_KEY="your-api-key"
  3. Run the search with npx tsx:

    cd apollo-client
    npx tsx -e "import { SearchApi, Configuration } from './'; new SearchApi(new Configuration({ apiKey: process.env.APOLLO_API_KEY })).peopleApiSearch({ personTitles: ['sales manager'], personLocations: ['california'], perPage: 10 }).then(r => console.log(r.people?.map(p => p.firstName)))"

The generated client handles authentication, request building, and response parsing, so you work with typed TypeScript objects instead of raw HTTP.