Loading
Skip to content
RedRouterRedRouter
Dashboard ↗

Create a message

POST /v1/messages

Authentication

Send Authorization: Bearer $REDROUTER_API_KEY or x-api-key: $REDROUTER_API_KEY.

Request body

application/json · required

{
  "$ref": "#/components/schemas/MessagesRequest"
}

Request examples

curl -X POST 'https://redrouter.org/v1/messages' \
  -H "Authorization: Bearer $REDROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
  "max_tokens": 512,
  "messages": [
    {
      "content": "Hello",
      "role": "user"
    }
  ],
  "model": "glm-5.3-flash-rr"
}'
import os, json
from urllib.request import Request, urlopen

body = json.loads(r'''{
  "max_tokens": 512,
  "messages": [
    {
      "content": "Hello",
      "role": "user"
    }
  ],
  "model": "glm-5.3-flash-rr"
}''')
request = Request(
    "https://redrouter.org/v1/messages",
    method="POST",
    data=json.dumps(body).encode(),
    headers={
        "Authorization": "Bearer " + os.environ["REDROUTER_API_KEY"],
        "Content-Type": "application/json",
    },
)
with urlopen(request) as response:
    print(json.load(response))
const key = process.env.REDROUTER_API_KEY;
const response = await fetch("https://redrouter.org/v1/messages", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${key}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "max_tokens": 512,
    "messages": [
      {
        "content": "Hello",
        "role": "user"
      }
    ],
    "model": "glm-5.3-flash-rr"
  }),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());

Responses

200 · Completed response or event stream

application/json

{
  "$ref": "#/components/schemas/MessageResponse"
}

text/event-stream

{
  "description": "Named events: ping, message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. Failures emit error. Read through message_stop.",
  "type": "string"
}

Event data schema:

{
  "$ref": "#/components/schemas/MessagesEvent"
}

400 · Invalid request

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

401 · Invalid key

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

403 · Permissions, spend limit or insufficient credit

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

404 · Unknown model

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

413 · Request too large

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

429 · Rate, concurrency or daily spend limit

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

500 · Internal error

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

502 · Model response failed

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

503 · Model unavailable

application/json

{
  "$ref": "#/components/schemas/MessagesError"
}

↑ ↓ to select · Enter to open · Esc to close