Point your CLI at ObixHub. That’s it.
One base URL — https://obixhub.com — for every CLI. Each SDK appends its own path, so there’s no /v1 to remember. Set the base URL, hand it your obx_ key, and keep using the tool you already have.
The same origin, every client.
Set your client’s base URL to the bare origin below. The SDK appends its own conventional path — these are the endpoints it can land on.
One obx_ key, several header forms.
Create a named key in your dashboard, then send it however your client likes. The key is scoped to your team’s plan and never forwarded to the model providers.
Authorization: Bearer obx_ER0B******dzKpx-api-key: obx_ER0B******dzKpCopy, paste, run.
Claude Code speaks the Anthropic Messages API; Codex CLI speaks the OpenAI Responses API. Both reach Claude and GPT.
# claude code — anthropic messages
export ANTHROPIC_BASE_URL="https://obixhub.com"
export ANTHROPIC_API_KEY="obx_ER0B******dzKp"
# pin a model in the catalog (optional)
export ANTHROPIC_MODEL="claude-opus-4-8"
$ claude# codex cli — openai responses
# ~/.codex/config.toml
model_provider = "obixhub"
[model_providers.obixhub]
name = "obixhub"
base_url = "https://obixhub.com/v1"
wire_api = "responses"
env_key = "OPENAI_API_KEY"
# then:
export OPENAI_API_KEY="obx_ER0B******dzKp"
$ codex -m gpt-5.5Native wire formats.
No SDK required — anything that can POST JSON works. Add stream:true for server-sent events.
curl https://obixhub.com/v1/messages \
-H "x-api-key: obx_ER0B******dzKp" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d @-{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [{ "role": "user", "content": "hello" }]
}curl https://obixhub.com/chat/completions \
-H "authorization: Bearer obx_ER0B******dzKp" \
-H "content-type: application/json" \
-d @-{
"model": "gpt-5.5",
"messages": [{ "role": "user", "content": "hello" }]
}Use the provider’s native model name.
Pass the model exactly as the provider names it — claude-opus-4-8, gpt-5.5. No provider/ prefix; the endpoint you call already selects the provider.
Each key carries a model allowlist (all curated models by default). A model outside the allowlist — or from the wrong provider for the endpoint — is rejected in that endpoint’s own error shape.
- anthropic/claude-opus-4-8 · sonnet · haiku
- openai/gpt-5.5 · gpt-4o · o-series