the essentials
Two values, that's the whole setup
Every tool below needs the same base URL and key. Claude Code is the one exception — it uses the Anthropic-shaped URL.
- Base URL (OpenAI-compatible)
- api.coding.ecohash.com/v1
- Base URL (Claude Code)
- api.coding.ecohash.com/anthropic
- API key
- eco_… — created in the console, shown once
- 1
Create a key
In the console under API keys. It starts eco_ and is shown once — store it in your keychain or a .env you don't commit.
- 2
Pick your tool's section below
Every tool needs the same two things: our base URL and your key.
- 3
Run the curl check
A JSON reply means you're connected; your plan page balance will have moved.
openai-compatible tools
Cline, Roo Code, Kilo Code, Continue & Aider
These all speak the OpenAI wire format. If a field is called Custom Base URL or OpenAI Base URL, it's the same thing — the value always ends in /v1.
Cline, Roo Code & Kilo Code
Roo Code and Kilo Code are Cline forks — the setup is identical. In Cline, choose “Bring your own API key” and uncheck “Use different model for Plan and Act modes”.
# Cline / Roo Code / Kilo Code — in the extension settings:
API Provider -> OpenAI Compatible
Base URL -> https://api.coding.ecohash.com/v1
API Key -> eco_your_key_here
Model ID -> GLM-5.2 # or any model on your planContinue
Continue is configured by file rather than by clicking. Its config schema shifts between versions — open whatever the extension generates on first run and match that shape.
# ~/.continue/config.yaml — Continue reads config from file
models:
- name: GLM-5.2
provider: openai # "openai" = OpenAI-compatible wire format
model: GLM-5.2
apiBase: https://api.coding.ecohash.com/v1
apiKey: ${{ secrets.ECO_KEY }}
roles: [chat, edit, apply]Private codebase indexing with Continue
Continue's @codebase retrieval needs an embedding model and optionally a reranker. Available on the same key: qwen3-embedding-0.6b/4b/8b, jina-embeddings-v3/v4, bge-reranker-v2-m3. Note: embeddings and reranking bill from your wallet balance, not plan credits — indexing a large repo is a one-off cost.
# Optional: private codebase indexing on the same endpoint.
# Your source never leaves it — no third-party embedding service.
- name: code-index
provider: openai
model: qwen3-embedding-b
apiBase: https://api.coding.ecohash.com/v1
apiKey: ${{ secrets.ECO_KEY }}
roles: [embed]
- name: code-rerank
provider: openai
model: bge-reranker-v2-m3
apiBase: https://api.coding.ecohash.com/v1
apiKey: ${{ secrets.ECO_KEY }}
roles: [rerank]claude code
The one different base URL
Claude Code speaks Anthropic's protocol, which we serve directly.
Terminal setup
# Claude Code speaks Anthropic's protocol — the base URL is
# different and must NOT include /v1 (the client appends
# /v1/messages itself; adding /v1 here is the #1 setup mistake).
export ANTHROPIC_BASE_URL="https://api.coding.ecohash.com/anthropic"
export ANTHROPIC_AUTH_TOKEN="eco_your_key_here"
claude
# Ask for sonnet, opus or haiku as normal — each maps to a
# model on your plan. Your administrator decides which.verify
Check it works
A JSON reply means you are connected. Then check your plan page — the credit balance should have moved.
One curl
curl https://api.coding.ecohash.com/v1/chat/completions \
-H "Authorization: Bearer $ECOHASH_API_KEY" \
-H "Content-Type: application/json" \
-d {
"model": "GLM-5.2",
"messages": [{"role": "user", "content": "Say hello"}]
}limits
Three limits, three different fixes
Every request spends credits from your monthly allowance; cached prompt tokens cost a fraction of uncached ones, so leave your extension's prompt caching on. Three separate limits can stop a request — your plan page shows each one, so you can tell which you hit.
- Monthly allowance
- Spent the month's credits — top up or wait for renewal
- Spending pace
- 5-hour / 7-day windows refill continuously — just wait
- Model-group cap
- That group's share is used — switch groups
errors
When something is refused
- 401
- Key wrong, revoked or expired — create a new one
- 402
- Allowance spent — buy a top-up; retrying won't help
- 429
- Too fast, or a group cap — the response says how long to wait
- 404 on a model
- Not on your plan — see the model list on your plan page