cURL 与原生 HTTP
本页给出 WebAgent 在原生 HTTP 上的常用调用模式——任何语言只要能发 HTTPS / JSON 就能用,不依赖官方 SDK。
请求结构
所有调用共享同一套结构。先看下面的规范,本页后面每段 curl 都是它的一个实例。
Base URL 与路径
https://api.eak.eazo.aiproject-scoped 端点的路径都以 project 为前缀:
/v1/projects/{project_id}/do_anything/sessions
/v1/projects/{project_id}/do_anything/sessions/{session_id}
/v1/projects/{project_id}/do_anything/sessions/{session_id}/runs/{run_id}/events路径参数
下列参数按端点路径所需出现,出现即必填:
| 参数 | 形态 | 来源 |
|---|---|---|
{project_id} | proj_ 前缀字符串 | Console → Project Switcher;project 是 project-scoped 端点的隔离单位 |
{session_id} | sess_ 前缀字符串 | 「起 session」响应里的 id |
{run_id} | run_ 前缀字符串 | session 响应 runs[] 中的 run id,或 latest_run_id |
鉴权
每个请求都要带 bearer token:
Authorization: Bearer <wa_api_key><wa_api_key> 是 wa_ 前缀的 API key,在 Console → Settings → API Keys 创建,详见认证。
请求体
变更类端点(POST)带 Content-Type: application/json,请求体为 JSON。每个端点的字段全集以 OpenAPI spec 为准。
起 session
下面的示例用占位值(proj_demo_0001 / wa_demo_… / sess_demo_0001 / run_demo_0001),实际调用按上面「请求结构」替换成你自己的值。
bash
curl https://api.eak.eazo.ai/v1/projects/proj_demo_0001/do_anything/sessions \
-H "Authorization: Bearer wa_demo_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"instructions": "找出 Hacker News 现在 Top 5 的故事。"
}'订阅事件流(SSE)
bash
curl -N \
-H "Authorization: Bearer wa_demo_xxxxxxxxxxxxxxxx" \
"https://api.eak.eazo.ai/v1/projects/proj_demo_0001/do_anything/sessions/sess_demo_0001/runs/run_demo_0001/events"断线续传:
bash
curl -N \
-H "Authorization: Bearer wa_demo_xxxxxxxxxxxxxxxx" \
-H "Last-Event-ID: 142" \
"…/events"追加消息
bash
curl https://api.eak.eazo.ai/v1/projects/proj_demo_0001/do_anything/sessions/sess_demo_0001/runs/run_demo_0001/messages \
-H "Authorization: Bearer wa_demo_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "content": "顺便把每条的评论数也带上。" }'回应 input request
bash
curl https://api.eak.eazo.ai/v1/projects/proj_demo_0001/do_anything/sessions/sess_demo_0001/runs/run_demo_0001/intervene \
-H "Authorization: Bearer wa_demo_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"kind": "answer_input_request",
"input_request_id": "ir_01HXX",
"response": { "solved": true }
}'kind 是 discriminator——同一个端点也接受 take_control / release_control,见 Take Control。
取消 run
bash
curl -X POST https://api.eak.eazo.ai/v1/projects/proj_demo_0001/do_anything/sessions/sess_demo_0001/runs/run_demo_0001/cancel \
-H "Authorization: Bearer wa_demo_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "reason": "user_cancelled" }'列 sessions
bash
curl "https://api.eak.eazo.ai/v1/projects/proj_demo_0001/do_anything/sessions?status=running&limit=20" \
-H "Authorization: Bearer wa_demo_xxxxxxxxxxxxxxxx"错误
非 2xx 响应都是 JSON,带稳定 code:
json
{
"code": "insufficient_credits",
"detail": "Project balance below the minimum required ($0.50).",
"extra": { "balance_usd": "0.12", "required_usd": "0.50" }
}完整列表见 API 概览 → 错误。
幂等
bash
curl … -H "Idempotency-Key: $(uuidgen)"同 key 重发返回同响应——网络异常时安全 retry。