Endpoint
POST
/api/external/tasksAuthorization: Bearer <API_TOKEN> Content-Type: application/json
Request Body
| 字段 | 类型 | 必填 | 值 |
|---|---|---|---|
fb_url | string | 是 | Facebook URL |
task_type | string | 否 | crawl / friend_request,默认 crawl |
obs | boolean | 否 | true / false |
callback_url | string | 否 | HTTP/HTTPS URL |
Enum
| 字段 | 值 | 含义 |
|---|---|---|
task_type | crawl | 爬取 Facebook 数据 |
task_type | friend_request | 发送好友申请 |
status 任务状态 | queued | 等待调度 |
status 任务状态 | running | 执行中 |
status 任务状态 | done | 已完成 |
status 任务状态 | failed | 执行失败 |
status 任务状态 | canceled | 已取消 |
status 好友状态 | unknown | 无好友关系记录 |
status 好友状态 | pending | 好友申请等待确认 |
status 好友状态 | accepted | 已成为好友 |
status 好友状态 | not_friends | 当前不是好友 |
status 好友状态 | unavailable | 无法识别好友操作 |
status 好友状态 | failed | 好友申请执行失败 |
event | fb_crawler.task_done | 爬取任务完成 |
event | fb_crawler.friend_request_done | 好友申请任务完成 |
event | fb_crawler.task_failed | 任务失败 |
Request Example
curl -X POST "https://fb-crawler.suxi-svc.com/api/external/tasks" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"fb_url": "https://www.facebook.com/example",
"task_type": "crawl",
"obs": true
}'
Response 200
{
"task_id": "6687f9c3f4f7a0a2f4a19e01",
"task_type": "crawl",
"status": "queued",
"fb_url": "https://www.facebook.com/example",
"obs": true,
"callback_url": "",
"result_url": "https://fb-crawler.suxi-svc.com/task-result/A1b2C3d4E5f6"
}
Task Status
GET
/api/public/tasks/{token}curl "https://fb-crawler.suxi-svc.com/api/public/tasks/A1b2C3d4E5f6"
{
"task_id": "6687f9c3f4f7a0a2f4a19e01",
"task_type": "crawl",
"status": "done",
"fb_url": "https://www.facebook.com/example",
"result_url": "https://fb-crawler.suxi-svc.com/task-result/A1b2C3d4E5f6",
"created_at": "2026-07-04T11:58:00+00:00",
"started_at": "2026-07-04T11:58:01+00:00",
"finished_at": "2026-07-04T12:00:00+00:00",
"viewer_url": "https://fb-crawler.suxi-svc.com/viewer.html?file=/api/results/6687fa30f4f7a0a2f4a19e02/data"
}
Retry Failed Task
POST
/api/public/tasks/{token}/retrycurl -X POST "https://fb-crawler.suxi-svc.com/api/public/tasks/A1b2C3d4E5f6/retry"
{
"task_id": "6687f9c3f4f7a0a2f4a19e01",
"task_type": "crawl",
"status": "queued",
"fb_url": "https://www.facebook.com/example",
"result_url": "https://fb-crawler.suxi-svc.com/task-result/A1b2C3d4E5f6",
"created_at": "2026-07-04T11:58:00+00:00",
"started_at": null,
"finished_at": null
}
Friend Request
POST
/api/external/taskscurl -X POST "https://fb-crawler.suxi-svc.com/api/external/tasks" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"fb_url": "https://www.facebook.com/example",
"task_type": "friend_request"
}'
Friendship Status
GET
/api/external/friendships/statuscurl -G "https://fb-crawler.suxi-svc.com/api/external/friendships/status" \ -H "Authorization: Bearer <API_TOKEN>" \ --data-urlencode "fb_url=https://www.facebook.com/example"
{
"fb_url": "https://www.facebook.com/example",
"exists": true,
"status": "pending",
"account_id": "6687f9c3f4f7a0a2f4a19e01",
"refreshed": true,
"refresh_status": "pending"
}
Callback Success: Crawl
{
"event": "fb_crawler.task_done",
"task_id": "6687f9c3f4f7a0a2f4a19e01",
"status": "done",
"fb_url": "https://www.facebook.com/example",
"result_id": "6687fa30f4f7a0a2f4a19e02",
"viewer_url": "https://fb-crawler.suxi-svc.com/viewer.html?file=/api/results/6687fa30f4f7a0a2f4a19e02/data",
"result_data_url": "/api/results/6687fa30f4f7a0a2f4a19e02/data",
"summary": {},
"data": {},
"finished_at": "2026-07-04T12:00:00+00:00"
}
Callback Success: Friend Request
{
"event": "fb_crawler.friend_request_done",
"task_id": "6687f9c3f4f7a0a2f4a19e01",
"task_type": "friend_request",
"status": "done",
"fb_url": "https://www.facebook.com/example",
"friendship_status": "pending",
"message": "好友请求已发送,等待对方确认",
"finished_at": "2026-07-04T12:00:00+00:00"
}
Callback Failed
{
"event": "fb_crawler.task_failed",
"task_id": "6687f9c3f4f7a0a2f4a19e01",
"status": "failed",
"fb_url": "https://www.facebook.com/example",
"error": "失败原因",
"finished_at": "2026-07-04T12:00:00+00:00"
}
Error Response
| HTTP | Body |
|---|---|
401 | {"detail":"Unauthorized"} |
400 | {"detail":"fb_url 必填"} |
400 | {"detail":"callback_url 必须是 http/https URL"} |
400 | {"detail":"task_type 仅支持 crawl 或 friend_request"} |
404 | {"detail":"not found"} |
409 | {"detail":"仅失败任务可以重新提交"} |