canonical: https://jentic.com/apis/clickfunnels.com/clickfunnels-classic-api

# ClickFunnels Classic API

Jentic publishes the only available OpenAPI specification for ClickFunnels Classic API, keeping it validated and agent-ready. ClickFunnels Classic (1.0) is the original sales funnel platform, and the Classic public REST API exposes the core resources marketers need to integrate funnels with their stack: contacts, funnels and their steps, purchases, and outgoing webhooks. The 11 endpoints cover contact upsert, funnel discovery, purchase listing, and webhook subscription management with Bearer token authentication.

## For AI agents

Sync contacts, list funnels and steps, retrieve purchases, and manage webhook subscriptions on a ClickFunnels Classic account.

## Scope

Does not handle course delivery, product catalogue, or order fulfilment - use for ClickFunnels Classic contacts, funnels, purchases, and webhooks only.

## Capabilities

- Create and update contacts on a ClickFunnels Classic account via POST /contacts and PATCH `/contacts/{id}`
- List funnels owned by the account and inspect each funnel's steps via /funnels and `/funnels/{funnel_id}/steps`
- Retrieve purchase records to power downstream reporting via /purchases
- Subscribe to outgoing webhooks for funnel events via POST /webhooks
- Update or delete an existing webhook subscription via `/webhooks/{id}`
- Look up a single contact's record by ID via GET `/contacts/{id}`

## Use cases

### Contact Sync to External CRM

Mirror ClickFunnels Classic contacts into a downstream CRM by upserting on POST /contacts when a new opt-in arrives and patching on `/contacts/{id}` when profile data changes. Combined with webhook subscriptions, the API supports near-real-time replication without polling.

Example prompt: POST a new contact to /contacts when a webinar signup webhook fires, then store the returned contact ID against the lead record in the CRM.

### Purchase Reporting and Reconciliation

Pull purchase data from /purchases to reconcile ClickFunnels revenue against payment processors and accounting systems. The endpoint returns purchase records the marketer can join to contacts and funnel steps for funnel-level revenue attribution.

Example prompt: Page through GET /purchases for the last 30 days and aggregate amount by funnel ID using the contact and funnel lookups.

### Webhook-Driven Automations

Subscribe a webhook on /webhooks to receive funnel events as they happen, so downstream systems can fire welcome emails, post to Slack, or hand off to support automatically. `/webhooks/{id}` lets you update or remove the subscription as targets change.

Example prompt: POST to /webhooks with the target_url and event types, then verify the subscription via GET `/webhooks/{id}.`

### AI Agent Funnel Operations via Jentic

An AI agent watching marketing performance can pull funnel and purchase data, push contacts in, or set up webhook automations by searching Jentic for the matching ClickFunnels Classic operation. Jentic securely stores the bearer token so the agent never sees the raw credential.

Example prompt: Use the Jentic search query 'create a funnel contact' to find POST /contacts and execute with the captured lead details.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/contacts` | Create or upsert a contact |
| GET | `/contacts/{id}` | Retrieve a contact by ID |
| GET | `/funnels` | List funnels on the account |
| GET | `/funnels/{funnel_id}/steps` | List steps inside a funnel |
| GET | `/purchases` | List purchase records |
| POST | `/webhooks` | Subscribe to an outgoing webhook |
| DELETE | `/webhooks/{id}` | Delete a webhook subscription |

## Key resources

- **Contacts** — Create, read, and update contacts in a ClickFunnels Classic account
- **Funnels** — List funnels and inspect their step structure
- **Purchases** — Retrieve purchase records for revenue reporting
- **Webhooks** — Create, update, and delete outgoing webhook subscriptions

## Why Jentic

- **Setup:** Wiring the ClickFunnels Classic API by hand means managing its bearer token against api.clickfunnels.com/api/v2 and stitching contact, funnel, purchase, and webhook calls together yourself. Through Jentic you install once, import the ClickFunnels Classic API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** ClickFunnels Classic puts resource ids in the URL path (`/contacts/{id}`, `/funnels/{funnel_id}/steps`, `/webhooks/{id}`), so a rule can pin your agent to one funnel and its steps. You choose the operations it may call, so destructive ones like webhook deletion are not included unless you add them.
- **Credential handling:** Your ClickFunnels Classic bearer token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a funnel contact' or 'list funnel steps', and Jentic returns the matching ClickFunnels Classic operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **ClickFunnels 2.0** — Newer ClickFunnels platform with 200+ endpoints across courses, products, and orders
- **HubSpot** — Marketing automation and CRM platform
- **Stripe** — Payment processing for funnel checkouts

## FAQ

### Why is there no official OpenAPI spec for ClickFunnels Classic API?

ClickFunnels does not publish an OpenAPI specification for the Classic 1.0 platform. Jentic generates and maintains this spec so that AI agents and developers can call ClickFunnels Classic API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the ClickFunnels Classic API use?

The API uses a Bearer token authorisation header, with API key as a query-parameter alternative documented by ClickFunnels. Through Jentic the bearer token is stored in the encrypted vault and the agent receives a scoped execution context only.

### Can I create a contact and subscribe to events at the same time?

Yes. POST /contacts to create the contact, then POST /webhooks with the relevant event types so downstream systems are notified when that contact triggers funnel actions.

### How do I list every step in a funnel?

Call GET /funnels to list funnel IDs, then GET `/funnels/{funnel_id}/steps` for each one to retrieve its ordered step structure. This is the source for funnel topology in reporting.

### How do I push a ClickFunnels contact through Jentic?

Search Jentic for 'create a funnel contact', load the schema for POST /contacts, and execute with the contact details. The Python SDK uses await client.search, await client.load, await client.execute.

### Is this the same API as ClickFunnels 2.0?

No. This spec covers ClickFunnels Classic (1.0) at api.clickfunnels.com. ClickFunnels 2.0 is a separate product with its own API at the per-workspace myclickfunnels.com domain and a much larger surface.

### Can I limit what my agent is allowed to do with the ClickFunnels Classic API?

Yes. Because you run Jentic One yourself, you decide which ClickFunnels Classic operations the agent may call, so you can grant read access to GET /funnels, GET `/funnels/{funnel_id}/steps`, and GET /purchases while withholding destructive calls like DELETE `/webhooks/{id}` unless you explicitly add them. Since resource IDs live in the URL path, your own rules can pin the agent to a single funnel and its steps or a specific contact by ID. The bearer token is held by your instance and injected only when a permitted operation runs, so the agent never sees the raw credential.
