[Go to site: main page, start]

Authentication

How you authenticate to the Apollo API depends on who is making the request. Apollo users use an API key, and partners building on behalf of mutual users use OAuth 2.0. To see how the API, MCP, and CLI compare, check Build with Apollo.

Apollo API (Apollo users)

For Apollo users: You need to create an API key to access the Apollo API. Pass the key in the x-api-key header of every request.

The Create API Keys article details how to create a new key and ensure that it is ready to use. Some endpoints, such as Get a List of Users, are only accessible with a master key, which grants access to all endpoints.

The following example passes an API key in the x-api-key header to call the auth/health endpoint:

curl --request GET \
  --url 'https://api.apollo.io/api/v1/auth/health' \
  --header 'Content-Type: application/json' \
  --header 'Cache-Control: no-cache' \
  --header 'x-api-key: YOUR_API_KEY'

OAuth 2.0 (Partners)

For Apollo partners: To make API requests on behalf of an Apollo user, you need to implement the OAuth 2.0 authorization flow.

If you'd like to promote an integration you've built to Apollo's APIs, you may submit an application to have the integration feature on Apollo’s Marketplace.

Which user do your requests act as?

Records you create are attributed to the user your request acts as, and that user depends on how you authenticated. Ownership drives visibility and permissions inside the Apollo app, so it's worth knowing which one you get.

API key. A key identifies your workspace, not a person, so Apollo can't tell which teammate used it. Every API-key request acts as your workspace's longest-standing active admin — the earliest-created user who hasn't been deleted and has admin access. That's who owns the records you create, not whoever made the key.

OAuth 2.0. Tokens are issued to a specific person, so requests act as the user who granted the token.

To confirm which user your key acts as, call Get Current User Profile with it. The id returned is the acting user, and the same value appears in owner fields such as object_owner_id.

curl --request GET \
  --url 'https://api.apollo.io/api/v1/users/api_profile' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY'

Some endpoints accept an owner field so you can set ownership explicitly instead of taking the acting user — for example owner_id on Create an Account, or user_id on Update a Sequence. Use Get a List of Users to look up IDs for your workspace.