跳转到内容

程序化工具

公开发现接口位于 haneoka.org,任务接口运行在本地服务。启动与完整示例见本地计算指南。

GETHEAD /api/v1

机器可读的入口、请求契约与工具模块。

认证
无需认证,可匿名公开读取。
缓存
public, max-age=300

请求示例

Terminal window
curl -sS "https://haneoka.org/api/v1"

响应示例

HTTP/2 200 OK
{}

为节省篇幅已截断,实际响应包含更多条目。

GETHEAD /api/v1/openapi.json

机器可读的入口、请求契约与工具模块。

认证
无需认证,可匿名公开读取。
缓存
public, max-age=300

请求示例

Terminal window
curl -sS "https://haneoka.org/api/v1/openapi.json"

响应示例

HTTP/2 200 OK
{}

为节省篇幅已截断,实际响应包含更多条目。

GETHEAD /api/v1/tools

机器可读的入口、请求契约与工具模块。

认证
无需认证,可匿名公开读取。
缓存
public, max-age=300

请求示例

Terminal window
curl -sS "https://haneoka.org/api/v1/tools"

响应示例

HTTP/2 200 OK
{}

为节省篇幅已截断,实际响应包含更多条目。

GET /v1

返回操作、并发数与结果保留时间。

认证
本地服务 Bearer 令牌,读取启动时给出的私有请求头文件。
缓存
no-store

请求示例

Terminal window
curl -sS "http://127.0.0.1:8765/v1" \
-H "Authorization: Bearer ${localToken}"

响应示例

HTTP/2 200 OK
{
"operations": [
"search",
"evaluate",
"growth",
"timeline",
"chart-image"
],
"concurrency": 1,
"resultTtlSeconds": 600
}

错误

状态码代码含义
400invalid_request路径或查询中的 ID 格式错误。
401unauthorized传入本地 Bearer 令牌。
403origin_not_allowed从本地客户端或脚本调用。
404not_found未知的地区或记录。
404job_not_found任务已过期或被删除。
409image_not_ready等待图片任务完成。
413body_too_large请求体超过 2 MiB。
429rate_limit_exceeded该键的请求过多;如有 Retry-After 请遵守。
429queue_full等待任务完成或删除旧结果。
POST /v1/jobs

返回 202 与查询地址 Location。请求体 2 MiB、排队 8 个、同时运行 1 个、执行上限 5 分钟。库存留在本机。

认证
本地服务 Bearer 令牌,读取启动时给出的私有请求头文件。
缓存
no-store

请求体 application/json

名称类型说明
operation必填 string search、evaluate、growth、timeline、chart-image 或 resource-image。
request可选 object 计算任务必填,使用 tools/schema.json 中的对应类型。

请求示例

Terminal window
curl -sS -X POST "http://127.0.0.1:8765/v1/jobs" \
-H "Authorization: Bearer ${localToken}" \
-H "Content-Type: application/json" \
--data '{"operation":"chart-image","server":"intl","songId":"100001","difficulty":"expert","locale":"en","height":720}'

响应示例

HTTP/2 202 Accepted
Location: /v1/jobs/00000000-0000-4000-8000-000000000001
{
"id": "00000000-0000-4000-8000-000000000001",
"operation": "chart-image",
"state": "queued"
}

错误

状态码代码含义
400invalid_request路径或查询中的 ID 格式错误。
401unauthorized传入本地 Bearer 令牌。
403origin_not_allowed从本地客户端或脚本调用。
404not_found未知的地区或记录。
404job_not_found任务已过期或被删除。
409image_not_ready等待图片任务完成。
413body_too_large请求体超过 2 MiB。
429rate_limit_exceeded该键的请求过多;如有 Retry-After 请遵守。
429queue_full等待任务完成或删除旧结果。
GET /v1/jobs/{id}

状态:queued、running、completed、failed。完成后保留 10 分钟,读取 result、identity 与可选 image URL。

认证
本地服务 Bearer 令牌,读取启动时给出的私有请求头文件。
缓存
no-store

参数

名称位置类型说明
id必填 路径 uuid 提交任务返回的 ID。

请求示例

Terminal window
curl -sS "http://127.0.0.1:8765/v1/jobs/00000000-0000-4000-8000-000000000001" \
-H "Authorization: Bearer ${localToken}"

响应示例

HTTP/2 200 OK
{
"id": "00000000-0000-4000-8000-000000000001",
"operation": "search",
"state": "completed",
"createdAt": 1793030400000,
"expiresAt": 1793031000000,
"result": {
"overall": [],
"results": [],
"stopReason": "complete"
}
}

错误

状态码代码含义
400invalid_request路径或查询中的 ID 格式错误。
401unauthorized传入本地 Bearer 令牌。
403origin_not_allowed从本地客户端或脚本调用。
404not_found未知的地区或记录。
404job_not_found任务已过期或被删除。
409image_not_ready等待图片任务完成。
413body_too_large请求体超过 2 MiB。
429rate_limit_exceeded该键的请求过多;如有 Retry-After 请遵守。
429queue_full等待任务完成或删除旧结果。
DELETE /v1/jobs/{id}

终止计算上下文并删除结果,后续读取返回 404。

认证
本地服务 Bearer 令牌,读取启动时给出的私有请求头文件。
缓存
no-store

参数

名称位置类型说明
id必填 路径 uuid 提交任务返回的 ID。

请求示例

Terminal window
curl -sS -X DELETE "http://127.0.0.1:8765/v1/jobs/00000000-0000-4000-8000-000000000001" \
-H "Authorization: Bearer ${localToken}"

响应示例

HTTP/2 204 No Content

无响应体。

错误

状态码代码含义
400invalid_request路径或查询中的 ID 格式错误。
401unauthorized传入本地 Bearer 令牌。
403origin_not_allowed从本地客户端或脚本调用。
404not_found未知的地区或记录。
404job_not_found任务已过期或被删除。
409image_not_ready等待图片任务完成。
413body_too_large请求体超过 2 MiB。
429rate_limit_exceeded该键的请求过多;如有 Retry-After 请遵守。
429queue_full等待任务完成或删除旧结果。
GET /v1/jobs/{id}/image.png

使用已完成的 chart-image 任务及同一本地 Bearer 令牌,返回 PNG;未就绪为 409。

认证
本地服务 Bearer 令牌,读取启动时给出的私有请求头文件。
缓存
no-store

参数

名称位置类型说明
id必填 路径 uuid 提交任务返回的 ID。

请求示例

Terminal window
curl -sS -o output.bin "http://127.0.0.1:8765/v1/jobs/00000000-0000-4000-8000-000000000001/image.png" \
-H "Authorization: Bearer ${localToken}"

响应示例

HTTP/2 200 OK

二进制内容(不显示)。

错误

状态码代码含义
400invalid_request路径或查询中的 ID 格式错误。
401unauthorized传入本地 Bearer 令牌。
403origin_not_allowed从本地客户端或脚本调用。
404not_found未知的地区或记录。
404job_not_found任务已过期或被删除。
409image_not_ready等待图片任务完成。
413body_too_large请求体超过 2 MiB。
429rate_limit_exceeded该键的请求过多;如有 Retry-After 请遵守。
429queue_full等待任务完成或删除旧结果。
POST /v1/resource-image

与资源图片 API 使用相同请求。JSON 8 MiB、输出 16 MiB、50 秒,每次执行一个任务。kind、data 和查看器状态见图片导出指南。

认证
本地服务 Bearer 令牌,读取启动时给出的私有请求头文件。
缓存
no-store

请求体 application/json

名称类型说明
kind必填 string team、gacha、gacha-history、stamp、chart、live2d 或 spine。
data必填 object 网页导出模型,见 /reference/images/。

请求示例

Terminal window
curl -sS -o output.bin -X POST "http://127.0.0.1:8765/v1/resource-image" \
-H "Authorization: Bearer ${localToken}" \
-H "Content-Type: application/octet-stream" \
--data-binary @resource-image.json

响应示例

HTTP/2 200 OK

二进制内容(不显示)。

错误

状态码代码含义
400invalid_request路径或查询中的 ID 格式错误。
401unauthorized传入本地 Bearer 令牌。
403origin_not_allowed从本地客户端或脚本调用。
404not_found未知的地区或记录。
404job_not_found任务已过期或被删除。
409image_not_ready等待图片任务完成。
413body_too_large请求体超过 2 MiB。
429rate_limit_exceeded该键的请求过多;如有 Retry-After 请遵守。
429queue_full等待任务完成或删除旧结果。
GET /v1/jobs/{id}/images.zip

使用已完成 resource-image 归档任务返回的图片地址。

认证
本地服务 Bearer 令牌,读取启动时给出的私有请求头文件。
缓存
no-store

参数

名称位置类型说明
id必填 路径 uuid 提交任务返回的 ID。

请求示例

Terminal window
curl -sS -o output.bin "http://127.0.0.1:8765/v1/jobs/00000000-0000-4000-8000-000000000001/images.zip" \
-H "Authorization: Bearer ${localToken}"

响应示例

HTTP/2 200 OK

二进制内容(不显示)。

错误

状态码代码含义
400invalid_request路径或查询中的 ID 格式错误。
401unauthorized传入本地 Bearer 令牌。
403origin_not_allowed从本地客户端或脚本调用。
404not_found未知的地区或记录。
404job_not_found任务已过期或被删除。
409image_not_ready等待图片任务完成。
413body_too_large请求体超过 2 MiB。
429rate_limit_exceeded该键的请求过多;如有 Retry-After 请遵守。
429queue_full等待任务完成或删除旧结果。