Generor API-Dokumentation

Erstelle mit über 93 KI-Generatoren — Text, Bild, Video, Audio und mehr.

Basis-URL v1
https://generor.com/api/v1

Eine einheitliche REST-API zum Erstellen, Durchsuchen und Verwalten von KI-Inhalten. Alle Anfragen verwenden JSON. Authentifiziere dich mit einem Bearer-Token.

Authentifizierung

Authentifizieren Sie sich mit einem Bearer-Token im Authorization-Header:

curl https://generor.com/api/v1/users/me \
  -H "Authorization: Bearer gnr_live_your_api_key_here"

API-Keys beginnen mit gnr_live_, gefolgt von 40 Hex-Zeichen. Erstelle Keys über die API-Keys-Endpunkt oder deine Kontoeinstellungen.

Einige Endpunkte (Durchsuchen von Generatoren, öffentlichen Kreationen, Modellen) funktionieren ohne Authentifizierung. Mit AUTH markierte Endpunkte erfordern einen gültigen API-Schlüssel.

Geltungsbereiche

API-Keys können eingeschränkt werden, um den Zugriff zu begrenzen:

GeltungsbereichErlaubt
readGET-Anfragen an alle Endpunkte
writePOST-, PATCH-, DELETE-Operationen (Kommentare, Bewertungen, Profilaktualisierungen usw.)
generateInhaltsgenerierung (kostet Credits)

Schlüssel ohne angegebene Scopes haben vollen Zugriff.

Ratenbegrenzungen

Die Limits gelten pro API-Schlüssel. Jede Antwort enthält Rate-Limit-Header:

X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
StufePro MinutePro StundePro Tag
free305005,000
basic602,00020,000
pro1205,00050,000
enterprise30020,000200,000

Nicht authentifizierte Anfragen sind auf 15/Minute pro IP begrenzt. Bei Drosselung erhältst du eine 429-Antwort mit einem Retry-After-Header.

Antwortformat

Alle Antworten verwenden einen einheitlichen JSON-Umschlag:

Erfolg

{
  "success": true,
  "data": { ... },
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 142,
    "total_pages": 8,
    "has_next": true,
    "has_prev": false
  }
}

Fehler

{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Creation not found",
    "status": 404
  }
}

Seitennummerierung

List-Endpunkte unterstützen Paginierung über Query-Parameter:

ParameterStandardBeschreibung
page1Seitennummer (1-basiert)
per_page20Einträge pro Seite (max. 100)
sortnewestSortierreihenfolge: newest, oldest

Generatoren

GET /generators

Listet alle verfügbaren Generatoren auf.

curl https://generor.com/api/v1/generators

Abfrageparameter: status (active, development, all)

Antwort: Array von Generatoren mit Slug, Titel, Beschreibung, Symbol und ähnlichen Generatoren.

GET /generators/{slug}

Detaillierte Informationen zu einem bestimmten Generator abrufen.

curl https://generor.com/api/v1/generators/image

GET /generators/{slug}/creations

Durchsuche öffentliche Kreationen für einen Generator. Unterstützt Paginierung.

curl "https://generor.com/api/v1/generators/joke/creations?page=1&per_page=10"

POST /generators/{slug}/estimate

Zeigt die Credit-Kosten und die voraussichtliche Generierungszeit an, vorher /generate aufgerufen wird. Gleicher Body-Aufbau wie /generate — jedoch schreibgeschützt: es werden keine Credits berechnet und keine Kreation gespeichert. Dies ist genau dieselbe Zahl, die die UI neben dem Generieren-Button anzeigt.

curl -X POST https://generor.com/api/v1/generators/horoscope/estimate \
  -H "Content-Type: application/json" \
  -d '{
    "model_id": 37,
    "count": 5,
    "parameters": {
      "zodiac-sign": "aries",
      "horoscope-length": "long"
    }
  }'

Antwort:

{
  "success": true,
  "data": {
    "generator": "horoscope",
    "model_id": 37,
    "model_type": "text",
    "model_name": "Gemini 3.5 Flash",
    "credit_cost": {
      "total": 15,             // after bulk discount
      "per_item": 3,           // model base × length/quality multipliers
      "count": 5,
      "discount": 0,           // credits saved
      "discount_percent": 5    // % off applied (count% off, capped at 10%)
    },
    "time_estimate": {
      "seconds": 50,           // total wall-clock estimate
      "per_item": 10,
      "min_seconds": 8,
      "max_seconds": 14,
      "sample_count": 10,      // recent generations averaged
      "has_historical": true,
      "source": "historical"   // or "fallback" when sample_count < 3
    },
    "applied_parameters": {    // what the API actually used (schema-filtered)
      "zodiac-sign": "aries",
      "horoscope-length": "long",
      "model-text": "3",
      "horoscope-count": "5"
    }
  }
}

Offen für nicht authentifizierte Aufrufer – Preise/Zeiten sind öffentliche Informationen und entsprechen dem, was die öffentliche Generatorseite anzeigt.

Eingerastete Videolängen

Wenn du einen seconds-Wert übergibst, der nicht in den supported_durations des Modells enthalten ist, rastet die API auf den nächstgelegenen unterstützten Wert ein (bei Gleichstand auf den niedrigeren) und weist die Änderung in einem adjustments-Block aus. Die Credit-Kosten und die Zeitschätzung in derselben Antwort spiegeln den eingerasteten Wert wider — das, was /generate tatsächlich tun wird — nicht die ursprüngliche Anfrage.

{
  "success": true,
  "data": {
    "credit_cost": { "total": 30, ... },
    "time_estimate": { "seconds": 60, ... },
    "adjustments": {
      "seconds": {
        "requested": 3,
        "used": 5,
        "supported": [5, 6, 7, 8, 10, 12, 15],
        "reason": "snapped to nearest provider-supported duration"
      }
    }
  }
}

Wann du es verwenden solltest

  • Vorab-Kostenprüfung — bestätigen Sie, dass ein Nutzer sich die Generierung leisten kann, bevor abgerechnet wird.
  • Fortschritts-UI — speisen Sie time_estimate.seconds in Ihren Ladebalken ein, damit Nutzer wissen, wie lange sie warten müssen.
  • Parameter-Feinabstimmung — rufen Sie es auf, wann immer ein Nutzer ein Dropdown ändert; die Kosten werden aktualisiert, ohne dass eine Generierung ausgelöst wird.

Beziehung zu /generate/estimate ist ein separat, optional Aufruf. /generate gibt bereits die tatsächlichen credit_cost, die berechnet wurden, + credits_remaining im Nachhinein zurück. Wenn Sie also damit einverstanden sind, den aktuellen Preis zu zahlen, können Sie /estimate ganz überspringen.

Integrations-Prompt (beim Einrichten von Generor in deinen KI-Assistenten einfügen):
Use the Generor API at https://generor.com/api/v1.

Before calling POST /generators/{slug}/generate, call
POST /generators/{slug}/estimate with the same body to get back:
  - credit_cost.total (credits the next generate call will charge)
  - time_estimate.seconds (expected wall-clock duration)

Show both to the user, then call /generate when they confirm.
The /generate response includes the real credit_cost charged and
credits_remaining — use those to update the user's balance.

Discover each generator's tweakable fields with GET /generators/{slug}
and pass them under the `parameters` object on both /estimate and
/generate (keys match the dropdown IDs you see on the public page).

POST /generators/{slug}/generate AUTH

Erstelle Inhalte mit KI. Dies ist ein synchroner Aufruf — die Antwort wird zurückgegeben, wenn die Generierung abgeschlossen ist. Kostet Credits je nach gewähltem Modell. Die Textgenerierung dauert in der Regel 5-30 Sekunden, die Bildgenerierung 10-60 Sekunden, und die Videogenerierung kann mehrere Minuten dauern.

# Text generation (joke with GPT 5 Nano)
curl -X POST https://generor.com/api/v1/generators/joke/generate \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Tell me a joke about programming",
    "model_id": 37
  }'

# Image generation (Flux Schnell, square)
curl -X POST https://generor.com/api/v1/generators/image/generate \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A sunset over mountains",
    "model_id": 10003,
    "aspect_ratio": 1
  }'

# Image description (vision — Qwen VL Max, image-only input, prompt is optional)
curl -X POST https://generor.com/api/v1/generators/vision/generate \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model_id": 34,
    "image_url": "https://example.com/photo.jpg",
    "preference": "detailed"
  }'

# Video generation (Happy Horse 1.0 R2V — multi-reference, 6s, wide)
curl -X POST https://generor.com/api/v1/generators/video/generate \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "The character from [Image1] walks through the forest from [Image2]",
    "model_id": 20050,
    "aspect_ratio": "16:9",
    "seconds": 6,
    "reference_images": [
      "https://example.com/character.jpg",
      "https://example.com/forest.jpg"
    ]
  }'

# Video generation (Happy Horse Video Edit — natural-language edit of an existing clip)
curl -X POST https://generor.com/api/v1/generators/video/generate \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Replace the sky with a stormy sunset",
    "model_id": 20051,
    "video_url": "https://example.com/source.mp4",
    "seconds": 5
  }'

Anfrage-Body:

FeldTypErforderlichBeschreibung
promptstringJaDer Generierungs-Prompt (max. 10.000 Zeichen)
model_idintegerJaKI-Modell-ID. Text: 1-9999, Bild: 10001-19999, Video: 20001-29999. Siehe Modelle.
privacy_modeintegerNein0 = öffentlich (Standard), 1 = privat
team_idintegerNeinUnter einem Team erstellen
countintegerNeinAnzahl der Elemente (1-10, Standard 1)
languagestringNeinSprachcode für die Textgenerierung (z. B. "en-US", "nb-NO"). Standard: "auto"
temperaturefloatNeinLLM-Kreativität (nur Textmodelle, 0.0-2.0)
preferencestring/intNeinGeneratorspezifische Einstellung (z. B. Witztyp, Gedichtstil)
preference_twostring/intNeinGeneratorspezifische sekundäre Einstellung
aspect_ratioint or stringNeinAkzeptiert numerische IDs oder Verhältnis-/Namens-Zeichenketten. Bild: 1 / "1:1" / "square", 2 / "3:4" / "vertical", 3 / "4:3" / "horizontal", 4 / "16:9" / "wide", 5 / "9:16" / "tall". Video: 1 / "16:9" / "wide", 2 / "9:16" / "tall". Tipp: Verwende Verhältnis-Strings wie "16:9" und die API ordnet die korrekte ID für den Modelltyp zu.
image_urlstringNeinReferenz-Bild-URL für Image-to-Image, Stilübertragung oder Image-to-Video (I2V).
secondsintegerNeinVideolänge in Sekunden (nur Videomodelle). Jeder Anbieter akzeptiert nur eine bestimmte Auswahl — frage GET /models/video/{id} für supported_durations ab. Wenn du einen nicht unterstützten Wert übergibst, rundet die API ihn auf den nächstgelegenen unterstützten Wert und meldet die Anpassung in adjustments.seconds in der Antwort.
generate_audiobooleanNeinNative-Audio-Schalter für Veo 3.1 und Seedance 1.5 Pro (Video). Andere Videomodelle integrieren das Audioverhalten fest und ignorieren diese Einstellung.
ending_frame_urlstringNeinEndbild-Anker für Modelle, die die Steuerung von Start- und Endbild unterstützen (Veo 3.1, Wan 2.6 I2V, Seedance Pro Lite, Kling v3). Kombinieren Sie ihn mit image_url für nahtlose Übergänge oder Schleifen.
reference_imagesarray<string>NeinBis zu 9 Referenz-Bild-URLs. Unterstützt von: Veo 3.1 (max. 3), Seedance 2.0 (max. 9), Happy Horse R2V (max. 9), Happy Horse Video Edit (max. 5). Die Reihenfolge bleibt erhalten und wird dem Modell als [Image1] … [ImageN] bereitgestellt, wenn Prompts darauf verweisen.
reference_videosarray<string>NeinBis zu 3 Referenz-Video-URLs. Verwendet von Seedance 2.0 (Replicate) und Dreamina Seedance 2.0 (BytePlus direkt) für Bewegungs-/Stilkohärenz.
reference_audiostringNeinReferenz-Audio-URL für Musik-/Stimmkontinuität. Wird derzeit von Dreamina Seedance 2.0 verwendet (Modell 20060-20062, BytePlus direkt).
video_urlstringNeinQuell-Video-URL — erforderlich für Happy Horse Video Edit (Modell 20051) und verwendet von Dreamina Seedance 2.0 (20060-20062) für Video-Edit-/Video-Extend-Modi.
parametersobjectNeinGeneratorspezifische Felder — dieselben Dropdowns, die das Frontend bereitstellt, indiziert nach ihren DOM-IDs. Siehe Generator-Parameter unten. Unbekannte / ungültige Schlüssel werden stillschweigend verworfen.

Generator-Parameter

Der vollständige Satz anpassbarer Felder jedes Generators befindet sich in einem generatorspezifischen Schema (derselben Quelle, die die Dropdown-Menüs auf der Website und die URL-Vorbelegung nutzen). Übergeben Sie eines dieser Felder im parameters-Objekt einer Generierungsanfrage, um sie programmatisch zu steuern.

Rufe das Schema für einen beliebigen Generator unter GET /generators/{slug} ab — das parameters-Array in der Antwort listet jedes Feld mit seiner id, seinem type (enum, number oder model), seinen options (oder min/max), seinem default und seinen cost_multipliers auf.

# 1) Discover the parameters for the horoscope generator
curl https://generor.com/api/v1/generators/horoscope

# 2) Pass them on the generate call
curl -X POST https://generor.com/api/v1/generators/horoscope/generate \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Aries weekly reading",
    "model_id": 37,
    "parameters": {
      "zodiac-sign": "aries",
      "horoscope-timeframe": "weekly",
      "horoscope-tone": "mystical",
      "horoscope-length": "long",
      "horoscope-focus": "career"
    }
  }'

# Image example — every dropdown in the UI is a key here
curl -X POST https://generor.com/api/v1/generators/wallart/generate \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Calm mountain lake at dawn",
    "model_id": 10003,
    "parameters": {
      "wallart-type": "framed-print",
      "wallart-orientation": "landscape",
      "image-aspect-ratio": "4"
    }
  }'
Warum ein Discovery-Endpunkt? Die Plattform verfügt über mehr als 100 Generatoren, jeder mit seinen eigenen Einstellungen. Anstatt diese in der API-Spezifikation festzuschreiben, rufst du das Live-Schema für den Generator ab, für den du entwickelst, und die API spiegelt die Dropdown-Menüs, die du auf der öffentlichen Seite siehst, exakt wider.

Zusätzliche Felder zur Textgenerierung

Für Textgeneratoren (model_id 1-9999) werden diese Body-Felder der obersten Ebene bei Bedarf an den LLM-Endpunkt weitergeleitet:

FeldTypBeschreibung
user_textstringFreier Zusatztext (z. B. Quellinhalt zum Zusammenfassen / Umwandeln)
user_text_twostringSekundärer Zusatztext (verwendet von Generatoren mit zwei Texteingaben)
avoid_duplicatesbooleanDas Modell zu neuartigen Ausgaben über einen Batch hinweg neigen lassen
thinking_modestringFür Modelle mit Reasoning-Fähigkeit: off, on oder high
story_contextstringQuellgeschichte, die an story, story-part und storyboard übergeben wird, um markenkonforme Szenen zu schreiben
character_context / character_name / character_idstring / intCharakterkontinuität für Storyboards, Story-Teile und Folge-Kreationen
support_forintegerID der übergeordneten Kreation – verknüpft diese Generierung als untergeordnete / begleitende Kreation
modestringGeneratorspezifischer Modusumschalter (z. B. Spielphase)
model_speechintegerSprachmodell, das mit der Textausgabe kombiniert wird (verwendet für vorgelesene Horoskope, Podcasts usw.)
item_index / total_countintegerHinweise zur sequenziellen Generierung (verwendet beim Generieren von Elementen in Reihenfolge, z. B. Lösungsschritten)
translation_of / source_languageinteger / stringEine bestehende Erstellung übersetzen, statt von Grund auf neu zu generieren

Antwort (201 Created) — Beispiel für Textgenerator:

{
  "success": true,
  "data": {
    "generator": "joke",
    "model_id": 37,
    "model_type": "text",
    "model_name": "Gemini 3.5 Flash",
    "creations": [
      {
        "creation_id": 6144,
        "text": "Why do programmers prefer dark mode? Because light attracts bugs!",
        "illustration_desc": "a minimalist bug icon on a dark background"
      }
    ],
    "credit_cost": 1,
    "credit_cost_estimated": 1,
    "credits_remaining": 36024,
    "time_taken_seconds": 4.18
  }
}

Antwort (201 Created) — Beispiel für Bildgenerator:

{
  "success": true,
  "data": {
    "generator": "image",
    "model_id": 10003,
    "model_type": "image",
    "model_name": "black-forest-labs/flux-schnell",
    "creations": [
      {
        "creation_id": 6147,
        "image_url": "https://generor.com/users/2/img/image-6147.webp"
      }
    ],
    "credit_cost": 24,
    "credit_cost_estimated": 6,
    "credits_remaining": 35998,
    "time_taken_seconds": 23.7
  }
}

Eingerastete Videolängen — wenn die seconds des Aufrufers nicht in den supported_durations des Modells enthalten sind, rastet die API auf den nächstgelegenen unterstützten Wert ein, bevor sie den Anbieter aufruft, und fügt der Antwort einen adjustments.seconds-Block hinzu, der in der Struktur identisch mit dem auf /estimate ist. Dies verhindert, dass Anbieter nicht unterstützte Werte stillschweigend als Standard verwenden.

So funktionieren die Kostenfelder

  • credit_cost — der tatsächlich abgezogene tatsächlich-Betrag, berechnet als balance_before − balance_after. Dies ist die maßgebliche Quelle: Verwenden Sie sie für Protokollierung, Abrechnung und die Aktualisierung von Nutzerguthaben.
  • credit_cost_estimated — die vorab erstellte Katalogschätzung (dieselbe Zahl, die /estimate vorhergesagt hätte). Aus Gründen der Transparenz und Drift-Überwachung enthalten. Weicht häufig von credit_cost bei Video- / Pro-Sekunde- / Pro-Zeichen-Preisen ab, wo die tatsächliche Gebühr innerhalb des Provider-Aufrufs berechnet wird.
  • time_taken_seconds — tatsächliche Echtzeitdauer. Vergleichen Sie mit time_estimate.seconds aus /estimate, um die Vorhersage der historischen Zeit zu validieren.
Hinweis: Textkreationen geben generatorspezifische Felder zurück (z. B. text, illustration_desc bei Witzen; dish_name, ingredients bei Rezepten). Verwende GET /creations/{id}, um die vollständigen Kreationsdaten später abzurufen.

Kreationen

GET /creations AUTH

Listet Ihre eigenen Werke auf.

curl https://generor.com/api/v1/creations \
  -H "Authorization: Bearer gnr_live_..."

Abfrageparameter: generator (nach Slug filtern), page, per_page, sort

GET /creations/public

Durchsuche alle öffentlichen Kreationen über alle Generatoren hinweg.

curl "https://generor.com/api/v1/creations/public?generator=image&page=1"

GET /creations/search

Öffentliche Kreationen nach Prompt-Text durchsuchen.

curl "https://generor.com/api/v1/creations/search?q=sunset+mountain"

GET /creations/{id}

Eine einzelne Kreation mit allen Details, Bildern und generatorspezifischen Daten abrufen.

curl https://generor.com/api/v1/creations/12345

Öffentliche Kreationen sind für jeden zugänglich. Private Kreationen erfordern eine Authentifizierung als Eigentümer.

Die Antwort enthält:

{
  "success": true,
  "data": {
    "creation_id": 12345,
    "generator": "image",
    "user_id": 42,
    "username": "johndoe",
    "prompt": "A sunset over mountains",
    "created_at": "2026-02-20 12:00:00",
    "privacy_mode": 0,
    "type": "img",
    "license": 1,
    "images": [
      {
        "url": "/users/42/img/image-12345.png",
        "width": 1024,
        "height": 1024
      }
    ],
    "generator_data": { ... }
  }
}

GET /creations/{id}/status AUTH

Prüfe den Generierungsstatus einer Kreation (nützlich, wenn du Generierungsdatensätze verfolgst).

curl https://generor.com/api/v1/creations/12345/status \
  -H "Authorization: Bearer gnr_live_..."

Statuswerte: pending, generating, completed, failed, cancelled

PATCH /creations/{id} AUTH

Eine Erstellung aktualisieren, die dir gehört.

curl -X PATCH https://generor.com/api/v1/creations/12345 \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"privacy_mode": 1, "license": 2}'
FeldWerte
privacy_mode0 (öffentlich), 1 (privat)
license1 (Open GO-1.0), 2 (Exclusive GE-1.0)

DELETE /creations/{id} AUTH

Löschen Sie eine Ihnen gehörende Kreation (Soft-Delete).

curl -X DELETE https://generor.com/api/v1/creations/12345 \
  -H "Authorization: Bearer gnr_live_..."

Modelle

GET /models

Listet alle verfügbaren KI-Modelle gruppiert nach Typ auf.

curl https://generor.com/api/v1/models

GET /models/{type}

Listet Modelle für einen bestimmten Typ auf.

curl https://generor.com/api/v1/models/image

Gültige Typen: text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval

Antwort pro Modell:

{
  "id": 10001,
  "name": "Flux 1.1 Pro",
  "type": "image",
  "provider": "replicate",
  "description": "High-quality image generation...",
  "credit_cost": 80,
  "supports_img2img": true,
  "supports_aspect_ratio": true
}

Videomodelle fügen Sie zusätzlich die vollständige Provider-Capability-Struktur ein:

{
  "id": 20061,
  "name": "Dreamina Seedance 2.0 (720p)",
  "type": "video",
  "provider": "byteplus",
  "credit_cost": 6,

  // Duration constraints
  "supported_durations": [5, 6, 7, 8, 10, 12, 15],
  "default_duration": 8,

  // Audio toggle
  "supports_audio": true,
  "audio_cost_multiplier": 1,

  // End-frame anchoring (pass `ending_frame_url` on /generate)
  "supports_end_frame": true,

  // Resolution variants — same model at different qualities lives at
  // different model_ids. Switch quality by picking the matching id.
  "quality": "720p",
  "default_quality": "720p",
  "qualities": { "480p": 20060, "720p": 20061, "1080p": 20062 },
  "group_slug": "dreamina-seedance-2-direct",
  "group_name": "Dreamina Seedance 2.0",

  // Aspect ratios accepted on /generate
  "supports_aspect_ratio": true,
  "aspect_ratios": [
    { "id": 1, "ratio": "16:9", "label": "Wide" },
    { "id": 2, "ratio": "9:16", "label": "Tall" }
  ]
}

Bildmodelle die das Seitenverhältnis variieren, enthalten ein entsprechendes aspect_ratios-Array (die Bildseite hat 6 Einträge: quadratisch, vertikal, horizontal, breit, hoch, plus match_input_image für img2img-Modi).

So verwendest du diese Felder

  • supported_durations — übergeben Sie hier einen beliebigen Wert über seconds. Nicht unterstützte Werte rasten serverseitig ein und werden unter adjustments.seconds gemeldet.
  • qualities — Um die Auflösung zu wechseln, suchen Sie den model_id für die gewünschte Auflösung und übergeben Sie diesen als Ihren model_id. (Auflösungen sind eigenständige Modelle, kein Laufzeitparameter.)
  • supports_audio — Wenn true, können Sie "generate_audio": true an /generate übergeben. Wenn false, wird das Flag ignoriert.
  • supports_end_frame — Wenn true, können Sie image_url (Startbild) mit ending_frame_url kombinieren, um nahtlose Übergänge oder Schleifen zu erstellen.
  • aspect_ratios — übergeben Sie die id (Ganzzahl) oder das ratio (Zeichenkette) im Feld aspect_ratio bei /generate. Beide Formen funktionieren.
Modell-ID-Bereiche: Text (1-9999), Bild (10001-19999), Video (20001-29999), Sprache (30001-39999), Musik (40001-49999), Soundeffekte (50001-59999).

GET /models/{type}/{id}

Details und Preise eines bestimmten Modells abrufen.

curl https://generor.com/api/v1/models/image/10001

Nutzer

GET /users/me AUTH

Dein Profil, Credit-Guthaben und Statistiken abrufen.

curl https://generor.com/api/v1/users/me \
  -H "Authorization: Bearer gnr_live_..."

Antwort:

{
  "success": true,
  "data": {
    "user_id": 42,
    "username": "johndoe",
    "email": "john@example.com",
    "avatar": null,
    "bio": "I make things with AI",
    "website": "https://example.com",
    "joined": "2025-01-15 10:30:00",
    "credits": {
      "total": 1250,
      "paid": 1000,
      "free": 200,
      "earned": 50,
      "max": 250
    },
    "creation_count": 347,
    "follower_count": 12,
    "following_count": 5,
    "teams": [...]
  }
}

PATCH /users/me AUTH

Aktualisiere dein Profil.

curl -X PATCH https://generor.com/api/v1/users/me \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"bio": "Updated bio", "website": "https://example.com"}'

GET /users/{username}

Das öffentliche Profil eines Nutzers abrufen.

curl https://generor.com/api/v1/users/johndoe

GET /users/{username}/creations

Listet die öffentlichen Werke eines Benutzers auf. Unterstützt Paginierung.

GET /users/{username}/followers

Listet die Follower eines Benutzers auf. Unterstützt Paginierung.

GET /users/{username}/following

Listet auf, wem ein Benutzer folgt. Unterstützt Paginierung.

POST /users/{username}/follow AUTH

Einem Nutzer folgen.

curl -X POST https://generor.com/api/v1/users/johndoe/follow \
  -H "Authorization: Bearer gnr_live_..."

DELETE /users/{username}/follow AUTH

Einem Nutzer nicht mehr folgen.

GET /users/{username}/follow AUTH

Prüfe, ob du einem Nutzer folgst. Gibt {"following": true/false} zurück.

Teams

Alle Team-Endpunkte erfordern eine Authentifizierung.

GET /teams AUTH

Listet Ihre Teams auf.

POST /teams AUTH

Ein neues Team erstellen.

curl -X POST https://generor.com/api/v1/teams \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "My Creative Team"}'

GET /teams/{id} AUTH

Team-Details mit Mitgliederliste abrufen.

DELETE /teams/{id} AUTH

Ein Team verlassen.

POST /teams/{id}/members AUTH

Mitglied per Benutzername hinzufügen: {"username": "janedoe"}

DELETE /teams/{id}/members/{user_id} AUTH

Ein Teammitglied entfernen (nur Eigentümer).

POST /teams/join/{invite_code} AUTH

Tritt einem Team über einen Einladungscode bei.

POST /teams/{id}/invite AUTH

Einladungscode neu generieren (nur Eigentümer).

GET /teams/{id}/creations AUTH

Listet Team-Werke auf. Unterstützt Paginierung.

Kommentare

GET /creations/{id}/comments

Listet Kommentare zu einem Werk auf. Unterstützt Paginierung.

curl https://generor.com/api/v1/creations/12345/comments

POST /creations/{id}/comments AUTH

Kommentar hinzufügen.

curl -X POST https://generor.com/api/v1/creations/12345/comments \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"text": "Great creation!", "parent_id": null}'

DELETE /comments/{id} AUTH

Löschen Sie Ihren eigenen Kommentar.

POST /comments/{id}/vote AUTH

Über einen Kommentar abstimmen: {"vote": "up"} oder {"vote": "down"}

Bewertungen

GET /creations/{id}/rating

Durchschnittliche Bewertung für eine Kreation abrufen.

// Response:
{"success": true, "data": {"creation_id": 12345, "average": 4.2, "count": 15}}

POST /creations/{id}/rating AUTH

Bewerte eine Kreation (1-5). Aktualisiert eine bestehende Bewertung, falls bereits bewertet.

curl -X POST https://generor.com/api/v1/creations/12345/rating \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"score": 5}'

Credits

Guthaben ist das Zahlungssystem für KI-Generierungen, angegeben in USD.

GET /credits/balance AUTH

Dein aktuelles Credit-Guthaben abrufen.

curl https://generor.com/api/v1/credits/balance \
  -H "Authorization: Bearer gnr_live_..."
// Response:
{
  "success": true,
  "data": {
    "total": 1250,
    "paid": 1000,
    "free": 200,
    "earned": 50,
    "max": 250
  }
}

GET /credits/transactions AUTH

Verlauf der Credit-Transaktionen abrufen.

curl "https://generor.com/api/v1/credits/transactions?type=spend&page=1" \
  -H "Authorization: Bearer gnr_live_..."

Abfrageparameter: type (spend, purchase, daily_bonus, weekly_bonus, signup_bonus, refund, gift_sent, gift_received), page, per_page

Feed

GET /feed AUTH

Öffentliche Kreationen von Nutzern abrufen, denen du folgst.

curl "https://generor.com/api/v1/feed?generator=image&page=1" \
  -H "Authorization: Bearer gnr_live_..."

Abfrageparameter: generator (nach Slug filtern), page, per_page

API-Schlüssel

Verwalten Sie Ihre eigenen API-Schlüssel programmatisch. Alle Endpunkte erfordern eine Authentifizierung.

GET /api-keys AUTH

Listet Ihre API-Schlüssel auf (zeigt das Präfix, nicht den vollständigen Schlüssel).

POST /api-keys AUTH

Erstelle einen neuen API-Schlüssel. Der vollständige Schlüssel wird in der Antwort nur einmal angezeigt.

curl -X POST https://generor.com/api/v1/api-keys \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "My App", "scopes": ["read", "generate"]}'
// Response (201):
{
  "success": true,
  "data": {
    "key_id": 1,
    "api_key": "gnr_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0",
    "prefix": "gnr_live_a1b2c3d4",
    "name": "My App",
    "scopes": ["read", "generate"],
    "message": "Save this API key now. It will not be shown again."
  }
}

Maximal 10 aktive Schlüssel pro Konto.

DELETE /api-keys/{id} AUTH

Einen API-Schlüssel widerrufen (deaktiviert ihn sofort).

Fehlercodes

CodeHTTP-StatusBeschreibung
UNAUTHORIZED401Fehlender oder ungültiger API-Schlüssel
FORBIDDEN403Gültiger Schlüssel, aber unzureichende Berechtigungen oder Geltungsbereich
NOT_FOUND404Ressource existiert nicht
METHOD_NOT_ALLOWED405HTTP-Methode für diesen Endpunkt nicht unterstützt
VALIDATION_ERROR400Ungültige Eingabeparameter
INSUFFICIENT_CREDITS402Nicht genügend Credits für die Generierung
RATE_LIMIT_EXCEEDED429Zu viele Anfragen, prüfe den Retry-After-Header
SERVER_ERROR500Interner Serverfehler