Skip to content
OpenRelay is in early access, and the /v1 API is stable. New capabilities ship in the changelog.
Inference API

Quickstart

From an API key to your first chat completion, unary and streaming, using nothing but curl.

This guide takes you from zero to your first completion in a couple of minutes.

Get an API key

Create an OpenRelay API key in the dashboard under Account → API Keys. New keys are prefixed with or_ (older vl_ keys still work) and are shown in full only once: store it somewhere safe.

export OPENRELAY_API_KEY="or_your_api_key"

See Authentication for the details.

Make your first request

Send a chat completion to https://inference.openrelay.inc/v1/chat/completions:

curl https://inference.openrelay.inc/v1/chat/completions \
  -H "Authorization: Bearer $OPENRELAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openrelay/gpt-oss-120b",
    "messages": [
      { "role": "user", "content": "Write a haiku about distributed systems." }
    ]
  }'
{
  "id": "chatcmpl-…",
  "object": "chat.completion",
  "model": "openrelay/gpt-oss-120b",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "Nodes whisper in sync…" },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 16,
    "completion_tokens": 19,
    "total_tokens": 35
  }
}

The model field in the response is always the public id you requested.

Stream the response

Set "stream": true to receive the completion as Server-Sent Events. The stream ends with a final usage chunk and a data: [DONE] sentinel:

curl -N https://inference.openrelay.inc/v1/chat/completions \
  -H "Authorization: Bearer $OPENRELAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openrelay/gpt-oss-120b",
    "stream": true,
    "messages": [
      { "role": "user", "content": "Count to five." }
    ]
  }'
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","model":"openrelay/gpt-oss-120b","choices":[{"index":0,"delta":{"content":"1"}}]}

data: {"id":"chatcmpl-…","object":"chat.completion.chunk","model":"openrelay/gpt-oss-120b","choices":[{"index":0,"delta":{"content":" 2"}}]}



data: {"id":"chatcmpl-…","object":"chat.completion.chunk","model":"openrelay/gpt-oss-120b","choices":[],"usage":{"prompt_tokens":12,"completion_tokens":9,"total_tokens":21}}

data: [DONE]

-N disables curl's output buffering so you see tokens arrive live. See Streaming for the format details.

Next steps

On this page