| name | 9router |
| description | Entry point for 9Router — local/remote AI gateway with OpenAI-compatible REST for chat, image, TTS, embeddings, web search, web fetch. Use when the user mentions 9Router, NINEROUTER_URL, or wants AI without writing provider boilerplate. This skill covers setup + indexes capability skills; fetch the relevant capability SKILL.md from the URLs below when needed. |
9Router
Local/remote AI gateway exposing OpenAI-compatible REST. One key, many providers, auto-fallback.
Setup
export NINEROUTER_URL="http://localhost:20128"
export NINEROUTER_KEY="sk-..."
All requests: ${NINEROUTER_URL}/v1/... with header Authorization: Bearer ${NINEROUTER_KEY} (omit if auth disabled).
Verify: curl $NINEROUTER_URL/api/health → {"ok":true}
Discover models
curl $NINEROUTER_URL/v1/models
curl $NINEROUTER_URL/v1/models/image
curl $NINEROUTER_URL/v1/models/tts
curl $NINEROUTER_URL/v1/models/embedding
curl $NINEROUTER_URL/v1/models/web
curl $NINEROUTER_URL/v1/models/stt
curl $NINEROUTER_URL/v1/models/image-to-text
Use data[].id as model field in requests. Combos appear with owned_by:"combo".
Response shape:
{ "object": "list", "data": [
{ "id": "openai/gpt-5", "object": "model", "owned_by": "openai", "created": 1735000000 },
{ "id": "tavily/search", "object": "model", "kind": "webSearch", "owned_by": "tavily", "created": 1735000000 }
]}
Capability skills
When the user needs a specific capability, fetch that skill's SKILL.md from its raw URL:
Errors
- 401 → set/refresh
NINEROUTER_KEY (Dashboard → Keys)
- 400
Invalid model format → check model exists in /v1/models/<kind>
- 503
All accounts unavailable → wait retry-after or add another provider account