Quickstart
One API key for text, image, video, music and speech models.
PineRouter gives you one API key for text, image, video, music and speech models. Requests are billed from your balance at the prices on the Models page.
Get a key
Sign in to the console and open API keys to create a key. It starts with sk-. Add credit in Wallet first; a request only starts when your balance covers it.
Make a call
The API follows OpenAI's format, so OpenAI's SDKs work with a different base URL: https://pinerouter.ai/v1.
curl https://pinerouter.ai/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gemini-3-8-flash", "messages": [{"role": "user", "content": "Say hello"}]}'from openai import OpenAI
client = OpenAI(base_url="https://pinerouter.ai/v1", api_key="sk-...")
r = client.chat.completions.create(
model="gemini-3-8-flash",
messages=[{"role": "user", "content": "Say hello"}],
)
print(r.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://pinerouter.ai/v1", apiKey: "sk-..." });
const r = await client.chat.completions.create({
model: "gemini-3-8-flash",
messages: [{ role: "user", content: "Say hello" }],
});
console.log(r.choices[0].message.content);Pick what you need
| You want | Use |
|---|---|
| Text, chat, code | Text: POST /v1/chat/completions or POST /v1/responses |
| Images | Images: POST /v1/images/generations |
| Video | Video: POST /v1/videos, then poll |
| Any model with all its settings (music, speech, avatars, upscaling, edits) | Jobs: POST /v1/jobs, then poll |
| The models inside Claude, ChatGPT, Cursor or Codex | MCP |
| A coding agent or chat app on your key | Apps |
No code?
The Studio in the console runs the same models from a form, and the Playground lets you chat with any text model.
