# Revana > One API key for image and video models. Submit a generation with POST /v1/generations, poll GET /v1/generations/{id}, download output.urls. Prepaid credits (100 credits = $1); only the route that succeeds is charged. Every model listed in /data/models.json runs on /v1/generations with the same request shape, Seedance 2.5 (`seedance-2.5`) included. Each model's fields, allowed values, defaults and prices are in that file; a value a model does not offer answers `422 invalid_input` and nothing is charged. ## API - Base URL: https://api.revana.si/v1 - Auth: `Authorization: Bearer ` (create keys at https://revana.si/dashboard). Keep keys server-side. - Submit: `POST /v1/generations` with `{"model": "seedance-2.5", "input": {"prompt": "..."}, "max_cost_usd": 5}`. Optional `max_wait_s`: routes expected to take longer are skipped (once it passes no new route is tried; one already running may finish, up to 40 minutes, and is charged if it delivers). Optional header `Idempotency-Key` (up to 200 chars): resending the same key and body returns the same generation. - Models: `GET /v1/models` (no key) lists every model you can generate with right now, with options and prices. - Poll: `GET /v1/generations/{id}` every few seconds until `status` is `succeeded` or `failed`. A generation still being confirmed shows `running` with a `message`. - Download: `GET /v1/generations/{id}/content` with the same key (redirects to a short-lived file URL). Picture models can return several files: `output.urls` lists them, and the second is `/content/2`, the third `/content/3`. - Generation object: `id` (gen_...), `object`, `model`, `status` (queued | running | succeeded | failed), `output` (`urls`, `width`, `height`; video also `duration_s`, `has_audio`), `quoted_usd`, `reserved_usd` (held while it runs), `cost_usd` (the charge once succeeded, 0 once failed), `attempts`, `error {code, message}`, `created_at`, `completed_at`. - Errors are `{"error": {"code": "...", "message": "..."}}`: 400 invalid_request, 401 unauthorized, 402 insufficient_credits, 403 account_disabled | generation_not_enabled, 404 not_found, 409 idempotency_conflict | not_ready, 413 body_too_large, 422 invalid_input | max_cost_exceeded | model_not_available (no model with that id), 429 rate_limited (per-second burst guard, honour Retry-After) | concurrency_limit, 503 restarting | busy | model_unavailable (retry with the same Idempotency-Key), 500 server_error. - No monthly quota or per-minute cap: the balance and max_cost_usd are the limit. ## Input (every model except seedance-2.5) - `prompt` (required unless the model only transforms media, e.g. an upscaler), `negative_prompt`, `resolution`, `aspect_ratio`, `duration` (seconds), `audio` (boolean), `quality`, `seed`: each one of the values the model lists in /data/models.json. - Media: `image_url` (start frame or picture to edit), `end_image_url` (last frame), `image_urls` (references, up to the model's max_input_images), `video_url` (a clip to transform, extend or upscale; its length is measured and may be billed), `audio_url` (the sound a talking-avatar or lip-sync model animates to). - Unknown fields, and fields a model does not take, are refused with 422 invalid_input. ## Seedance 2.5 input - `prompt` (required), `resolution` 480p | 720p (default) | 1080p, `duration` 4-30 whole seconds (default 5), `aspect_ratio` 16:9 (default) | 9:16 | 1:1 | 4:3 | 3:4 | 21:9 | adaptive, `audio` boolean (default false). - `image_url`: exact first frame; `end_image_url`: last frame (needs image_url). image_url cannot be combined with reference media. - `image_urls`: up to 30 reference images. `video_urls`: up to 10 reference clips, 30 s in all (billed at the video-input rate). `audio_urls`: up to 10 reference sounds, 30 s in all. - `video_url`: a 4-30 s clip to edit; leave out `duration`, the result keeps the clip's length. - Media must be public https URLs that download directly. ## Docs - [Quickstart and reference](https://revana.si/docs.html) - [OpenAPI 3.1 spec](https://revana.si/openapi.json) - [Models, options and prices (JSON)](https://revana.si/data/models.json) - [Pricing](https://revana.si/pricing.html) - [MCP server for AI agents](https://revana.si/mcp.html)