Dokumentation

Schnellstart

Ein Schlüssel, ein Anfrageformat, jedes Bild- und Videomodell. Einen Job absenden, abfragen, die Datei erhalten.

LiveJedes Modell auf der Modellseite läuft über diesen Endpunkt. Bilder und Video, ein Anfrageformat; die Optionen und Preise jedes Modells stehen in /data/models.json.
NeuAuch Sprachmodelle. GPT, Claude, Gemini, Grok, DeepSeek, Qwen und mehr über den OpenAI-kompatiblen POST /v1/chat/completions, pro Token abgerechnet aus demselben Guthaben: siehe Chat Completions.
Basis-URLhttps://api.revana.si/v1
AuthentifizierungAuthorization: Bearer <key>
AbsendenPOST /v1/generations
AbfragenGET /v1/generations/{id}
ModelleGET /v1/models (kein Schlüssel): jedes Modell, mit dem Sie gerade generieren können
GuthabenGET /v1/balance: was das Konto Ihres Schlüssels ausgeben kann
HochladenPOST /v1/uploads: ein Link für eine Referenzdatei auf Ihrem Computer
FormatJSON rein, JSON raus. Preise in USD; 100 Credits = $1.
Maschinenlesbar/openapi.json · /llms.txt

Authentifizierung

Erstellen Sie in Ihrem Konto einen Schlüssel und senden Sie ihn bei jeder Anfrage als Bearer-Token. Behalten Sie ihn auf Ihrem Server; liefern Sie ihn nie in einem Browser oder einer mobilen App aus.

Eine Generierung absenden

POSThttps://api.revana.si/v1/generations

Senden Sie die Modell-ID und ihr input. Die Antwort kommt sofort mit einer Generierungs-id und dem Status queued; die Arbeit geschieht im Hintergrund.

FeldTypBeschreibung
modelString, erforderlichEine Modell-ID von der Modellseite, z. B. seedance-2.5.
inputObjekt, erforderlichDer Prompt und die Einstellungen; siehe Eingabefelder. Unbekannte Felder werden abgelehnt.
max_cost_usdZahl, optionalDer höchste Betrag, den Sie für diese Generierung zahlen, bis zu 100 (der Standard). Routen, die darüber bepreist sind, werden übersprungen; bleibt keine übrig, antwortet die Anfrage mit 422 max_cost_exceeded.
max_wait_sGanzzahl, optionalRouten, bei denen länger als diese Zahl von Sekunden erwartet wird, werden übersprungen. Ist die Zeit abgelaufen, wird keine neue Route mehr versucht, aber eine bereits laufende darf zu Ende laufen (bis zu 40 Minuten) und wird berechnet, wenn sie liefert.
Idempotency-KeyHeader, optionalBis zu 200 Zeichen. Senden Sie denselben Schlüssel und Body noch einmal (nach einem Timeout oder einem 503), und Sie erhalten dieselbe Generierung zurück, keine zweite. Derselbe Schlüssel mit einem anderen Body ergibt 409 idempotency_conflict.

Das Ergebnis abrufen

GEThttps://api.revana.si/v1/generations/{id}

Lieber ein Endpunkt pro Modell und Webhooks bei Abschluss? Siehe die fal-kompatible Queue-API für Anfrage-IDs, Status- und Ergebnis-URLs, unterstützte fal-Aliase und Migrationsgrenzen.

Fragen Sie alle paar Sekunden ab, bis status den Wert succeeded oder failed hat, und laden Sie dann die Dateien in output.urls mit Ihrem Schlüssel herunter: GET /v1/generations/{id}/content für die erste und /content/2, /content/3 …, wenn ein Bildmodell mehrere zurückgibt. Bilder brauchen meist Sekunden; Video braucht je nach Modell und Länge von unter einer Minute bis zu mehreren Minuten.

Eine abgeschlossene Generierung:

Eingabefelder

Dieselben Namen werden über alle Modelle hinweg verwendet. Welche Felder und Werte jedes Modell nimmt und seine Standardwerte, steht pro Modell in /data/models.json (options, tasks). Unterstützt ein Modell ein Feld oder einen Wert nicht, wird die Anfrage mit 422 invalid_input abgelehnt, bevor etwas berechnet wird.

FeldTypVerwendet für
promptstringWas generiert werden soll. Erforderlich für Text-zu-Bild und Text-zu-Video.
image_urlString (URL)Startbild für Bild-zu-Video oder das zu bearbeitende Bild für Bild-zu-Bild.
end_image_urlString (URL)Letztes Bild, für Modelle mit erstem und letztem Bild.
image_urlsstring[]Referenzbilder, bis zum Limit des Modells.
resolutionstring720p, 1080p, 2K … eine der Auflösungen des Modells.
durationnumberVideolänge in Sekunden, eine der Längen des Modells.
aspect_ratiostring16:9, 9:16, 1:1...
audiobooleanTon zusammen mit dem Video erzeugen, wo das Modell dies unterstützt. Kann den Preis ändern.
negative_promptstringWas vermieden werden soll, bei Modellen, die das annehmen.
video_urlString (URL)Ein Clip zum Umwandeln, Verlängern oder Hochskalieren. Seine Länge wird gemessen und bei Modellen mit Abrechnung pro Sekunde berechnet.
audio_urlString (URL)Die Stimme oder der Ton, zu dem ein Modell für sprechende Avatare oder Lippensynchronisation animiert.
qualitystringEine Qualitätsstufe bei Modellen, die danach bepreist werden (z. B. low, medium, high).
seedintegerEin Seed, bei Modellen, die einen annehmen.

Seedance 2.5 verwendet standardmäßig 720p, 5 Sekunden (4–30), 16:9 und keinen Ton und nimmt außerdem:

FeldTypVerwendet für
video_urlString (URL)Ein Clip von 4–30 s zum Bearbeiten. Das Ergebnis behält seine Länge, lassen Sie duration also weg.
video_urlsstring[]Referenzclips, bis zu 10 und insgesamt 30 Sekunden. Ihre Sekunden werden zum Satz für Videoeingabe berechnet.
audio_urlsstring[]Referenzton, bis zu 10 und insgesamt 30 Sekunden.

image_url ist ein exaktes erstes Bild und kann daher nicht mit Referenzmedien kombiniert werden; verwenden Sie image_urls für eine lockerere visuelle Referenz. end_image_url braucht image_url. Medien müssen öffentliche https-URLs sein, die sich direkt herunterladen lassen.

Nemesis

nemesis inszeniert einen Clip mit Ihren eigenen Personen, Produkten und Orten neu: Bewegung, Timing und Kamera des Clips, gespielt von bis zu 8 Referenzbildern. Das Ergebnis behält Länge und Format des Clips. Es wird zum Satz einer Seedance-2.5-Bearbeitung plus $0.02 pro Sekunde bepreist ($0.08, $0.17 und $0.36 in 480p, 720p und 1080p), pro Sekunde des eingehenden Clips plus des ausgehenden Videos.

Es folgt dem Rezept von Scenario ALTER: Ihr Clip selbst wird bearbeitet, stumm, wobei ein Bild davon mit bereits vorgenommener Änderung als erste Referenz neu gezeichnet wird, und der eigene Ton des Clips wird danach wieder aufgelegt. Bei mehr als einer Person werden die Bilder von links nach rechts so zugeordnet, wie die Personen im ersten Bild stehen.

FeldTypVerwendet für
video_urlString (URL), erforderlichDer Clip von 4–30 s, der neu inszeniert werden soll.
image_urlsstring[], erforderlich1–8 Referenzbilder.
rolesstring[]Eines pro Bild: person (Standard), product, location oder look.
target_framebooleanVor dem Rendern wird das erste Bild des Clips mit bereits vorgenommener Änderung in derselben Pose, Größe und demselben Licht neu gezeichnet und als erste Referenz gesendet, sodass Haare, Gesicht und Kleidung Ihren Bildern treu bleiben. Standardmäßig an bei nemesis, aus bei nemesis-lite. Kostenlos.
guidestringnemesis-lite nur (nemesis bearbeitet immer den Clip selbst). clip (Standard mit Zielbild): folgt dem eigenen Bild des Clips. people (Standard ohne eines): Die Personen werden ersetzt und der Hintergrund bleibt. scene: Alles Sichtbare stammt aus den Referenzen und dem Prompt.
soundstringoriginal (Standard bei nemesis): Der eigene Ton des Clips wird wieder aufgelegt. none (Standard bei nemesis-lite): stumm.
face_meshbooleannemesis-lite nur. Verfolgt jedes Gesicht im Clip, damit das neue Gesicht seine Ausdrücke, Augen und Lippen behält. Standardmäßig an bei guide: "people", aus bei scene und clip. Senden Sie false, um es auszulassen. Nie im Ergebnis zu sehen.
resolutionstring480p, 720p (Standard) oder 1080p.
promptstringOptionale Anweisung, bis zu 5000 Zeichen.

Bei nemesis-lite wird ein Clip ohne Personen, gesendet mit guide: "people", mit invalid_input abgelehnt und nicht berechnet; senden Sie ihn mit scene oder clip.

Wie lange es dauert. Zuerst wird der Clip vorbereitet: Bei nemesis wird das Zielbild gezeichnet, etwa 15–40 Sekunden; bei nemesis-lite wird die Stimme getrennt und jedes Bild wird zur Tiefenvorlage, etwa 25 Sekunden bei einem Clip von 8 Sekunden und anderthalb Minuten bei einem von 30 Sekunden. Dann wird das Video gerendert, was den größten Teil der Wartezeit ausmacht: Ein Clip von 8 Sekunden in 480p dauert etwa 4–7 Minuten. Fragen Sie die Generierung ab, bis sie fertig ist.

Nemesis Lite

nemesis-lite nimmt dieselbe Eingabe wie nemesis und rendert sie mit Wan 3.0: günstiger, bei Gesichtern und feinen Details etwas weniger treu. Der Clip hat 2–15 s. Es wird zum Satz von Wan 3.0 plus $0.02 pro Sekunde bepreist ($0.07, $0.11 und $0.19 in 480p, 720p und 1080p), pro Sekunde des eingehenden Clips plus des ausgehenden Videos.

Generierungsobjekt

FeldTypBeschreibung
idstringGenerierungs-ID (gen_…), zum Abfragen.
objectstringImmer generation.
modelstringDas von Ihnen angeforderte Modell.
statusstringSiehe Status.
messagestringNur während ein Ergebnis bei einem Anbieter bestätigt wird: was gerade geschieht.
quoted_usdnumberDer Preis der günstigsten Route, die als erste versucht wird. Kann sie ihn nicht erzeugen und eine teurere Backup-Route schon, ist der berechnete Betrag der Preis dieser Route, bis zu reserved_usd.
reserved_usdnumberWas von Ihrem Guthaben reserviert wird: das Höchste, was diese Generierung kosten kann, falls eine teurere Backup-Route sie erzeugt, nachdem andere Routen versucht wurden. Die Differenz wird bei der Abrechnung freigegeben. Um nie mehr als quoted_usd zu zahlen, setzen Sie max_cost_usd darauf: Teurere Backups werden dann übersprungen.
outputObjekt | nullBei succeeded: urls, die Ergebnisdateien (ein Bildmodell kann mehrere zurückgeben), mit width und height; Video hat außerdem duration_s und has_audio. Laden Sie sie zeitnah herunter; Dateien laufen ab.
cost_usdZahl | nullWas berechnet wurde. Wird gesetzt, sobald die Generierung gelingt; 0, wenn sie fehlschlägt.
attemptsnumberVersuchte Routen, einschließlich Fallbacks. Nur die erfolgreiche wird berechnet.
errorObjekt | nullBei failed: code, message und retryable; eine inhaltliche Ablehnung hat außerdem reason. Siehe warum eine Generierung fehlgeschlagen ist.
created_at, completed_atstringZeitstempel nach ISO 8601.

Status

StatusBedeutung
queuedAngenommen, wartet auf eine Route.
runningWird generiert. Schlägt eine Route fehl, bleibt der Job running, während er zur nächsten wechselt, und solange ein Ergebnis bestätigt wird (siehe message).
succeededFertig. output.urls enthält die Dateien und cost_usd das, was Sie bezahlt haben.
failedJede Route ist fehlgeschlagen oder die Eingabe wurde abgelehnt. Es wird nichts berechnet.

Abrechnung

  • Sie zahlen mit vorausbezahlten Credits, 100 pro Dollar, gekauft in Paketen von $10 bis $5.000. Jeder Preis ist eine ganze Zahl von Credits.
  • Beim Absenden wird reserved_usd von Ihrem Guthaben reserviert. Schlägt die Generierung fehl, wird alles freigegeben.
  • Berechnet wird nur, wenn die Generierung gelingt, zum genannten Preis der Route, die sie erzeugt hat. Meist ist das die erste Route zu quoted_usd. Muss ein Backup sie erzeugen, kann sie mehr kosten: den Preis dieser Route oder, wenn eine zuvor versuchte Route von ihrem Lieferanten abgerechnet wurde, was diese Versuche kosten plus 10 %, je nachdem, was höher ist. Nie über reserved_usd.
  • Es gibt kein monatliches Kontingent und kein Limit pro Minute: Ihr Guthaben und max_cost_usd sind die Grenze.
  • Der Preis jedes Modells steht auf seiner Seite und in der Preistabelle.

Guthaben

GEThttps://api.revana.si/v1/balance

Das Konto, zu dem Ihr Schlüssel gehört. Prüfen Sie es vor einem großen Stapel; es kostet nichts und zählt nicht auf die Generierungslimits.

FeldBedeutung
available_usdWas eine neue Generierung reservieren kann. Ein Absenden, dessen reserved_usd höher ist, erhält 402 insufficient_credits.
held_usdVon noch laufenden Generierungen reserviert. Was sie nicht verbrauchen, kommt bei der Abrechnung zurück.
balance_usdVerfügbar plus reserviert.
spent_usdFür abgeschlossene Generierungen berechnet, insgesamt.
*_creditsDieselben Beträge in Credits (100 pro Dollar), so gerundet, dass verfügbar nie höher aussieht, als es ist.

Eine Referenzdatei hochladen

POSThttps://api.revana.si/v1/uploads

Referenzen werden als öffentliche https://-Links übergeben. Für eine Datei auf Ihrem eigenen Rechner fordern Sie einen Upload-Link an, senden die Bytes dorthin und verwenden den zurückgegebenen Link. Das ist kostenlos.

FeldBedeutung
upload_urlSenden Sie die Datei innerhalb einer Stunde mit PUT hierher, mit genau den Headern aus upload_headers (Typ und Größe). Alles andere wird abgelehnt.
urlDer Link der Datei auf api.revana.si, gültig bis expires_at (14 Tage). Er braucht keinen Schlüssel und leitet auf die Datei weiter, sodass alles, was einen Link abrufen kann, sie lesen kann. Verwenden Sie ihn als Referenz in POST /v1/generations. Die Datei wird kurz darauf gelöscht.
idupl_…

Bilder (image/*) bis 30 MB, Clips (video/*) bis 50 MB, Ton (audio/*) bis 15 MB. Eine größere oder andere Datei erhält 413 too_large oder 400 invalid_request.

Warum eine Generierung fehlgeschlagen ist

Eine Generierung mit failed hat error.code, eine message, die für die anfragende Person geschrieben ist, und retryable: true, wenn ein späteres erneutes Senden derselben Anfrage funktionieren kann, false, wenn die Anfrage selbst geändert werden muss. Eine fehlgeschlagene Generierung wird nie berechnet.

CodeWiederholbarWann
content_policynoDas Modell hat den Prompt oder die Medien abgelehnt oder das Ergebnis zurückgehalten. reason nennt die Regel: sexual (NSFW oder nicht jugendfreie Inhalte), minors (Kinder oder Jugendliche), copyright (urheberrechtlich geschütztes oder fremdes Material, Marken, Figuren), real_person (das Abbild einer realen oder berühmten Person) oder other, wenn das Modell keinen Grund nennt.
invalid_inputnoEine Referenz konnte nicht gelesen werden, ein Prompt nennt @Image2, obwohl ein Bild gesendet wurde, oder ein Wert, den das Modell ablehnt. Die Meldung sagt, welcher.
model_declinednoDas Modell hat in Worten geantwortet, statt das Bild oder Video zu erzeugen, meist weil der Prompt etwas verlangt, das es braucht und das nicht gesendet wurde. Lassen Sie den Prompt das Ergebnis selbst beschreiben.
reference_changednoEine Referenzdatei hat sich nach der Prüfung geändert. Senden Sie sie erneut.
max_cost_exceedednoDie einzige Route, die laufen konnte, kostet mehr als max_cost_usd.
model_busyyesJede Route für das Modell war ausgelastet. Versuchen Sie es in einer Minute erneut.
model_unavailableyesKeine Route für das Modell konnte den Job gerade annehmen.
timeoutyesKeine Route lieferte rechtzeitig ein Ergebnis, oder max_wait_s ist verstrichen.
all_routes_failedyesJede Route ist aus Gründen auf ihrer Seite fehlgeschlagen.

Fehler

Fehler verwenden HTTP-Statuscodes und einen JSON-Body: {"error": {"code": "...", "message": "..."}}.

HTTPCodeWann
400invalid_requestDer Body ist kein JSON, es fehlt model oder input, oder er enthält ein Feld, das die API nicht kennt.
401unauthorizedAPI-Schlüssel fehlt oder ist ungültig.
402insufficient_creditsIhr verfügbares Guthaben deckt reserved_usd nicht. Laden Sie auf und versuchen Sie es erneut.
403account_disabledDas Konto ist pausiert. Kontaktieren Sie den Support.
403generation_not_enabledIhr Schlüssel kann Preise abrufen, aber noch nicht generieren.
404not_foundAuf Ihrem Konto gibt es keine Generierung mit dieser ID.
409idempotency_conflictDer Idempotency-Key wurde bereits mit einem anderen Body verwendet.
409not_readyDie Datei wurde angefordert, bevor die Generierung gelungen war.
413body_too_largeDer Body ist größer als 1 MB. Senden Sie Medien als URLs.
422invalid_inputEin Feld, Wert oder eine Kombination, die das Modell nicht unterstützt, oder Medien, die nicht gelesen werden können. Es wird nichts berechnet.
422max_cost_exceededJede Route kostet mehr als max_cost_usd.
422model_not_availableKein Modell mit dieser ID in der API. IDs stehen auf der Modellseite.
429rate_limitedZu viele Anfragen in derselben Sekunde von einem Konto (ein Schutz vor außer Kontrolle geratenen Schleifen, kein Kontingent). Warten Sie die Retry-After Sekunden.
429concurrency_limitDas Konto hat bereits sein Maximum an laufenden Generierungen. Versuchen Sie es erneut, wenn eine fertig ist.
503busyEin Moment hoher Last. Versuchen Sie es nach Retry-After mit demselben Idempotency-Key erneut.
503model_unavailableGerade ist keine Route für dieses Modell verfügbar. Versuchen Sie es in Kürze erneut.
500server_errorAuf unserer Seite ist etwas schiefgegangen. Ein erneuter Versuch mit demselben Idempotency-Key ist sicher.

Modellliste

Jedes Modell, seine Optionen und Preise werden als JSON unter /data/models.json veröffentlicht, derselben Datei, aus der diese Website gerendert wird.