API ReferenceTasks
Get task status
Returns the full state of a single task. Poll this endpoint until status is ready, at which point payload holds a ready-to-sign transaction request. This is the authoritative freshness check: for a ready task the router re-validates the payload against current chain state, so a stale payload returns 409 PAYLOAD_EXPIRED (re-request the task) rather than calldata that would revert on submission. A task is visible only to the API key that created it.
Authorization
ApiKeyAuth AuthorizationBearer <token>
An API key for task submission and polling, sent as Authorization: Bearer gk_....
In: header
Path Parameters
task_id*string
The task id returned by POST /tasks.
Format
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/tasks/3f8c1e02-9a4b-4c7d-8e1f-2b6a5c9d0e11"{ "task_id": "3f8c1e02-9a4b-4c7d-8e1f-2b6a5c9d0e11", "status": "ready", "created_at": 1753180800, "updated_at": 1753180812, "error": null, "payload": { "to": "0x0000000000000000000000000000000000000001", "data": "0x93de4531000000000000000000000000000000000000000000000000000000000000002a", "value": "0x0", "chain_id": 11155111, "estimated_gas": 234000, "valid_until_block": 22345678 }}{ "error": { "code": "UNAUTHORIZED", "message": "Unauthorized" }}{ "error": { "code": "FORBIDDEN", "message": "Task belongs to a different API key" }}{ "error": { "code": "NOT_FOUND", "message": "Task not found" }}{ "error": { "code": "PAYLOAD_EXPIRED", "message": "payload valid_until_block 22345678 passed (current block 22345700); re-request" }}{ "error": { "code": "INTERNAL", "message": "Internal error: task queue unavailable" }}{ "error": { "code": "QUEUE_FULL", "message": "Service at capacity, please try again in a few minutes" }}