5.3 KiB
5.3 KiB
ClickFunnels Routing Reference
App name: clickfunnels
Base URL proxied: {subdomain}.myclickfunnels.com
The router automatically handles the subdomain from your OAuth connection.
API Path Pattern
/clickfunnels/api/v2/{resource}
Required Headers
THe User-Agent header is required to avoid Cloudflare blocks:
User-Agent: Maton/1.0
Common Endpoints
Teams
List Teams
GET /clickfunnels/api/v2/teams
Get Team
GET /clickfunnels/api/v2/teams/{team_id}
Workspaces
List Workspaces
GET /clickfunnels/api/v2/teams/{team_id}/workspaces
Get Workspace
GET /clickfunnels/api/v2/workspaces/{workspace_id}
Contacts
List Contacts
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
Get Contact
GET /clickfunnels/api/v2/contacts/{contact_id}
Create Contact
POST /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
Content-Type: application/json
{
"contact": {
"email_address": "user@example.com",
"first_name": "John",
"last_name": "Doe"
}
}
Update Contact
PUT /clickfunnels/api/v2/contacts/{contact_id}
Content-Type: application/json
{
"contact": {
"first_name": "Updated"
}
}
Delete Contact
DELETE /clickfunnels/api/v2/contacts/{contact_id}
Upsert Contact
POST /clickfunnels/api/v2/workspaces/{workspace_id}/contacts/upsert
Products
List Products
GET /clickfunnels/api/v2/workspaces/{workspace_id}/products
Get Product
GET /clickfunnels/api/v2/products/{product_id}
Create Product
POST /clickfunnels/api/v2/workspaces/{workspace_id}/products
Content-Type: application/json
{
"product": {
"name": "New Product",
"visible_in_store": true
}
}
Archive/Unarchive Product
POST /clickfunnels/api/v2/products/{product_id}/archive
POST /clickfunnels/api/v2/products/{product_id}/unarchive
Orders
List Orders
GET /clickfunnels/api/v2/workspaces/{workspace_id}/orders
Get Order
GET /clickfunnels/api/v2/orders/{order_id}
Fulfillments
List Fulfillments
GET /clickfunnels/api/v2/workspaces/{workspace_id}/fulfillments
Create Fulfillment
POST /clickfunnels/api/v2/workspaces/{workspace_id}/fulfillments
Cancel Fulfillment
POST /clickfunnels/api/v2/fulfillments/{fulfillment_id}/cancel
Courses & Enrollments
List Courses
GET /clickfunnels/api/v2/workspaces/{workspace_id}/courses
List Enrollments
GET /clickfunnels/api/v2/courses/{course_id}/enrollments
Create Enrollment
POST /clickfunnels/api/v2/courses/{course_id}/enrollments
Forms & Submissions
List Forms
GET /clickfunnels/api/v2/workspaces/{workspace_id}/forms
List Submissions
GET /clickfunnels/api/v2/forms/{form_id}/submissions
Webhooks
List Webhook Endpoints
GET /clickfunnels/api/v2/workspaces/{workspace_id}/webhooks/outgoing/endpoints
Create Webhook Endpoint
POST /clickfunnels/api/v2/workspaces/{workspace_id}/webhooks/outgoing/endpoints
Content-Type: application/json
{
"webhooks_outgoing_endpoint": {
"url": "https://example.com/webhook",
"name": "My Webhook",
"event_type_ids": ["contact.created"]
}
}
Delete Webhook Endpoint
DELETE /clickfunnels/api/v2/webhooks/outgoing/endpoints/{endpoint_id}
Images
List Images
GET /clickfunnels/api/v2/workspaces/{workspace_id}/images
Upload Image via URL
POST /clickfunnels/api/v2/workspaces/{workspace_id}/images
Content-Type: application/json
{
"image": {
"upload_source_url": "https://example.com/image.png"
}
}
Pagination
Cursor-based pagination with 20 items per page:
# First page
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts
# Next page (use ID from Pagination-Next header)
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?after=1087091674
Response headers:
Pagination-Next: ID of last itemLink: Full URL for next page
Filtering
# Single filter
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=user@example.com
# Multiple values (OR)
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=a@example.com,b@example.com
# Multiple filters (AND)
GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address]=user@example.com&filter[id]=123
Notes
- Subdomain is automatically determined from your OAuth connection
- IDs are integers; each resource also has a
public_idstring - Request bodies use nested keys:
{"contact": {...}},{"product": {...}} - List endpoints: use
workspaces/{id}/{resource}pattern - Single resource: use
/{resource}/{id}pattern (no workspace prefix) - Delete operations return HTTP 204 with empty body
- Max 20 items per page, use
afterparameter for pagination