Quickstart
Two paths. Send data in from your own code with the REST API, which is live today, or connect an AI client such as Claude to the MCP server, which is in preview.
REST: send your first lead
Section titled “REST: send your first lead”1. Get an API key
Section titled “1. Get an API key”A workspace admin opens Settings, then Integrations, then API Keys
in Funnel One and chooses + New key. Keep the Leads write box ticked (it
is on by default); this is the leads.manage scope. The key is shown once. Copy
it into your secret store.
2. Send a lead
Section titled “2. Send a lead”curl -X POST https://app.funnelone.ai/api/v1/leads \ -H "Authorization: Bearer $F1_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: signup-8f2c1a" \ -d '{"email":"sam@example.com","first_name":"Sam","last_name":"Rivera","company":{"domain":"example.com","name":"Example"}}'const res = await fetch('https://app.funnelone.ai/api/v1/leads', { method: 'POST', headers: { Authorization: `Bearer ${process.env.F1_API_KEY}`, 'Content-Type': 'application/json', 'Idempotency-Key': 'signup-8f2c1a', }, body: JSON.stringify({ email: 'sam@example.com', first_name: 'Sam', last_name: 'Rivera', company: { domain: 'example.com', name: 'Example' }, }),});console.log(res.status, await res.json()); // 201 { lead_id: ..., ... }import os, requests
res = requests.post( "https://app.funnelone.ai/api/v1/leads", headers={ "Authorization": f"Bearer {os.environ['F1_API_KEY']}", "Idempotency-Key": "signup-8f2c1a", }, json={ "email": "sam@example.com", "first_name": "Sam", "last_name": "Rivera", "company": {"domain": "example.com", "name": "Example"}, },)print(res.status_code, res.json()) # 201 {"lead_id": ..., ...}3. Read the response
Section titled “3. Read the response”A new lead answers 201 with lead_id, status, and the company_id and
contact_id it was matched to when Funnel One could match it. Sending the
same Idempotency-Key again answers 409 duplicate_request, so a retry never
creates a second lead. See the REST overview for every field and
Errors for what can go wrong.
MCP: connect an AI client
Section titled “MCP: connect an AI client”The fastest way: let your AI agent do it.
Fetch and follow the instructions to connect me to Funnel One from https://dev.funnelone.ai/agent-setup/prompt.mdOr do it yourself. In Claude Code:
claude mcp add --transport http funnelone https://app.funnelone.ai/mcpThen type /mcp in Claude Code, pick funnelone and sign in to Funnel One in
the browser. Every other client, step by step: Connect a client.
Next steps
Section titled “Next steps”- Authentication: the credentials, and how sign-in works.
- Scopes: every permission a credential can carry.
- MCP overview: what an AI client can and cannot do.