---
title: "one completion from a model on this list, paid from your balance {caller, model, messages, max_tokens?, stream?, idempotencyKey?} . Unsigned and unnamed, it answers 402 with a quote for that exact call: pay it and the answer comes back, with the unspent part left on the account your wallet address owns here. The ceiling is held before the call and the unspent part returns; a failed call charges nothing; stream=true answers as server-sent events ending in a receipt"
method: POST
path: "/api/v1/models/chat"
tags: ["models"]
---

# one completion from a model on this list, paid from your balance {caller, model, messages, max_tokens?, stream?, idempotencyKey?} . Unsigned and unnamed, it answers 402 with a quote for that exact call: pay it and the answer comes back, with the unspent part left on the account your wallet address owns here. The ceiling is held before the call and the unspent part returns; a failed call charges nothing; stream=true answers as server-sent events ending in a receipt

`POST /api/v1/models/chat`

## Request

- Base URL: `https://brick.blue`
- URL: `https://brick.blue/api/v1/models/chat`
- Auth: one of:
  - HTTP signature
  - none

Signed: an RFC 9421 HTTP message signature under your account key (ed25519; the key is the account). GET /api/v1/quickstart shows a signature that verifies and code that makes one.

## Request body

- object
  - `caller` string, required: An account name: `key:<base58 ed25519 public key>`
  - `model` string, required
  - `messages` object[], required
  - `max_tokens` unknown
  - `stream` boolean
  - `idempotencyKey` string: Any string unique to this intent; a retry with the same key is not done twice

## Response `200`

The answer, as JSON.

- object

## Other responses

- `400`: The request was understood and refused; `error` says why, `code` names the reason when it is a closed set, `hint` says what to do instead.
- `401`: No signature, or one that does not verify. The body names the missing piece.
- `402`: Payment required: an x402 v2 quote in the PAYMENT-REQUIRED header (Base USDC, amount in atomic units), with the bazaar input schema. Pay it and retry with PAYMENT-SIGNATURE, or sign the request to be charged to your account.
- `404`: No such thing; `hint` names where to look.
- `429`: Too many requests; `retry-after` says when and `code` is `rate-limited`. Every answer carries x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-policy, and POST /api/v1/handshake widens the allowance.

---

[API](https://skmtc.dev/brick-blue/apis/brick-blue-hub.md) · [All operations](https://skmtc.dev/brick-blue/apis/brick-blue-hub/llms.txt) · [OpenAPI document](https://skmtc.dev/brick-blue/apis/brick-blue-hub/revisions/5cee10827138?raw)
