SDKsSDKs
SDKs
Call Nemo Router from Python, Node.js, Go, Java, PHP, Ruby, or plain cURL — one API key, the OpenAI REST shape, zero provider config.
Last updated
Nemo Router speaks the OpenAI REST shape, so any OpenAI-compatible client works without a custom SDK. Point the client at https://api.nemorouter.ai/v1, pass your sk-nemo-... key, and pick a model — guardrails, prompt templates, caching, rate-limits, and cost tracking all run server-side.
Pick your language
| Language | Client | Guide |
|---|---|---|
| Python | openai Python SDK | Setup → |
| Python (OpenAI-native) | drop-in openai base-URL swap | Setup → |
| Node.js | openai Node SDK | Setup → |
| Go | go-openai | Setup → |
| Java | OpenAI Java client | Setup → |
| PHP | openai-php/client | Setup → |
| Ruby | ruby-openai | Setup → |
| cURL | any HTTP client | Setup → |
The only three things every SDK needs
- Base URL —
https://api.nemorouter.ai/v1 - API key — your
sk-nemo-...virtual key, sent asAuthorization: Bearer sk-nemo-... - Model — any model string from the models catalog
curl https://api.nemorouter.ai/v1/chat/completions \
-H "Authorization: Bearer sk-nemo-..." \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-flash",
"messages": [{"role": "user", "content": "Hello!"}]
}'What you get for free
Without changing a line of SDK code:
- Guardrails — PII redaction, prompt injection blocking, keyword filters
- Caching — repeat prompts return instantly from cache
- Prompt templates — versioned, A/B-tested, injected server-side
- Rate limits — per-key / per-org RPM/TPM enforcement
- Cost tracking — every response carries
x-nemo-request-cost - Model fallbacks — switch providers by changing the model name string
Using a framework instead?
If you build with LangChain, LlamaIndex, Vercel AI, CrewAI, AutoGen, or Google ADK, see the Frameworks guides — same base-URL swap, no plugin required.
Was this page helpful?