Dla programistów
Modele AI jako endpointy REST.
Zadania wideo, obrazu i audio oraz czat zgodny z SDK OpenAI i Anthropic. Podpisane webhooki, serwer MCP dla agentów i cena za jednostkę w każdej odpowiedzi.
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "adaptive",
"resolution": "720p",
"duration": 5
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "seedance-2.5",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "adaptive",
"resolution": "720p",
"duration": 5
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "seedance-2.5",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "adaptive",
"resolution": "720p",
"duration": 5
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Zmieniasz base URL, SDK zostaje
SDK OpenAI i Anthropic, Claude Code, Cursor i Cline gadają z /v1 bez przepisywania kodu.
Wideo i obrazy w tle
POST /v1/generate oddaje id zadania. Odpytujesz je, czekasz do 120 s z ?wait= albo odbierasz podpisany webhook.
Koszt znany z góry
W odpowiedzi jest estimated_cost. Tyle blokuję, pobieram faktyczny koszt, a nieudane zadanie zwalnia całą blokadę.
Złotówki i faktura
Płacisz w zł brutto, fakturę VAT zaznaczasz przy doładowaniu, firma z UE z VAT-UE dostaje odwrotne obciążenie.
Klucz na projekt
Zakładasz kilka kluczy, każdemu dajesz miesięczny limit, a w panelu widzisz wydatki per model.
Jedno saldo na wszystko
Czat, obrazy, wideo i audio schodzą z tego samego przedpłaconego salda.
Modele czatu w narzędziach, których już używasz
Jeśli narzędzie pozwala wpisać base URL OpenAI albo Anthropic, zadziała tutaj: Claude Code, Cursor, Cline, Continue, LangChain, n8n czy Make.
Claude Code →from openai import OpenAI
client = OpenAI(base_url="https://kadraris.com/v1", api_key="sk-kd-...")
resp = client.chat.completions.create(
model="claude-opus-5.5",
messages=[{"role": "user", "content": "Podaj trzy pomysły na pierwsze ujęcie filmu o kawiarni."}],
)
print(resp.choices[0].message.content)curl https://kadraris.com/v1/chat/completions \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "claude-opus-5.5", "messages": [{"role": "user", "content": "Podaj trzy pomysły na pierwsze ujęcie filmu o kawiarni."}]}'import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://kadraris.com/v1", apiKey: process.env.KADRARIS_API_KEY });
const resp = await client.chat.completions.create({
model: "claude-opus-5.5",
messages: [{ role: "user", content: "Podaj trzy pomysły na pierwsze ujęcie filmu o kawiarni." }],
});
console.log(resp.choices[0].message.content);export ANTHROPIC_BASE_URL=https://kadraris.com
export ANTHROPIC_AUTH_TOKEN=sk-kd-...
export ANTHROPIC_MODEL=claude-opus-5.5
claude























