Apollo (API Key)

Live

API KEY

CRM & SALES

CRM & Sales

Apollo (API Key) connects agents to prospecting and sequence data with each user's own API key, so enrichment and outreach stay attributed rather than running through one shared workspace key.

  • Per-user credentials: each call uses the actual user's token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Apollo (API Key)
agent · Acme Q3
Run
Who at Globex should we be talking to?
S
apolloapikey_search_people
106ms
Prospecting agent
7 matches in scope. 3 in RevOps, 2 VP+, all with verified emails.
Sources: 7 contacts, 1 account
apolloapikey
7 contacts
18:29
Message Claude...

Tools your sales agent reaches for on Apollo, scoped per user.

CALL ANY TOOL
Search and enrich people and accounts, drive sequences, and log calls and tasks, each call on the user's own API key rather than a shared workspace credential.
apolloapikey_activate_sequence
Activate sequence
Activate (start) an inactive Sequence in your team's Apollo account by ID. Once activated, the sequence begins sending emails to its contacts on the configured schedule. The sequence must have at least one step configured before it can be activated. Requires a master API key. Returns the updated sequence object with its active state.
Parameters
Name
Type
Required
Description
sequence_id
string
Required
The Apollo ID for the sequence that you want to activate. To find sequence IDs, use the Search for Sequences endpoint and identify the id value for the sequence.
apolloapikey_add_contacts_to_sequence
Add contacts to sequence
apolloapikey_add_records_to_list
List add records to
apolloapikey_archive_sequence
Archive sequence
apolloapikey_bulk_create_accounts
Bulk create accounts
apolloapikey_bulk_create_tasks
Bulk create tasks
apolloapikey_bulk_update_accounts
Bulk update accounts
apolloapikey_check_email_send_status
Check email send status
apolloapikey_complete_task
Complete task
apolloapikey_create_contact
Create contact
apolloapikey_create_email_draft
Create email draft
apolloapikey_enrich_contact
Enrich contact
apolloapikey_get_account
Get account
apolloapikey_get_contact
Get contact
apolloapikey_get_conversation_export
Export get conversation
apolloapikey_get_current_user
Get current user
apolloapikey_get_email_stats
Get email stats
apolloapikey_get_person
Get person
apolloapikey_list_contact_deals
List contact deals
apolloapikey_list_deals
List deals
apolloapikey_list_fields
List fields
apolloapikey_list_sequences
List sequences
apolloapikey_query_report
Query report
apolloapikey_search_accounts
Search accounts
apolloapikey_search_conversations
Search conversations
apolloapikey_search_news_articles
Search news articles
apolloapikey_update_account
Update account
apolloapikey_update_contact
Update contact
apolloapikey_update_contact_stages
Update contact stages
apolloapikey_update_sequence
Update sequence

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Apollo (API Key) tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["apolloapikey"], toolNames: [
    "apolloapikey_activate_sequence",
    "apolloapikey_add_contacts_to_sequence",
    "apolloapikey_add_records_to_list"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Is the Salesforce sync healthy?" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["apolloapikey"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Which data sources are connected?" }],
  tools,
});

// Execute the tool call with the user's vaulted Apollo (API Key) credential
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["apolloapikey"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Pull open Zendesk tickets created this week." }],
  tools,
});

// Tool call runs with the user's vaulted Apollo (API Key) credential
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["apolloapikey"] }, pageSize: 100,
});

const agent = new Agent({
  name: "apolloapikey_agent",
  model: "gemini-2.5-pro",
  instruction: "Work with Apollo (API Key) for the signed-in user.",
  tools,
});

await agent.run("What auth does the Shopify connector need?");
Try these prompts
Paste any prompt into your agent to get started.
Prospecting
Copy the prompt
Copied
Who at this account should we be talking to?
Copy the prompt
Copied
Enrich these domains and return verified contacts.
Copy the prompt
Copied
Search for RevOps leaders at Series B companies.
Sequences
Copy the prompt
Copied
Add these contacts to my outbound sequence.
Copy the prompt
Copied
Which sequences are active and how are they performing?
Copy the prompt
Copied
Remove this contact from every sequence.
Pipeline hygiene
Copy the prompt
Copied
List the accounts with no activity in 30 days.
Copy the prompt
Copied
Create a task to follow up on this opportunity.
Copy the prompt
Copied
Log the outcome of this call.
SEE HOW AUTH WORKS
Your users connect their Apollo API key once. It stays vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Apollo (API Key)
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Apollo (API Key)
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Apollo (API Key)
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Apollo (API Key)
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other connectors.
GTM and RevOps Teams
Outbound prospecting agent
Searches Apollo for prospects matching your ICP, scores and ranks them, drafts personalized outreach in Gmail, and logs every send to Google Sheets. Mail goes out as the rep, not from a shared inbox.
GTM and RevOps Teams
CRM AI agent
Reads the Granola transcript after every call, extracts next steps and updates the HubSpot record, drafts the follow-up in Gmail, and confirms in Slack, all on the rep's own delegated OAuth.
GTM and RevOps Teams
Deal intelligence agent
Pulls recent Gong calls, scores deal risk with an LLM, cross-references the record in Attio, and DMs each owner their at-risk deals in Slack. Every read is scoped to that rep's own access.
GTM and RevOps Teams
Sales call prep agent
Reads tomorrow's calls from Google Calendar, mines past Granola notes and Attio history for context, and delivers each rep a prep brief in Slack, scoped to the calls that rep actually owns.
Test other agents
See the same per-user auth pattern across other connectors.
SALES
Outbound prospecting agent
Search Apollo for ICP matches, rank them, draft personalised Gmail outreach, and log every send to Google Sheets.
GTM
CRM AI agent
Turn each Granola call transcript into a HubSpot record update, a drafted Gmail follow-up, and a Slack recap.
SALES
Deal intelligence agent
Score Gong call risk with an LLM, cross-reference the Attio record, and DM each owner their at-risk deals in Slack.
SALES
Sales call prep agent
Read tomorrow's calls from Google Calendar, mine Granola notes and Attio history, and deliver each rep a prep brief in Slack.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Apollo (API Key) token looks fine in a demo. In production every action looks like one service account, and you cannot tell who wired a source or ran a query. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Apollo (API Key) today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
How is this different from the OAuth Apollo connector?
Same Apollo, different credential. This one uses each user's API key and exposes apolloapikey_* tools; the OAuth connector uses a user grant and exposes apollo_* tools. Pick the one that matches how your team authenticates.
Does each user need their own key?
That is the point of this connector. A key per user keeps enrichment and sequence activity attributed, where a single shared workspace key makes every action look identical in the audit trail.
How many tools are available?
80 across people, accounts, sequences, calls, tasks, and enrichment. The page shows a representative 30; the docs list all of them.
Can I keep the agent out of sequence writes?
Yes. Scope the connection to the search and enrichment tools; sequence and task writes stay unavailable, enforced before the API call.
How is the key stored?
Encrypted per tenant with AES-256, resolved at request time, never placed in LLM context.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""apolloapikey"": {
""url"": ""https://mcp.scalekit.com/apolloapikey"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.apolloapikey]
url = ""https://mcp.scalekit.com/apolloapikey""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""apolloapikey"": {
""url"": ""https://mcp.scalekit.com/apolloapikey"",
""type"": ""http""
}
}
}