Skip to main content

Rewind.ai API

One key reaches every tool on Rewind.ai, billed in tokens.

How It Works

1
Create a key

Add tokens, then mint your sk-rewind- key

2
Call Any Endpoint

One endpoint covers chat, images, TTS, STT, music and translation

3
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);

Love Rewind.ai? Tell your friends!

Rate this page