PL Log inOpen Studio
Preview version. Model catalog, prices, calculator and docs are live. Generation goes live at launch.

For developers

Models as REST endpoints.

Video, image and audio jobs plus chat compatible with the OpenAI and Anthropic SDKs. Signed webhooks, an MCP server for agents, a price per unit in every response.

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
  }
}'
01

Swap the base URL, keep your SDK

The OpenAI and Anthropic SDKs, Claude Code, Cursor and Cline talk to /v1 without code changes.

02

Media jobs run in the background

POST /v1/generate gives you a task id. Poll it, block for up to 120 s with ?wait=, or take a signed webhook.

03

Known cost up front

The response carries estimated_cost. That amount is held, you pay the actual cost, and a failed task releases the full hold.

04

Backup routes

Some models have more than one route. When one fails before the job starts, the next one takes it.

05

Keys for each project

Create several keys, give each a monthly limit and see spend per model in the dashboard.

06

One balance across types

Chat, images, video and audio draw from the same prepaid balance.

Chat models in the tools you already use

If a tool accepts an OpenAI or Anthropic base URL, it works here: Claude Code, Cursor, Cline, Continue, LangChain, n8n or 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": "Suggest three opening shots for a short film about a cafe."}],
)
print(resp.choices[0].message.content)