HooderAi logoHooderAi

← Journal

Guide · 8 min read

One URL for every tool

Sep 12, 2026 · HooderAi journal

HooderAi speaks the OpenAI chat-completions wire on /v1, so every tool you already own — OpenCode, Cline, Continue, Codex CLI, Claude Code, Zed, Roo Code, OpenClaw — connects by changing one base URL and one key. This piece documents exactly what that wire carries, how keys scope it, and where the failure modes live.

The wire, precisely

Every call is POST /api/v1/chat/completions with header Authorization: Bearer hk-key and a JSON body of model plus messages. The gateway answers the OpenAI shape: choices with message content, plus usage with prompt_tokens and completion_tokens. Anything that parses an OpenAI response already parses ours — no adapter, no SDK fork.

Model ids are namespaced hooder/. Examples live today: hooder/chatgpt-terra for volume work, hooder/chatgpt-astra for flagship GPT-class calls, hooder/claude-fable-5 and hooder/claude-fable-5.1 for Claude-class calls, hooder/claude-opus-5 for deep reasoning. The full callable list is always GET /api/v1/models — the docs never drift from it because the page reads the same table.

POST /api/v1/chat/completions
Authorization: Bearer hk-key
{"model":"hooder/chatgpt-terra","messages":[{"role":"user","content":"halo"}]}
# 200 + choices[0].message.content + usage{prompt_tokens, completion_tokens}

Keys are the access control

A key is not a password — it is a scoped credential. Each key carries four controls: an allowlist of model ids, a weekly token budget, a traffic class, and an expiry timestamp. A call outside the allowlist is rejected before it touches upstream; a call over budget fails fast with a clear error instead of silently spending.

Revoke is immediate. The bearer hash lookup happens per request, so revoking a key in the console kills it on the very next call — no propagation delay, no session to drain. Minting a replacement takes seconds and does not disturb sibling keys.

Per-tool notes

OpenCode / Cline / Continue / Roo Code: set the provider base URL to https://hooderai.site/v1 and paste the hk-key as the API key. Pick a hooder/ id from /v1/models. Nothing else changes — prompts, streaming flags, and temperature pass through untouched.

Codex CLI / Claude Code / OpenClaw: same base URL, same key. These harnesses tend to burn tokens fast on agentic loops, so put them on a dedicated key with a weekly budget — when the loop runs away, the budget stops it, not your balance.

Zed: configure the OpenAI-compatible provider with the Hooder base URL. Zed's inline-assist calls are small and frequent, which is exactly the shape metered billing favors over subscriptions.

Failure modes, honestly

401 means the key is wrong, revoked, or expired — check the prefix in the console. 403 means the model is outside this key's allowlist. 404 means the model id does not exist or is disabled — re-pull /v1/models. 502 means inferhub upstream was unreachable; the attempt is logged with error status and zero price.

Failed calls are never billed. They are counted in usage with status error and price $0, so your debugging does not cost you and your invoice stays reproducible.

Next: Why withdrawals need a human
Billing · 6 min read
Read next →