LLM chat completion

Returns JSON with a chat completion from IBM Granite 4.0 Micro on Workers AI, with token usage.

Use when you need an llm chat completion for summaries, extraction or classification and can poll an async job.

Do not use when you need a frontier model, tool calling or streaming.

Price: 0.002 USDC per thousand tokens, up to 0.03 USDC per call; clients without upto pay the cap (x402, eip155:8453). Typical response time: 8000 ms (p95). Asynchronous: the paid call returns a jobId; polling is free.

Call it over HTTP (x402)

POST https://x402-gateway.blackwoodstate8.workers.dev/v1/llm-chat. A request without payment gets 402 Payment Required with the PAYMENT-REQUIRED header; any x402 client signs an EIP-3009 authorization and retries with PAYMENT-SIGNATURE (or X-PAYMENT). Invalid input is answered with 400 and not charged.

curl -i -X POST https://x402-gateway.blackwoodstate8.workers.dev/v1/llm-chat -H 'content-type: application/json' -d '{"messages":[{"role":"user","content":"In one sentence, what is the x402 payment protocol?"}],"maxTokens":80}'
Pay to0xB7EEC07C045c7Be0C65e0b0526E1afD333e0fa7e
Asset0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC)
Amount30000 atomic units (0.03 USDC)
Authorization window60 s
Poll (free)GET https://x402-gateway.blackwoodstate8.workers.dev/v1/llm-chat/jobs/:jobId

Call it over MCP

Streamable HTTP at https://x402-gateway.blackwoodstate8.workers.dev/mcp, tool llm-chat_v1. Payment goes in _meta["x402/payment"]; without it the tool returns the payment requirements.

Input

FieldTypeMeaning
messagesarrayConversation so far, oldest first; the last one is usually from the user
maxTokens (optional)integerMaximum tokens to generate (1-4096, 512 when omitted); billed as requested
temperature (optional)numberSampling temperature (0-2); lower is more deterministic

Example:

{
  "messages": [
    {
      "role": "user",
      "content": "In one sentence, what is the x402 payment protocol?"
    }
  ],
  "maxTokens": 80
}

Output

Real example of the paid response (the job ticket):

{
  "jobId": "job_00000000000000000000000000000000",
  "pollUrl": "https://gateway.example/v1/llm-chat/jobs/job_00000000000000000000000000000000",
  "expiresAt": "2026-01-31T00:00:00.000Z",
  "status": "queued"
}
JSON Schema
{
  "type": "object",
  "properties": {
    "jobId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "pollUrl": {
      "type": "string",
      "format": "uri"
    },
    "expiresAt": {
      "type": "string",
      "description": "ISO 8601: depois disso o resultado deixa de existir"
    },
    "status": {
      "type": "string",
      "const": "queued"
    }
  },
  "required": [
    "jobId",
    "pollUrl",
    "expiresAt",
    "status"
  ],
  "additionalProperties": false
}

More

Free schema and example: GET https://x402-gateway.blackwoodstate8.workers.dev/v1/llm-chat. OpenAPI 3.1 · llms.txt · All services