Build with Umbra

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);
NODE

In 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.

ModelContextInput / 1MOutput / 1M
Umbra Auto
A balanced route selected for your prompt
128,0000.15 cr0.60 cr
Nova 4
Fast, capable everyday reasoning
128,0002.50 cr10.00 cr
Sage Sonnet
Careful writing and analysis
200,0003.00 cr15.00 cr
Reasoning R1
Deep, deliberate problem solving
65,5360.55 cr2.19 cr
Gemini Flash
Multimodal speed with a large context
1,000,0000.10 cr0.40 cr
Qwen Coder
Focused help for code and debugging
262,1440.30 cr1.00 cr
Llama Open
Open-weight conversation
131,0720.40 cr0.40 cr
Mistral Small
Efficient and precise
32,0000.10 cr0.30 cr

Credits are indicative local test pricing. On-chain funding is not connected in this MVP.