generor

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

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 = public (default), 1 = private, 2 = team, 3 = unlisted.
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/{id}

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

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

Erfordert eine Anmeldung als Eigentümer der Kreation oder die Mitgliedschaft im Team, mit dem sie geteilt wurde.

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": 1,
    "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 (public), 1 (private), 3 (unlisted)
licenseVeraltet — wird aus Gründen der Abwärtskompatibilität akzeptiert, aber ignoriert. Ersteller behalten alle Rechte an ihren Kreationen; siehe /license.

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": "[email protected]",
    "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}/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

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

MCP setup

Connect an AI assistant to Generor with the local PHP MCP server. It supports generator discovery, models, cost estimates, generation, credit balance, and your creations.

Install the MCP package dependencies with Composer in the mcp directory. Requires PHP 8.2 or newer with the cURL and fileinfo extensions.

cd mcp
composer install --no-dev

Add Generor to your MCP client configuration. Replace the path with the location of your local checkout and use your own API key from account settings.

{
  "mcpServers": {
    "generor": {
      "command": "php",
      "args": ["/absolute/path/to/generor/mcp/server.php"],
      "env": {
        "GENEROR_API_KEY": "YOUR_GENEROR_API_KEY"
      }
    }
  }
}

Connect by URL

For MCP clients that support API-key headers, connect to the URL below and send your key in the Authorization header. Keep the trailing slash in the URL.

https://generor.com/mcp/
Authorization: Bearer YOUR_GENEROR_API_KEY

Hosted access uses API keys. Browser OAuth sign-in is not available yet. Keep your API key private; generation requires the generate scope and spends your account credits.

Estimate costs before generating. Long generations may take up to 16 minutes; configure your client timeout accordingly. After a timeout, check your creations before retrying because the generation may still complete and spend credits.