介绍
# ClickFunnels
通过托管的 OAuth 身份验证访问 ClickFunnels 2.0 API。管理联系人、产品、订单、课程、表单、Webhook 等。
## 快速开始
```bash # List teams python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/clickfunnels/api/v2/teams') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('User-Agent', 'Maton/1.0') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```
## 基础 URL
``` https://gateway.maton.ai/clickfunnels/{native-api-path} ```
将 `{native-api-path}` 替换为实际的 ClickFunnels API 端点路径。网关将请求代理到 `{subdomain}.myclickfunnels.com` 并自动注入您的 OAuth 令牌。
## 身份验证
所有请求都需要在 Authorization 请求头中包含 Maton API 密钥以及一个 User-Agent 请求头:
``` Authorization: Bearer $MATON_API_KEY User-Agent: Maton/1.0 ```
**环境变量:** 将您的 API 密钥设置为 `MATON_API_KEY`:
```bash export MATON_API_KEY="YOUR_API_KEY" ```
### 获取您的 API 密钥
1. 在 [maton.ai](https://maton.ai) 登录或创建账户 2. 前往 [maton.ai/settings](https://maton.ai/settings) 3. 复制您的 API 密钥
## 连接管理
在 `https://ctrl.maton.ai` 管理您的 ClickFunnels OAuth 连接。
### 列出连接
```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections?app=clickfunnels&status=ACTIVE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```
### 创建连接
```bash python <<'EOF' import urllib.request, os, json data = json.dumps({'app': 'clickfunnels'}).encode() req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('Content-Type', 'application/json') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```
### 获取连接
```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```
**响应:** ```json { "connection": { "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80", "status": "ACTIVE", "creation_time": "2025-12-08T07:20:53.488460Z", "last_updated_time": "2026-01-31T20:03:32.593153Z", "url": "https://connect.maton.ai/?session_token=...", "app": "clickfunnels", "metadata": {} } } ```
在浏览器中打开返回的 `url` 以完成 OAuth 授权。
### 删除连接
```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```
### 指定连接
如果您有多个 ClickFunnels 连接,请使用 `Maton-Connection` 请求头指定要使用的连接:
```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/clickfunnels/api/v2/teams') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') req.add_header('User-Agent', 'Maton/1.0') req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```
如果省略,网关将使用默认(最早)的活跃连接。
## API 参考
### 团队 (Teams)
#### 列出团队
```bash GET /clickfunnels/api/v2/teams ```
**响应:** ```json [ { "id": 412840, "public_id": "vPNqAp", "name": "My Team", "time_zone": "Pacific Time (US & Canada)", "locale": "en", "created_at": "2026-02-07T09:28:29.709Z", "updated_at": "2026-02-07T11:14:32.118Z" } ] ```
#### 获取团队
```bash GET /clickfunnels/api/v2/teams/{team_id} ```
### 工作区 (Workspaces)
#### 列出工作区
```bash GET /clickfunnels/api/v2/teams/{team_id}/workspaces ```
**响应:** ```json [ { "id": 435231, "public_id": "JZqWGb", "team_id": 412840, "name": "My Workspace", "subdomain": "myworkspace", "created_at": "2026-02-07T09:28:31.268Z", "updated_at": "2026-02-07T09:28:34.498Z" } ] ```
#### 获取工作区
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id} ```
### 联系人 (Contacts)
#### 列出联系人
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts ```
使用筛选:
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address][email protected] ```
**响应:** ```json [ { "id": 1087091674, "public_id": "PWzmxEx", "workspace_id": 435231, "email_address": "[email protected]", "first_name": "John", "last_name": "Doe", "phone_number": null, "time_zone": null, "uuid": "eb7a970c-727d-4c82-9209-bd8f7457a801", "tags": [], "custom_attributes": {}, "created_at": "2026-02-07T09:28:52.713Z", "updated_at": "2026-02-07T09:28:52.777Z" } ] ```
#### 获取联系人
```bash GET /clickfunnels/api/v2/contacts/{contact_id} ```
#### 创建联系人
```bash POST /clickfunnels/api/v2/workspaces/{workspace_id}/contacts Content-Type: application/json
{ "contact": { "email_address": "[email protected]", "first_name": "Jane", "last_name": "Smith", "phone_number": "+1234567890" } } ```
#### 更新联系人
```bash PUT /clickfunnels/api/v2/contacts/{contact_id} Content-Type: application/json
{ "contact": { "first_name": "Updated Name", "phone_number": "+1987654321" } } ```
#### 删除联系人
```bash DELETE /clickfunnels/api/v2/contacts/{contact_id} ```
成功时返回 HTTP 204。
#### 更新或插入联系人 (Upsert Contact)
根据匹配的电子邮件创建或更新联系人:
```bash POST /clickfunnels/api/v2/workspaces/{workspace_id}/contacts/upsert Content-Type: application/json
{ "contact": { "email_address": "[email protected]", "first_name": "Updated" } } ```
#### GDPR 联系人数据擦除
```bash DELETE /clickfunnels/api/v2/workspaces/{workspace_id}/contacts/{contact_id}/gdpr_destroy ```
### 产品 (Products)
#### 列出产品
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/products ```
**响应:** ```json [ { "id": 962732, "public_id": "jAvBEA", "workspace_id": 435231, "name": "My Product", "current_path": "/my-product", "archived": false, "visible_in_store": true, "visible_in_customer_center": true, "default_variant_id": 5361073, "variant_ids": [5361073], "price_ids": [], "tag_ids": [], "created_at": "2026-02-09T07:23:02.158Z", "updated_at": "2026-02-09T07:23:02.163Z" } ] ```
#### 获取产品
```bash GET /clickfunnels/api/v2/products/{product_id} ```
#### 创建产品
```bash POST /clickfunnels/api/v2/workspaces/{workspace_id}/products Content-Type: application/json
{ "product": { "name": "New Product", "visible_in_store": true, "visible_in_customer_center": true } } ```
#### 更新产品
```bash PUT /clickfunnels/api/v2/products/{product_id} Content-Type: application/json
{ "product": { "name": "Updated Product Name" } } ```
#### 归档产品
```bash POST /clickfunnels/api/v2/products/{product_id}/archive ```
#### 取消归档产品
```bash POST /clickfunnels/api/v2/products/{product_id}/unarchive ```
### 订单 (Orders)
#### 列出订单
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/orders ```
#### 获取订单
```bash GET /clickfunnels/api/v2/orders/{order_id} ```
#### 更新订单
```bash PUT /clickfunnels/api/v2/orders/{order_id} Content-Type: application/json
{ "order": { "notes": "Updated order notes" } } ```
### 履行 (Fulfillments)
#### 列出履行
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/fulfillments ```
#### 获取履行
```bash GET /clickfunnels/api/v2/fulfillments/{fulfillment_id} ```
#### 创建履行
```bash POST /clickfunnels/api/v2/workspaces/{workspace_id}/fulfillments Content-Type: application/json
{ "fulfillment": { "contact_id": 1087091674, "location_id": 12345, "tracking_url": "https://tracking.example.com/123", "shipping_provider": "ups", "tracking_code": "1Z999AA10123456784", "notify_customer": true } } ```
#### 取消履行
```bash POST /clickfunnels/api/v2/fulfillments/{fulfillment_id}/cancel ```
### 课程 (Courses)
#### 列出课程
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/courses ```
#### 获取课程
```bash GET /clickfunnels/api/v2/courses/{course_id} ```
### 注册 (Enrollments)
#### 列出注册
```bash GET /clickfunnels/api/v2/courses/{course_id}/enrollments ```
#### 创建注册
```bash POST /clickfunnels/api/v2/courses/{course_id}/enrollments Content-Type: application/json
{ "courses_enrollment": { "contact_id": 1087091674 } } ```
#### 更新注册
```bash PUT /clickfunnels/api/v2/courses/{course_id}/enrollments/{enrollment_id} Content-Type: application/json
{ "courses_enrollment": { "suspended": true, "suspension_reason": "Payment failed" } } ```
### 表单 (Forms)
#### 列出表单
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/forms ```
**响应:** ```json [ { "id": 442896, "public_id": "NdOxzL", "workspace_id": 435231, "name": "Contact Form", "created_at": "2026-02-07T09:28:33.316Z", "updated_at": "2026-02-07T09:28:33.316Z" } ] ```
#### 获取表单
```bash GET /clickfunnels/api/v2/forms/{form_id} ```
#### 列出表单提交
```bash GET /clickfunnels/api/v2/forms/{form_id}/submissions ```
### 图片 (Images)
#### 列出图片
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/images ```
**响应:** ```json [ { "id": 20670308, "public_id": "mvvWWM", "url": "https://statics.myclickfunnels.com/workspace/JZqWGb/image/20670308/file/image.png", "workspace_id": 435231, "alt_text": null, "name": null, "created_at": "2026-02-07T09:28:40.102Z", "updated_at": "2026-02-07T09:29:01.697Z" } ] ```
#### 创建图片(通过 URL)
```bash POST /clickfunnels/api/v2/workspaces/{workspace_id}/images Content-Type: application/json
{ "image": { "upload_source_url": "https://example.com/image.png" } } ```
### Webhooks
#### 列出 Webhook 端点
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/webhooks/outgoing/endpoints ```
**响应:** ```json [ { "id": 96677, "public_id": "vBZlEl", "workspace_id": 435231, "url": "https://example.com/webhook", "name": "My Webhook", "event_type_ids": ["contact.created"], "api_version": 2, "webhook_secret": "e779d4b2faa7d986...", "created_at": "2026-02-09T07:23:22.295Z", "updated_at": "2026-02-09T07:23:22.295Z" } ] ```
#### 创建 Webhook 端点
```bash POST /clickfunnels/api/v2/workspaces/{workspace_id}/webhooks/outgoing/endpoints Content-Type: application/json
{ "webhooks_outgoing_endpoint": { "url": "https://example.com/webhook", "name": "New Webhook", "event_type_ids": ["contact.created", "order.created"] } } ```
#### 获取 Webhook 端点
```bash GET /clickfunnels/api/v2/webhooks/outgoing/endpoints/{endpoint_id} ```
#### 更新 Webhook 端点
```bash PUT /clickfunnels/api/v2/webhooks/outgoing/endpoints/{endpoint_id} Content-Type: application/json
{ "webhooks_outgoing_endpoint": { "name": "Updated Webhook", "event_type_ids": ["contact.created", "contact.updated"] } } ```
#### 删除 Webhook 端点
```bash DELETE /clickfunnels/api/v2/webhooks/outgoing/endpoints/{endpoint_id} ```
成功时返回 HTTP 204。
## 分页
ClickFunnels 使用基于游标的分页。每个列表端点最多返回 20 个项目。
使用 `after` 参数结合最后一个项目的 ID 来获取下一页:
```bash GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?after=1087091674 ```
**响应请求头:**
- `Pagination-Next`:最后一个项目的 ID(用于下一页) - `Link`:下一页的完整 URL
分页流程示例:
```bash # First page GET /clickfunnels/api/v2/workspaces/{workspace_id}/images
# Response header: Pagination-Next: 20670327
# Next page GET /clickfunnels/api/v2/workspaces/{workspace_id}/images?after=20670327 ```
## 筛选
使用 `filter` 查询参数来筛选列表结果:
```bash # Filter by email GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address][email protected]
# Filter by multiple emails (OR) GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address][email protected],[email protected]
# Multiple filters (AND) GET /clickfunnels/api/v2/workspaces/{workspace_id}/contacts?filter[email_address][email protected]&filter[id]=1087091674 ```
## 代码示例
### JavaScript
```javascript const response = await fetch( 'https://gateway.maton.ai/clickfunnels/api/v2/teams', { headers: { 'Authorization': `Bearer ${process.env.MATON_API_KEY}`, 'User-Agent': 'Maton/1.0' } } ); const teams = await response.json(); ```
### Python
```python import os import requests
response = requests.get( 'https://gateway.maton.ai/clickfunnels/api/v2/teams', headers={ 'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}', 'User-Agent': 'Maton/1.0' } ) teams = response.json() ```
### 创建联系人示例
```python import os import requests
response = requests.post( 'https://gateway.maton.ai/clickfunnels/api/v2/workspaces/435231/contacts', headers={ 'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}', 'Content-Type': 'application/json', 'User-Agent': 'Maton/1.0' }, json={ 'contact': { 'email_address': '[email protected]', 'first_name': 'Jane', 'last_name': 'Smith' } } ) contact = response.json() ```
## 注意事项
- 团队 ID、工作区 ID 和资源 ID 是整数 - 每个资源还有一个用于面向公众 URL 的 `public_id`(字符串) - 列表端点默认每页最多返回 20 个项目 - 使用 `after` 参数进行分页 - 删除操作返回 HTTP 204 和空响应 - 请求正文使用嵌套的资源键(例如 `{"contact": {...}}`) - 图片最大大小:10MB,最大尺寸:10,000 x 10,000 像素 - 支持的图片格式:JPEG、PNG、WebP、GIF、SVG - 重要:使用 curl 命令时,如果 URL 包含括号,请使用 `curl -g` 以禁用 glob 解析 - 重要:将 curl 输出通过管道传递给 `jq` 或其他命令时,在某些 Shell 环境中,像 `$MATON_API_KEY` 这样的环境变量可能无法正确展开
## 错误处理
| 状态 | 含义 | |--------|---------| | 400 | 缺少 ClickFunnels 连接 | | 401 | Maton API 密钥无效或缺失 | | 404 | 未找到资源 | | 422 | 验证错误(检查响应正文) | | 429 | 请求频率受限 | | 4xx/5xx | 来自 ClickFunnels API 的透传错误 |
### 故障排除:API 密钥问题
1. 检查是否设置了 `MATON_API_KEY` 环境变量:
```bash echo $MATON_API_KEY ```
2. 通过列出连接来验证 API 密钥是否有效:
```bash python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://ctrl.maton.ai/connections') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF ```
### 故障排除:无效的应用程序名称
1. 确保您的 URL 路径以 `clickfunnels` 开头。例如:
- 正确:`https://gateway.maton.ai/clickfunnels/api/v2/teams` - 错误:`https://gateway.maton.ai/api/v2/teams`
## 资源
- [ClickFunnels API 简介](https://developers.myclickfunnels.com/docs/intro) - [ClickFunnels API 参考](https://developers.myclickfunnels.com/reference) - [分页指南](https://developers.myclickfunnels.com/docs/pagination) - [筛选指南](https://developers.myclickfunnels.com/docs/filtering) - [Webhook 概述](https://developers.myclickfunnels.com/docs/webhooks-overview) - [Maton 社区](https://discord.com/invite/dBfFAcefs2) - [Maton 支持](mailto:[email protected])