跳转到内容

Node.js 示例

下面示例覆盖认证检查、启动 Worker、用返回的 run_slug 查询结果三步。

示例中的 YOUR_WORKER_ID 是占位符。请替换为要运行的 Worker slug,或把 owner/name 路径写成 owner~nameinput 必须按该 Worker 的输入 schema 构造;不同 Worker 的字段不一定相同。

默认使用 is_async: true 异步提交并轮询结果。如需等待执行完成,把 is_async 改为 false,并用 offset / limit 控制同步返回的数据窗口。

const API_BASE_URL = "https://openapi.coreclaw.com";
const API_KEY = process.env.CORECLAW_API_KEY;
const WORKER_ID = process.env.CORECLAW_WORKER_ID ?? "YOUR_WORKER_ID";
if (!API_KEY) throw new Error("Set CORECLAW_API_KEY first.");
async function coreclawRequest(path, { method = "GET", query, body } = {}) {
const url = new URL(API_BASE_URL + path);
for (const [key, value] of Object.entries(query ?? {})) {
url.searchParams.set(key, String(value));
}
const response = await fetch(url, {
method,
headers: {
Authorization: `Bearer ${API_KEY}`,
...(body ? { "Content-Type": "application/json" } : {}),
},
body: body ? JSON.stringify(body) : undefined,
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const payload = await response.json();
if (payload.code !== 0) throw new Error(JSON.stringify(payload));
return payload;
}
const account = await coreclawRequest("/api/v2/users/account");
console.log("Account:", account.data);
const run = await coreclawRequest(`/api/v2/workers/${WORKER_ID}/runs`, {
method: "POST",
body: {
// Replace input.parameters.custom with fields from the Worker's input schema.
input: {
parameters: {
custom: {
keywords: ["coffee"],
base_location: "New York,USA",
max_results: 1,
},
},
},
is_async: true,
offset: 0,
limit: 20,
},
});
const runId = run.data.run_slug;
console.log("Run ID:", runId);
const results = await coreclawRequest(`/api/v2/worker-runs/${runId}/result`, {
query: { offset: 0, limit: 20 },
});
console.log(results.data);