Docs / Quickstart
Quickstart
HummingRelay is one OpenAI-compatible API for abliterated language models — models whose refusal behaviour has been removed from the weights. If your code already talks to the OpenAI API, the integration is a new base URL and a new key.
Before you start
HummingRelay is in a private beta. Accounts are created by invitation only: an invite link creates your account and its first API key. Usage is paid from prepaid credits in US dollars.
- Open your invite link and set a login and password. The link works once, for 12 hours.
- Sign in to the dashboard and create an API key. Keys start with
hr_live_and are shown once. - Export it:
export HUMMINGRELAY_API_KEY=hr_live_…
Make a request
The base URL is https://api.hmbrd.dev/v1. Use the official OpenAI SDK, or plain HTTP.
curl https://api.hmbrd.dev/v1/chat/completions \
-H "Authorization: Bearer $HUMMINGRELAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "model-zero",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Explain what an abliterated model is in two sentences." }
]
}'Response · OpenAI format
{
"id": "…",
"object": "chat.completion",
"model": "model-zero",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 19, "completion_tokens": 212, "total_tokens": 231 }
}The model field in every response is the public model id you sent. Each successful response carries an X-Request-Id header, and each request that reaches a model appears with its tokens and cost in the dashboard.
What is the same as OpenAI
GET /v1/models,POST /v1/chat/completionsandPOST /v1/completions, with the OpenAI request and response shapes.- Bearer authentication, server-sent-event streaming, the
usageobject. - The error object:
{ "error": { "message", "type", "code", "param" } }.
What is different
- Three models:
model-zero,model-one-flash,model-one. See Models and pricing. - No embeddings, no Responses API, no Assistants, files, images or audio endpoints.
- Before each request the relay reserves the most it can cost, based on
max_tokens. See Holds. - An empty balance answers
402 insufficient_quota, not 429, so SDK retries do not loop. - Unknown parameters are passed to the model as they are. If the model rejects them you get a generic 400; the upstream error text is never forwarded.