Multimodal & Agent Skills
kRouter's endpoints beyond chat: speech, transcription, embeddings, images, video, web search and fetch, plus Agent Skills that teach agents to use them.
Besides chat, kRouter serves speech, transcription, embeddings, images, video, web search and URL fetch, all in OpenAI-style shapes on the same port. Models are named the same way as for chat, <provider>/<model>, and each provider is connected once on the dashboard's Providers page.
The examples below send $KROUTER_KEY. From the machine kRouter runs on you can leave that header out; see the API reference.
Find the models
Each kind has its own model list, built from the providers you have connected:
curl http://localhost:20128/v1/models/tts # also: stt, embedding, image, video, webText to speech
Endpoint: POST /v1/audio/speech
Providers: OpenAI, Gemini, ElevenLabs, Deepgram, MiniMax (global and China), NVIDIA, OpenRouter, Hyperbolic, Fish Audio, Inworld, AWS Polly, Edge TTS, Google TTS, and the voices built into your operating system (Local Device). Edge TTS, Google TTS and Local Device need no account.
curl http://localhost:20128/v1/audio/speech \
-H "Authorization: Bearer $KROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "openai/tts-1/alloy", "input": "Hello from kRouter"}' \
--output speech.mp3For OpenAI the model is openai/<speech model>/<voice>, so openai/tts-1/alloy is the tts-1 model with the alloy voice. Other providers name models and voices their own way: GET /v1/audio/voices?provider=edge-tts lists voices for the providers that pick a voice by ID.
The reply is the audio file itself; add ?response_format=json to get it base64-encoded in JSON instead.
Speech to text
Endpoint: POST /v1/audio/transcriptions (multipart form, like OpenAI's)
Providers: OpenAI, Groq, Gemini, Deepgram, AssemblyAI and Hugging Face.
curl http://localhost:20128/v1/audio/transcriptions \
-H "Authorization: Bearer $KROUTER_KEY" \
-F "model=openai/whisper-1" \
-F "file=@meeting.mp3"Embeddings
Endpoint: POST /v1/embeddings
Providers: OpenAI, Gemini, Mistral, Voyage AI, Jina AI, NVIDIA, GitHub, OpenRouter, Together AI, Fireworks, Nebius and Vercel AI Gateway. You can also add your own OpenAI-compatible embedding endpoint as a provider.
curl http://localhost:20128/v1/embeddings \
-H "Authorization: Bearer $KROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "openai/text-embedding-3-small", "input": ["hello", "world"]}'Images
Endpoint: POST /v1/images/generations
Providers: OpenAI, Gemini, xAI, MiniMax, Codex (image models need ChatGPT Plus or higher), Antigravity, Cloudflare Workers AI, Vercel AI Gateway, SiliconFlow, NanoBanana API, Hugging Face, fal.ai, Stability AI, Black Forest Labs, Recraft, Topaz, Runway, and Stable Diffusion WebUI or ComfyUI running on your own machine.
Add ?response_format=binary to get the image bytes instead of JSON. GET /v1/models/info?id=<model> shows which sizes and options a model accepts.
Video
Endpoints: POST /v1/videos/generations, /v1/videos/edits and /v1/videos/extensions, then GET /v1/videos/{id} to collect the result.
Video works through xAI only (Grok Imagine). Combos cannot be used for video.
Web search and URL fetch
Endpoints: POST /v1/search and POST /v1/web/fetch
- Search: Tavily, Exa, Brave, Serper, SearXNG, Google Programmable Search, Linkup, SearchAPI, You.com and Perplexity, plus search through Gemini, xAI, Kimi, MiniMax, OpenAI and Vercel AI Gateway.
- Fetch (a URL as Markdown or text): Firecrawl, Jina Reader, Tavily and Exa.
curl http://localhost:20128/v1/search \
-H "Authorization: Bearer $KROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "tavily", "query": "kRouter open source", "max_results": 5}'
curl http://localhost:20128/v1/web/fetch \
-H "Authorization: Bearer $KROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "firecrawl", "url": "https://example.com", "format": "markdown"}'kRouter refuses a fetch URL that points at, or resolves to, a loopback, private, link-local or cloud-metadata address.
What these endpoints do not do
- PII redaction, when you turn it on, covers the chat endpoints only. Requests to the endpoints on this page are sent as they are.
- There is no music-generation endpoint and no image-understanding endpoint. To have a model read an image, send it in a chat request to a vision-capable model.
Agent Skills
Agent Skills are Markdown files that teach an AI agent how to call kRouter: the base URL, authentication, how to find models, and the request and response shapes for one capability. Give your agent the link and it can, for example, generate speech or search the web through your own kRouter.
| Skill | Covers |
|---|---|
krouter | Start here: setup, authentication, model discovery, links to the others |
krouter-chat | Chat and code generation, OpenAI or Anthropic format |
krouter-image | Image generation |
krouter-tts | Text to speech |
krouter-stt | Speech to text |
krouter-embeddings | Embeddings |
krouter-web-search | Web search |
krouter-web-fetch | A URL as Markdown |
The dashboard's Skills page has a copy button for each link. Paste it to your agent with a line such as:
Read this skill and use it: https://raw.githubusercontent.com/sifxprime/krouter/refs/heads/main/skills/krouter/SKILL.mdThe skills read the base URL from KROUTER_URL (for example http://localhost:20128, or your tunnel URL) and the key from KROUTER_KEY.
Where to go next
- API reference: chat endpoints and authentication
- Providers: connecting providers
- Security: what kRouter fetches on your behalf