Gas Killer Docs
API ReferenceTasks

Get task status

GET
/tasks/{task_id}

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.

Formatuuid

Response 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"  }}