DEVELOPER GUIDE
Get started
Connect your application to Funkel AI with REST, MCP, or outbound webhooks.
Choose your connection
Use REST for application integrations. Use MCP to connect an AI client. Use webhooks to receive workspace events.
- The REST reference covers customer reads and writes, including products, leads, campaigns, inbox, and connected services.
- The MCP reference lists every exposed tool with its actual input schema and approval requirement.
- Account usage and limits appear in the reference. Manage subscriptions and payments in the Funkel AI app.
Make your first request
Create a personal access token in Settings → Security. Set FUNKEL_API_TOKEN in your local environment.
Send this request to list your products. Save a product ID for later requests.
The API origin is https://api.funkel.ai. Documentation pages do not proxy requests.
curl --fail-with-body https://api.funkel.ai/api/apps \
-H "Authorization: Bearer $FUNKEL_API_TOKEN"Set up your product and workflow
POST /api/apps creates a product. Provide name and review the optional url, description, icp_description, and product_brain fields in the reference.
Use the returned product ID for lists, Lead Finders, and campaigns. Existing products can use the import workflows directly.
A Lead Finder is optional for imported people. Review campaign settings and selected recipients before launch.
Sender connection still requires provider authorization. API access does not bypass that authorization.
Use JavaScript
Run this example on your server. Keep tokens outside browser bundles.
const response = await fetch("https://api.funkel.ai/api/apps", {
headers: { Authorization: `Bearer ${process.env.FUNKEL_API_TOKEN}` },
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
console.log(await response.json());Use Python
This example uses the Python standard library.
import json, os, urllib.request
request = urllib.request.Request(
"https://api.funkel.ai/api/apps",
headers={"Authorization": "Bearer " + os.environ["FUNKEL_API_TOKEN"]},
)
with urllib.request.urlopen(request, timeout=30) as response:
print(json.load(response))Build your integration
Open the API reference for request fields, responses, and errors. Download OpenAPI JSON or YAML for your tools.
Check operation details before writes. Some operations consume credits, schedule work, or contact connected platforms.
Use each endpoint's pagination fields. Pagination and response shapes differ between resources.