Developer API
Smooth's models behind one OpenAI-compatible API. One key, pay in Rupiah (QRIS) or crypto, and use it from any SDK, tool or from Smooth Agent.
Get a key at console.smooth.family: sign in, open API keys, create one, and top up your balance with QRIS or crypto. The console shows usage per day and per model.
Models
| Model | Best for |
|---|---|
smooth-flash | Fast and low cost: chat, extraction, classification, tool calls |
smooth-pro | The smart all-rounder: long documents, analysis, coding, agents |
smooth-ultra | The most capable: hard reasoning and the toughest tasks |
Prices per million tokens are listed in the console. You only pay for what you use, from a prepaid balance.
Base URL
text
https://api.smooth.family/v1The API speaks the OpenAI Chat Completions format, so the official OpenAI SDKs and most tools work by changing the base URL and key. Streaming and tool calling are supported.
Examples
curl
curl https://api.smooth.family/v1/chat/completions \
-H "Authorization: Bearer $SMOOTH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "smooth-flash", "messages": [{"role": "user", "content": "Hello!"}]}'Python (openai SDK)
from openai import OpenAI
client = OpenAI(base_url="https://api.smooth.family/v1", api_key="YOUR_SMOOTH_API_KEY")
reply = client.chat.completions.create(
model="smooth-pro",
messages=[{"role": "user", "content": "Summarise this in 3 bullets: ..."}],
)
print(reply.choices[0].message.content)Node.js (openai SDK)
import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://api.smooth.family/v1', apiKey: process.env.SMOOTH_API_KEY });
const stream = await client.chat.completions.create({
model: 'smooth-flash',
messages: [{ role: 'user', content: 'Write a short poem about Jakarta rain' }],
stream: true,
});
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content || '');Use it in Smooth Agent
config.toml
[providers.main]
provider = "smooth-router"
base_url = "https://api.smooth.family/v1"
model = "smooth-pro"
key_env = "SMOOTH_API_KEY"Errors and limits
| Status | Meaning |
|---|---|
401 | Missing or wrong API key |
402 | Balance is empty: top up in the console |
429 | Too many requests for your plan: retry after a moment |
5xx | Temporary problem: retry with backoff |
Last updated: