API-Referenz
API-Referenz
REST-API-Referenz: Generierungen absenden, abfragen und abbrechen, Modelle und Preise auflisten, Preise abfragen, Guthaben abrufen und Bilder, Videos sowie Audiodateien hochladen – mit Beispielen.
Die API ist in einige Ressourcen gegliedert: generations (die von Ihnen gestarteten Aufträge), Modelle (verfügbare Modelle und ihre Kosten), quotes, Ihr account und uploads. Alle Anfragen und Antworten sind JSON über HTTPS.
https://cheapergen.com/api/v1Authentifizieren Sie sich mit Authorization: Bearer cg_live_… (siehe Authentifizierung). Fehler verwenden das in Fehler beschriebene Format. Alle Endpunkte senden CORS-Header. Geben Sie Ihren Schlüssel niemals im Browser preis; nur öffentliche Endpunkte sind für clientseitige Aufrufe vorgesehen.
| Endpunkt | Beschreibung |
|---|---|
| POST/run/{endpoint} | Generierung starten |
| GET/generations/{id} | Generierung abrufen |
| GET/generations | Generierungen auflisten |
| POST/generations/{id}/cancel | In der Warteschlange befindliche Generierung abbrechen |
| DELETE/generations/{id} | Generierung und zugehörige Medien löschen |
| GET/models | Modelle und Preise auflisten |
| GET/models/{vendor}/{model} | Modell mit Eingabeschemas abrufen |
| POST/quote/{endpoint} | Eingabe bepreisen |
| GET/account | Guthaben, Bildguthaben und automatische Aufladung |
| GET/account/pricing | Ihr Tarif und Ihre individuellen Preise |
| POST/uploads | Eingabebild, -video oder -audiodatei hochladen |
| GET/webhooks/secret | Ihr Webhook-Signaturschlüssel |
Generierung starten#
/api/v1/run/{endpoint}API-Schlüssel erforderlichStartet eine asynchrone Generierung und gibt 202 Accepted mit einem Generierungsobjekt im Status queued zurück. Zu diesem Zeitpunkt wird der Preis von Ihrem Guthaben reserviert (siehe Abrechnung).
endpointstringerforderlich- Die Endpunkt-ID des Modells,
{vendor}/{model}/{task}– zum Beispielbytedance/seedance-2.0-fast/text-to-video. Alle IDs finden Sie auf der Seite Modelle.
…model inputsobjecterforderlich- Die Eingabefelder des Endpunkts, zum Beispiel
prompt,resolutionoderimage_url. Felder, Typen, Standardwerte und zulässige Werte jedes Modells sind auf der jeweiligen API-Seite dokumentiert und werden über Modell abrufen als JSON Schema bereitgestellt. Nicht bekannte Felder werden abgelehnt. webhook_urlstring (https URL)- Optional. Wir senden die abgeschlossene Generierung per POST an diese URL. Siehe Webhooks.
retentionstring- Optional. Aufbewahrungsdauer für Prompt, Eingaben und Ausgaben dieser Generierung:
immediate,1h,1d,7doder30d. Standardmäßig gilt die Einstellung Ihres Kontos (1d). Jedes Konto kann die Frist verkürzen;7dund30derfordern eine Aufbewahrungseinstellung für Enterprise-Konten. Siehe Datenaufbewahrung. allow_fallback_priceboolean- Optional; Standardwert
true. Wenn die übliche Kapazität für eine Anfrage nicht verfügbar ist, wird sie zu einem höheren Preis über alternative Kapazität ausgeführt: zum Preis aus Notfallpreis — höchstens zum offiziellen Modellpreis und niemals übermax_cost_usd. Das gilt beim Absenden (der Preis steht in der Antwort und in /quote) und auch bei einem späteren Wechsel, falls die Kapazität nach Annahme des Auftrags ausfällt (der Aufpreis wird dann reserviert;pricing.fallbackund Webhooks weisen darauf hin). Setzefalse, wenn du nie mehr als den angebotenen Preis zahlen möchtest. Ohne diese Einstellung kann ein angenommener Auftrag in einem Pro- oder Max-Tarif ebenfalls hochgestuft werden, höchstens bis zum Standardpreis. Dann erhältst du503 fallback_price_declined, statt einen höheren Preis zu zahlen, oder der Auftrag schlägt fehl und wird erstattet. max_cost_usdnumber- Optional. Höchstbetrag, den Sie für diese Generierung zu zahlen bereit sind, einschließlich Notfallpreis. Bei einem höheren Preis erhalten Sie
400 max_cost_exceededund es wird nichts berechnet; ein Auftrag wird später nie über diesen Betrag hinaus verschoben.
const resp = await fetch("https://cheapergen.com/api/v1/run/bytedance/seedance-2.0-fast/text-to-video", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CHEAPERGEN_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "Langsame Kamerafahrt auf einen Keramiker, der zur goldenen Stunde eine Vase formt, Staub im Licht, geringe Tiefenschärfe",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}),
});
const generation = await resp.json();{
"id": "gen_8c2QmX1nq0k4Lw7Z",
"object": "generation",
"model": "bytedance/seedance-2.0-fast",
"endpoint": "bytedance/seedance-2.0-fast/text-to-video",
"mode": "text-to-video",
"status": "queued",
"input": {
"prompt": "Langsame Kamerafahrt auf einen Keramiker, der zur goldenen Stunde eine Vase formt, Staub im Licht, geringe Tiefenschärfe",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5,
"generate_audio": true
},
"output": null,
"error": null,
"cost": {
"amount_usd": 0.4494,
"currency": "usd",
"estimated": true
},
"source": "api",
"created_at": "2026-10-15T09:21:04.512Z",
"started_at": null,
"completed_at": null,
"retention": "1d",
"expires_at": null,
"purged_at": null,
"urls": {
"get": "https://cheapergen.com/api/v1/generations/gen_8c2QmX1nq0k4Lw7Z",
"cancel": "https://cheapergen.com/api/v1/generations/gen_8c2QmX1nq0k4Lw7Z/cancel"
}
}Fehler: 400 invalid_request (Validierung), 401 unauthorized, 402 insufficient_balance, 404 not_found (unbekannter Endpunkt), 429 rate_limited (Anfragerate, oder Ihre Warteschlange wartender Generierungen ist voll), 503 model_unavailable, 503 pricing_unavailable (bitte nach einigen Sekunden erneut versuchen; es wurde nichts berechnet), 503 fallback_price_declined (nur der Ausweichpreis ist verfügbar und du hast allow_fallback_price: false gesendet), 400 max_cost_exceeded.
Generierung abrufen#
/api/v1/generations/{id}API-Schlüssel erforderlichGibt eine Generierung anhand ihrer ID zurück. Falls eine Statusprüfung ansteht, wird sie vor der Antwort durchgeführt. Um einen Auftrag bis zum Abschluss zu verfolgen, reicht es daher, diesen Endpunkt wiederholt abzufragen. Gibt 404 not_found bei unbekannten IDs und für Generierungen anderer Konten zurück.
curl https://cheapergen.com/api/v1/generations/gen_8c2QmX1nq0k4Lw7Z \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY"{
"id": "gen_8c2QmX1nq0k4Lw7Z",
"object": "generation",
"model": "bytedance/seedance-2.0-fast",
"endpoint": "bytedance/seedance-2.0-fast/text-to-video",
"mode": "text-to-video",
"status": "succeeded",
"input": {
"prompt": "Langsame Kamerafahrt auf einen Keramiker, der zur goldenen Stunde eine Vase formt, Staub im Licht, geringe Tiefenschärfe",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5,
"generate_audio": true
},
"output": {
"video": {
"url": "https://cdn.cheapergen.com/outputs/gen_8c2QmX1nq0k4Lw7Z.mp4",
"content_type": "video/mp4"
}
},
"error": null,
"cost": {
"amount_usd": 0.4494,
"currency": "usd",
"estimated": false
},
"source": "api",
"created_at": "2026-10-15T09:21:04.512Z",
"started_at": "2026-10-15T09:21:09.031Z",
"completed_at": "2026-10-15T09:22:31.870Z",
"retention": "1d",
"expires_at": "2026-10-16T09:22:31.870Z",
"purged_at": null
}Generierungen auflisten#
/api/v1/generationsAPI-Schlüssel erforderlichListet Ihre Generierungen absteigend nach Datum auf. Enthalten sind auch Aufträge aus dem Studio und den Playgrounds.
limitinteger- Seitengröße, 1–100. Standardwert
20. cursorstringnext_cursorvon der vorherigen Seite.statusstring- Nur Generierungen mit diesem Status zurückgeben:
queued,running,succeeded,failedodercanceled. modelstring- Nur Generierungen für diese Modell-ID zurückgeben, z. B.
bytedance/seedance-2.0-fast. sourcestring- Nur Generierungen aus
playground(Studio und Modellseiten),apiodermcp(KI-Agenten) zurückgeben.
curl "https://cheapergen.com/api/v1/generations?limit=2&status=succeeded" \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY"{
"object": "list",
"data": [
{
"id": "gen_8c2QmX1nq0k4Lw7Z",
"object": "generation",
"model": "bytedance/seedance-2.0-fast",
"endpoint": "bytedance/seedance-2.0-fast/text-to-video",
"mode": "text-to-video",
"status": "succeeded",
"input": {
"prompt": "Langsame Kamerafahrt auf einen Keramiker, der zur goldenen Stunde eine Vase formt, Staub im Licht, geringe Tiefenschärfe",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5,
"generate_audio": true
},
"output": {
"video": {
"url": "https://cdn.cheapergen.com/outputs/gen_8c2QmX1nq0k4Lw7Z.mp4",
"content_type": "video/mp4"
}
},
"error": null,
"cost": {
"amount_usd": 0.4494,
"currency": "usd",
"estimated": false
},
"source": "api",
"created_at": "2026-10-15T09:21:04.512Z",
"started_at": "2026-10-15T09:21:09.031Z",
"completed_at": "2026-10-15T09:22:31.870Z",
"retention": "1d",
"expires_at": "2026-10-16T09:22:31.870Z",
"purged_at": null
},
{
"id": "gen_3vYk2PqL9sTn0bWd",
"object": "generation",
"model": "bytedance/seedream-5.0-pro",
"endpoint": "bytedance/seedream-5.0-pro/text-to-image",
"mode": "text-to-image",
"status": "succeeded",
"input": {
"prompt": "Redaktionelles Produktfoto einer mattschwarzen Espressomaschine auf Travertin, weiches Fensterlicht, 85 mm",
"aspect_ratio": "1:1",
"size": "2K"
},
"output": {
"images": [
{
"url": "https://cdn.cheapergen.com/outputs/gen_8c2QmX1nq0k4Lw7Z.png",
"content_type": "image/png"
}
]
},
"error": null,
"cost": {
"amount_usd": 0.0665,
"currency": "usd",
"estimated": false
},
"source": "api",
"created_at": "2026-10-15T09:21:04.512Z",
"started_at": "2026-10-15T09:21:09.031Z",
"completed_at": "2026-10-15T09:22:31.870Z",
"retention": "1d",
"expires_at": "2026-10-16T09:22:31.870Z",
"purged_at": null
}
],
"next_cursor": "gen_3vYk2PqL9sTn0bWd"
}next_cursor ist null auf der letzten Seite.
Generierung abbrechen#
/api/v1/generations/{id}/cancelAPI-Schlüssel erforderlichBricht eine Generierung ab, die noch queued ist, und erstattet die Reservierung vollständig. Gibt die aktualisierte Generierung mit status: "canceled" zurück. Gibt 409 conflict zurück, wenn die Generierung bereits läuft oder abgeschlossen ist oder das Modell keine Aufträge in der Warteschlange abbrechen kann.
curl -X POST https://cheapergen.com/api/v1/generations/gen_8c2QmX1nq0k4Lw7Z/cancel \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY"{
"id": "gen_8c2QmX1nq0k4Lw7Z",
"object": "generation",
"model": "bytedance/seedance-2.0-fast",
"endpoint": "bytedance/seedance-2.0-fast/text-to-video",
"mode": "text-to-video",
"status": "canceled",
"input": {
"prompt": "Langsame Kamerafahrt auf einen Keramiker, der zur goldenen Stunde eine Vase formt, Staub im Licht, geringe Tiefenschärfe",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5,
"generate_audio": true
},
"output": null,
"error": null,
"cost": {
"amount_usd": 0,
"currency": "usd",
"estimated": false
},
"source": "api",
"created_at": "2026-10-15T09:21:04.512Z",
"started_at": null,
"completed_at": "2026-10-15T09:21:06.200Z",
"retention": "1d",
"expires_at": "2026-10-16T09:21:06.200Z",
"purged_at": null
}Generierung löschen#
/api/v1/generations/{id}API-Schlüssel erforderlichLöscht eine Generierung: Ausgabedateien, hochgeladene Eingaben, die keine andere Generierung nutzt, Prompt und Eingabe werden sofort entfernt. Die Generierung erscheint nicht mehr in Listen und GET gibt 404 zurück. Abrechnungsdaten (Belastung im Transaktionsverlauf und Nutzungswerte) bleiben erhalten. Eine Generierung, die noch queued ist, wird zuerst abgebrochen und der reservierte Betrag vollständig erstattet; lässt sie sich nicht mehr abbrechen (sie läuft, oder ihr Modell kann wartende Aufträge nicht abbrechen), gibt es 409 conflict zurück – warten Sie, bis sie fertig ist.
curl -X DELETE https://cheapergen.com/api/v1/generations/gen_8c2QmX1nq0k4Lw7Z \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY"{
"id": "gen_8c2QmX1nq0k4Lw7Z",
"object": "generation",
"deleted": true
}Das Generierungsobjekt#
idstring- Eindeutige ID mit Präfix
gen_. objectstring- Immer
"generation". modelstring- Modell-ID, z. B.
bytedance/seedance-2.0-fast. endpointstring- Endpunkt-ID, an die der Auftrag gesendet wurde, z. B.
bytedance/seedance-2.0-fast/text-to-video. modestring- Aufgabe:
text-to-video,image-to-video,reference-to-video,text-to-imageoderimage-edit. statusstringqueued→running→succeeded|failedodercanceled. Siehe Generierungen.inputobject- The validated input, with defaults filled in.
outputobject | null- Wird bei Erfolg festgelegt. Video:
{ "video": { "url", "content_type" } }. Bild:{ "images": [{ "url", "content_type" }] }. Ein Bild, das der Sicherheitsfilter ersetzt hat (es wird leer zurückgegeben), hat ebenfalls"safety_filtered": true; es wird wie jede andere Ausgabe abgerechnet. errorobject | null- Bei Fehler gesetzt:
{ "code", "message", "reason", "hint", "retryable", "refunded" }, außerdemparam(zu änderndes Feld) und, falls bekannt,detail(Wortlaut des Anbieters).reasonnennt den Grund – etwacontent_blocked,invalid_inputoderupstream_unavailable. Siehe Fehlerursachen. costobjectamount_usd,currency("usd") undestimated–true, solange der Betrag reserviert ist,falsenach der endgültigen Abrechnung. Fehlgeschlagene und abgebrochene Generierungen kosten0.pricingobjectcustom_price(Ihr individueller Preis: ein Vertragspreis oder Ihr Pro- oder Max-Tarif),volume_level(1 = Pro, 2 = Max, wenn der Tarif den Preis festlegt, sonstnull),standard_usd(die üblichen Kosten dieser Anfrage) undfallback:nulloder{ "active", "reason", "message", "standard_usd", "amount_usd" }, wenn sie zum Ausweichpreis ausgeführt wurde – höchstens zum offiziellen Preis, festgelegt durchallow_fallback_priceund begrenzt aufmax_cost_usd.sourcestring"api"oder"playground"(Studio und Modellseiten).created_atstring- ISO 8601 timestamp of submission.
started_atstring | null- When the model started generating.
completed_atstring | null- When the generation reached a final state.
retentionstring | null- API-Generierungen:
immediate,1h,1d,7doder30d.nullfür Studio-Generierungen, die bis zu ihrer Löschung durch Sie gespeichert bleiben. expires_atstring | null- Wann Inhalte (Prompt, Eingaben, Ausgaben, Medien) gelöscht werden. Wird beim Abschluss der Generierung festgelegt. Mit
immediatewird die Löschung auf 10 Minuten nach erstmaliger Bereitstellung des Ergebnisses verschoben. purged_atstring | null- Wird gesetzt, sobald die Inhalte gelöscht wurden. Danach ist
outputnull;inputbehält nur die preisbestimmenden Parameter, undcontent_expirederklärt den Grund. Kosten und Zeitstempel bleiben erhalten. urlsobject- Nur in der Antwort auf das Absenden:
getundcancel-URLs für diese Generierung.
Modelle auflisten#
/api/v1/modelsÖffentlich · keine AuthentifizierungGibt alle verfügbaren Modelle mit Endpunkten und aktuellen Preisen zurück. Preise gelten pro unit (second für Video oder image für Bilder); list_price_usd ist der Listenpreis, mit dem wir vergleichen, und discount_pct die prozentuale Ersparnis. list_price_source gibt die Preisart an: official (der eigene Listenpreis des Entwicklers) oder reference (ein anderer Vergleichspreis, angegeben von list_price_label — zum Beispiel fal API für ein Modell, dessen Entwickler keine internationale API anbietet).
curl https://cheapergen.com/api/v1/models{
"object": "list",
"data": [
{
"id": "bytedance/seedance-2.0-fast",
"object": "model",
"name": "Seedance 2.0 Fast",
"vendor": "ByteDance",
"category": "video",
"available": true,
"url": "https://cheapergen.com/models/bytedance/seedance-2.0-fast",
"endpoints": [
{
"id": "bytedance/seedance-2.0-fast/text-to-video",
"mode": "text-to-video",
"output": "video"
},
{
"id": "bytedance/seedance-2.0-fast/image-to-video",
"mode": "image-to-video",
"output": "video"
},
{
"id": "bytedance/seedance-2.0-fast/reference-to-video",
"mode": "reference-to-video",
"output": "video"
}
],
"pricing": {
"unit": "second",
"list_price_source": "official",
"list_price_label": "Official",
"tiers": [
{
"tier": "480p",
"price_usd": 0.050086,
"list_price_usd": 0.056246,
"discount_pct": 11
},
{
"tier": "720p",
"price_usd": 0.08988,
"list_price_usd": 0.12096,
"discount_pct": 26
}
]
},
"deprecation": null,
"upcoming_price_changes": []
}
]
}Zur Kürze ist hier nur ein Modell aufgeführt.
Modell abrufen#
/api/v1/models/{vendor}/{model}Öffentlich · keine AuthentifizierungGibt ein Modell mit JSON Schema für die Eingabe jedes Endpunkts zurück – nützlich für Formulare oder zum Prüfen von Anfragen vor dem Senden. Unbekannte Modelle ergeben 404 not_found.
curl https://cheapergen.com/api/v1/models/bytedance/seedream-5.0-pro{
"id": "bytedance/seedream-5.0-pro",
"object": "model",
"name": "Seedream 5.0 Pro",
"vendor": "ByteDance",
"category": "image",
"available": true,
"description": "ByteDance Seedream 5.0 Pro erstellt und bearbeitet fotorealistische, markengerechte Bilder bis 2K, mit präziser Bearbeitung mehrerer Bilder und genauer Textdarstellung.",
"url": "https://cheapergen.com/models/bytedance/seedream-5.0-pro",
"endpoints": [
{
"id": "bytedance/seedream-5.0-pro/text-to-image",
"mode": "text-to-image",
"label": "Text zu Bild",
"output": "image",
"input_schema": {
"type": "object",
"required": [
"prompt"
],
"properties": {
"prompt": {
"title": "Prompt",
"description": "Beschreiben Sie Motiv, Handlung, Kamerabewegung, Beleuchtung und Stil.",
"type": "string",
"maxLength": 5000
},
"aspect_ratio": {
"title": "Seitenverhältnis",
"description": "Ausgabeformat des Bildes.",
"type": "string",
"enum": [
"1:1",
"4:3",
"3:4",
"16:9",
"9:16",
"3:2",
"2:3",
"21:9"
],
"default": "1:1"
},
"size": {
"title": "Größe",
"description": "1K ≈ 1 Megapixel, 2K ≈ 4 Megapixel.",
"type": "string",
"enum": [
"1K",
"2K"
],
"default": "2K"
},
"seed": {
"title": "Seed",
"description": "Verwenden Sie denselben Seed und dieselben Einstellungen, um ein Ergebnis zu reproduzieren. Leer lassen für Zufallswerte.",
"type": "integer",
"minimum": 0,
"maximum": 2147483647
},
"webhook_url": {
"type": "string",
"format": "uri",
"title": "Webhook URL",
"description": "Optional. We POST the finished generation here (signed)."
}
},
"additionalProperties": false
}
}
],
"pricing": {
"unit": "image",
"notes": [],
"list_price_source": "official",
"list_price_label": "Official",
"tiers": [
{
"tier": "1K",
"detail": "≈1 MP",
"price_usd": 0.03325,
"list_price_usd": 0.045,
"discount_pct": 26
},
{
"tier": "2K",
"detail": "≈4 MP",
"price_usd": 0.0665,
"list_price_usd": 0.09,
"discount_pct": 26
}
]
},
"deprecation": null,
"upcoming_price_changes": []
}Zur Kürze ist hier nur ein Endpunkt aufgeführt.
Abkündigungen und Preisänderungen#
Wir kündigen Preiserhöhungen und Ausmusterungen im Voraus an: mindestens 14 Tage vor einer Preiserhöhung (bei abweichenden Vertragsbedingungen mit längerer Frist) und 14–30 Tage vor der Ausmusterung eines Modells. Betroffene Kunden, die es in den letzten 90 Tagen genutzt haben, informieren wir per E-Mail und im Änderungsprotokoll (RSS). Dieselben Informationen stehen in der API, damit Code und Agenten darauf reagieren können:
deprecationobject | null- Am Modelle auflisten und Modell abrufen. Solange die Ausmusterung geplant ist, werden gesetzt:
sunset_at(ISO 8601; ab dann geben Anfragen410 model_delistedzurück, ohne Berechnung),replacement(empfohlene Modell-IDs, beste zuerst),reason,announced_atundinfo_url. Andernfallsnull. upcoming_price_changesarray- Geplante, noch nicht wirksame Preisänderungen von Tarifstufen:
tier,effective_at,current_price_usdund der neue Preisprice_usdprounit. Anfragen voreffective_atwerden zum heutigen Preis abgerechnet. Nach dem Absenden wird eine Generierung nie neu bepreist. Leer, wenn keine Änderung geplant ist. warningsarray- Am Generierung starten und Preis abfragen, nur wenn es etwas mitzuteilen gibt:
model_deprecated(mitsunset_atundreplacement) oderprice_change_scheduledfür die Tarifstufe der Anfrage (miteffective_atund dem neuenprice_usd). Jedes Element enthält eine verständlichemessageund eineninfo_url.
curl https://cheapergen.com/api/v1/models/bytedance/seedance-2.0-fast{
"id": "bytedance/seedance-2.0-fast",
"object": "model",
"…": "…",
"deprecation": {
"sunset_at": "2026-11-20T00:00:00.000Z",
"replacement": [
"bytedance/seedance-2.0-fast"
],
"reason": "Der Entwickler stellt dieses Modell ein.",
"announced_at": "2026-10-21T09:30:00.000Z",
"info_url": "https://cheapergen.com/changelog#cm2x7k9"
},
"upcoming_price_changes": [
{
"tier": "720p",
"effective_at": "2026-11-04T00:00:00.000Z",
"unit": "second",
"current_price_usd": 0.08,
"price_usd": 0.092,
"change_pct": 15,
"info_url": "https://cheapergen.com/changelog#cm2x8a1"
}
]
}Deprecation- und Sunset-Header#
Solange die Ausmusterung eines Modells geplant ist, enthalten Antworten dazu – POST /run, POST /quote und GET /models/{vendor}/{model} – die Standard-Header. HTTP-Clients und API-Gateways können sie protokollieren oder einen Alarm auslösen:
Deprecation: @1792575000
Sunset: Fri, 20 Nov 2026 00:00:00 GMT
Link: <https://cheapergen.com/changelog#cm2x7k9>; rel="deprecation"; type="text/html", <https://cheapergen.com/changelog#cm2x7k9>; rel="sunset"; type="text/html"Deprecation (RFC 9745) gibt den Zeitpunkt der Ankündigung als Unix-Zeitstempel an; Sunset (RFC 8594) gibt an, ab wann Anfragen nicht mehr bedient werden. Zum Wechsel genügt es, dieselbe Anfrage an den Endpunkt des Ersatzmodells zu senden (prüfen Sie Eingabeschema auf abweichende Optionen).
list_models und get_model dieselben deprecation- und upcoming_price_changes-Felder sowie eine einzeilige notice. So können Agenten Nutzer informieren, bevor sie sich auf ein ausgemustertes Modell verlassen.Preis abfragen#
/api/v1/quote/{endpoint}Öffentlich · keine AuthentifizierungBepreist eine Eingabe, ohne sie auszuführen. Es werden nur preisrelevante Felder (Auflösung, Dauer, Größe, Bildanzahl usw.) gelesen. Inhaltsfelder wie prompt und Referenz-URLs werden ignoriert; fehlende Felder erhalten ihre Standardwerte. Wenn das Modell vorübergehend keine Generierungen annimmt, ist available auf false gesetzt.
Referenzvideos erhöhen die abgerechneten Sekunden. Um sie einzubeziehen, übergeben Sie reference_video_durations (Sekunden, ein Wert pro Clip) als Schätzwert. /run misst die tatsächlichen Dateien und reserviert den entsprechenden Preis. Siehe Abrechnung.
curl -X POST https://cheapergen.com/api/v1/quote/bytedance/seedance-2.0-fast/text-to-video \
-H "Content-Type: application/json" \
-d '{"aspect_ratio":"16:9","resolution":"720p","duration":5}'{
"amount_usd": 0.4494,
"list_usd": 0.6048,
"list_price_source": "official",
"list_price_label": "Official",
"discount_pct": 26,
"available": true,
"currency": "usd"
}Senden Sie Ihren API-Schlüssel, um Ihre individuellen Preise abzurufen. Falls Ihr Konto einen eigenen Preis hat – einen Vertragspreis oder einen Pro- oder Max-Tarif –, enthält das Angebot auch custom_price: true und standard_amount_usd (den üblichen Preis) sowie volume_level (1 oder 2), wenn der Pro-Tarif (1) oder Max-Tarif (2) ihn festgelegt hat.
Konto abrufen#
/api/v1/accountAPI-Schlüssel erforderlichGibt Ihr Guthaben und Ihre Einstellungen für automatische Aufladungen zurück. balance_usd ist sofort verfügbar; image_credit_usd ist ein Bildguthaben (z. B. ein Willkommensguthaben), das zuerst für Bildmodelle verwendet wird, niemals für Videos; reserved_usd ist der Betrag, der von Ihrem Guthaben für laufende Generierungen reserviert ist. Siehe Abrechnung & Guthaben.
curl https://cheapergen.com/api/v1/account \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY"{
"object": "account",
"email": "you@company.com",
"balance_usd": 42.5,
"image_credit_usd": 0,
"reserved_usd": 1.2,
"auto_topup": {
"enabled": true,
"threshold_usd": 10,
"amount_usd": 50
},
"limits": {
"unlimited": false,
"concurrent_generations": 20,
"in_flight": 3,
"requests_per_second": 10,
"burst": 20,
"tier": null
}
}limits enthält die API-Limits Ihres Kontos und wie viele seiner Generierungen gerade laufen; hat das Konto keine Limits, sind sie null, mit unlimited: true. Siehe Ratenbegrenzungen.
Ihre Preise abrufen#
/api/v1/account/pricingAPI-Schlüssel erforderlichGibt Ihren Monatstarif, das enthaltene Mengenlimit und Ihre individuellen Preise pro Stufe neben dem Standardpreis zurück. Ergänzen Sie ?model={vendor}/{model} für ein Modell. Pay as you go benötigt keinen Tarif: In diesem Fall ist plan gleich null und custom gleich false. Siehe Monatstarife.
custombooleantrue, wenn ein Pro- oder Max-Tarif oder ein Vertragspreis einen Ihrer Preise senkt.planobject | null- Ihr Monatstarif:
{ "id", "status" }, z. B.proundactive(starter,proodermax).nullohne Tarif. volumeobjectlevel: 1, wenn Pro aktiv ist, 2, wenn Max aktiv ist, andernfallsnull.rulesarray- Ihre Vertragspreise, aktuell und geplant:
scope,status,discount_pctoderunit_price_usd,starts_at,ends_atsowie ein lesbaresdescription. modelsarray- Jedes Modell, das Ihr Tarif oder eine Regel abdeckt:
id,name,unitundtiers– jeweils mitprice_usd(Ihrem Preis),standard_price_usd,custom,volume_level(wenn der Tarif den Preis festlegt) undavailable.
curl "https://cheapergen.com/api/v1/account/pricing?model=bytedance/seedance-2.0-fast" \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY"{
"object": "customer_pricing",
"custom": true,
"plan": {
"id": "pro",
"status": "active"
},
"volume": {
"level": 1
},
"rules": [],
"models": [
{
"id": "bytedance/seedance-2.0-fast",
"name": "Seedance 2.0 Fast",
"unit": "second",
"tiers": [
"…"
]
}
]
}Datei hochladen#
/api/v1/uploadsAPI-Schlüssel erforderlichLädt eine Datei hoch, die Sie als Eingabe-URL verwenden können – ein erstes Einzelbild, ein Referenzbild, ein Referenzvideo oder einen Referenz-Audioclip. Stattdessen können Sie auch eine beliebige öffentliche HTTPS-URL direkt übergeben.
| Art | Dateitypen | Max. Größe |
|---|---|---|
| Bild | PNG, JPEG, WebP, GIF | 20 MB |
| Video | MP4, MOV | 50 MB |
| Audio | MP3, WAV, M4A (Modelle akzeptieren derzeit MP3 oder WAV) | 15 MB |
Direkt-Upload (empfohlen)#
Senden Sie JSON mit filename, content_type und size der Datei in Byte. Sie erhalten eine kurzlebige upload_url. Senden Sie die Rohdaten genau an die zurückgegebene headers über PUT und verwenden Sie anschließend url als Eingabe. Die Datei wird direkt gespeichert; zusätzlich zu den oben genannten Größenbeschränkungen gibt es kein Anfragelimit. Die Upload-URL läuft nach 15 Minuten ab. size muss die genaue Dateigröße in Byte sein: Senden Sie per PUT genau so viele Byte mit Content-Length (kein chunked oder gestreamter Body). Alles andere beantwortet der Speicher mit 403.
curl -X POST https://cheapergen.com/api/v1/uploads \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filename":"choreo.mp4","content_type":"video/mp4","size":8421903}'{
"object": "upload",
"method": "PUT",
"upload_url": "https://storage.example.com/media/uploads/7f3k2m9q/0b8d2c5e1a7f4h6j9k3m.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&…",
"headers": {
"Content-Type": "video/mp4"
},
"url": "https://cdn.cheapergen.com/uploads/7f3k2m9q/0b8d2c5e1a7f4h6j9k3m.mp4",
"kind": "video",
"content_type": "video/mp4",
"bytes": 8421903,
"expires_at": "2026-10-15T09:36:04.000Z"
}curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: video/mp4" \
--data-binary @choreo.mp4Multipart-Upload#
Alternativ senden Sie multipart/form-data mit einem Feld file; wir speichern die Datei für Sie (201 Created mit url). Dabei werden die Daten über unsere API weitergeleitet, deren Anfragen auf etwa 4.5 MB begrenzt sind. Für größere Dateien verwenden Sie den Direkt-Upload. Ist dieser bei einer Bereitstellung nicht verfügbar, gibt die JSON-Anfrage 501 direct_upload_unavailable zurück; verwenden Sie dann Multipart-Upload.
curl -X POST https://cheapergen.com/api/v1/uploads \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY" \
-F "file=@first-frame.png"{
"object": "upload",
"url": "https://cdn.cheapergen.com/uploads/7f3k2m9q/0b8d2c5e1a7f4h6j9k3m.png",
"kind": "image",
"content_type": "image/png",
"bytes": 1834221
}Ein hochgeladenes Bild verwenden#
Übergeben Sie die zurückgegebene URL im Bildfeld eines Endpunkts zur Umwandlung von Bild zu Video oder zur Bildbearbeitung:
curl -X POST https://cheapergen.com/api/v1/run/bytedance/seedance-2.0-fast/image-to-video \
-H "Authorization: Bearer $CHEAPERGEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Die Kamera fährt näher heran, während sie sich umdreht und lächelt; ihr Haar bewegt sich im Wind",
"image_url": "https://cdn.cheapergen.com/uploads/7f3k2m9q/0b8d2c5e1a7f4h6j9k3m.png",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 5
}'Modellbezogene Referenzen
Jedes Modell hat eine eigene API-Seite mit Typ, Standardwert und zulässigen Werten für jedes Feld sowie Beispielen zum Kopieren. Beginnen Sie mit Modellliste.Ist etwas unklar oder fehlt etwas? Schreiben Sie an support@cheapergen.com – wir lesen jede Nachricht.