Rewind.ai API
One key reaches every tool on Rewind.ai, billed in tokens.
How It Works
Create a key
Add tokens, then mint your sk-rewind- key
Call Any Endpoint
One endpoint covers chat, images, TTS, STT, music and translation
Pay in Tokens
One balance, and every tool draws from it.
Quick Start
# Chat — text in, text out (free self-hosted Qwen3.5-9B; pass any model id from /v1/models)
curl -X POST https://api.rewind.ai/v1/chat/completions/ \
-H "Authorization: Bearer sk-rewind-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [{"role": "user", "content": "Hello!"}],
"model": "qwen/qwen3.5-9b"
}'
# Generate an image (free FLUX.2 Klein 4B). Use any model id from /v1/models.
curl -X POST https://api.rewind.ai/v1/images/generations \
-H "Authorization: Bearer sk-rewind-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "A sunset over mountains", "model": "black-forest-labs/flux.2-klein-4b", "size": "1024x1024"}'
# Premium image (paid tokens). Full list at /v1/providers.
curl -X POST https://api.rewind.ai/v1/images/generations \
-H "Authorization: Bearer sk-rewind-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "A sunset over mountains", "model": "black-forest-labs/flux.2-pro", "size": "1024x1024"}'
# Generate a video, async (returns a job id; poll /v1/jobs/:id)
curl -X POST https://api.rewind.ai/v1/videos/generate-async \
-H "Authorization: Bearer sk-rewind-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "A cat running in slow motion", "duration": "5s", "aspectRatio": "16:9", "model": "bytedance/seedance-1-5-pro"}'
# Text to speech, model is fixed to Kokoro server-side; pass voice + speed
curl -X POST https://api.rewind.ai/v1/tts/ \
-H "Authorization: Bearer sk-rewind-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "Hello world", "voice": "af_heart", "speed": 1.0, "format": "mp3"}'
# Speech to text, multipart upload (file required)
curl -X POST https://api.rewind.ai/v1/stt/ \
-H "Authorization: Bearer sk-rewind-YOUR_KEY" \
-F [email protected] \
-F language=auto
# Translate, runs through /v1/chat/completions/ with a translate-style system prompt.
curl -X POST https://api.rewind.ai/v1/chat/completions/ \
-H "Authorization: Bearer sk-rewind-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen/qwen3.5-9b",
"messages": [
{"role": "system", "content": "Translate the user message to Spanish. Return only the translation."},
{"role": "user", "content": "Hello world"}
]
}'import requests
API_KEY = "sk-rewind-YOUR_KEY"
BASE = "https://api.rewind.ai"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
# Chat
r = requests.post(f"{BASE}/v1/chat/completions/", headers=HEADERS, json={
"messages": [{"role": "user", "content": "Hello!"}],
"model": "qwen/qwen3.5-9b" # or "openai/gpt-4o", "anthropic/claude-sonnet-4", etc.
})
print(r.json()["choices"][0]["message"]["content"])const API_KEY = "sk-rewind-YOUR_KEY";
const BASE = "https://api.rewind.ai";
const chat = await fetch(`${BASE}/v1/chat/completions/`, {
method: "POST",
headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
messages: [{ role: "user", content: "Hello!" }],
model: "qwen/qwen3.5-9b"
})
});
const data = await chat.json();
console.log(data.choices[0].message.content);