A familiar API boundary.
Use OpenAI-compatible clients with Umbra's model registry. Your API key authorizes requests; prompts are never logged.
Get a development key.
Set UMBRA_API_SECRET on the server, then sign a short-lived token locally. The token is a base64url JSON claims payload followed by an HMAC-SHA256 signature, separated by a dot.
export UMBRA_API_SECRET="replace-me"
node - <<'NODE'
const crypto = require("node:crypto");
const now = Math.floor(Date.now() / 1000);
const payload = Buffer.from(JSON.stringify({
sub: "developer", iat: now, exp: now + 86400
})).toString("base64url");
const signature = crypto.createHmac("sha256", process.env.UMBRA_API_SECRET)
.update(payload).digest("base64url");
console.log(payload + "." + signature);
NODEIn local development without UMBRA_API_SECRET, Umbra generates an ephemeral secret and prints a warning. Tokens from that process stop working after restart.
Chat completions.
curl https://{your-domain}/api/agent/v1/chat/completions \
-H "Authorization: Bearer $UMBRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"umbra-auto","stream":true,"messages":[{"role":"user","content":"Hello"}]}'from openai import OpenAI
client = OpenAI(
base_url="https://{your-domain}/api/agent/v1",
api_key=os.environ["UMBRA_API_KEY"],
)
response = client.chat.completions.create(
model="umbra-auto",
messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)The base URL is /api/agent/v1 relative to your Umbra host. Set it from your deployment origin rather than hardcoding a local port.
Privacy boundary: server-side redaction is not applied to API calls. Client applications own redaction before sending requests to this endpoint.
Models and indicative credits.
| Model | Context | Input / 1M | Output / 1M |
|---|---|---|---|
| Umbra Auto A balanced route selected for your prompt | 128,000 | 0.15 cr | 0.60 cr |
| Nova 4 Fast, capable everyday reasoning | 128,000 | 2.50 cr | 10.00 cr |
| Sage Sonnet Careful writing and analysis | 200,000 | 3.00 cr | 15.00 cr |
| Reasoning R1 Deep, deliberate problem solving | 65,536 | 0.55 cr | 2.19 cr |
| Gemini Flash Multimodal speed with a large context | 1,000,000 | 0.10 cr | 0.40 cr |
| Qwen Coder Focused help for code and debugging | 262,144 | 0.30 cr | 1.00 cr |
| Llama Open Open-weight conversation | 131,072 | 0.40 cr | 0.40 cr |
| Mistral Small Efficient and precise | 32,000 | 0.10 cr | 0.30 cr |
Credits are indicative local test pricing. On-chain funding is not connected in this MVP.