Skip to content

cURL 与原生 HTTP

本页给出 WebAgent 在原生 HTTP 上的常用调用模式——任何语言只要能发 HTTPS / JSON 就能用,不依赖官方 SDK。

请求结构

所有调用共享同一套结构。先看下面的规范,本页后面每段 curl 都是它的一个实例。

Base URL 与路径

https://api.eak.eazo.ai

project-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。