Generor API-Dokumentation
Erstelle mit über 93 KI-Generatoren — Text, Bild, Video, Audio und mehr.
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:
| Geltungsbereich | Erlaubt |
|---|---|
read | GET-Anfragen an alle Endpunkte |
write | POST-, PATCH-, DELETE-Operationen (Kommentare, Bewertungen, Profilaktualisierungen usw.) |
generate | Inhaltsgenerierung (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
| Stufe | Pro Minute | Pro Stunde | Pro Tag |
|---|---|---|---|
| free | 30 | 500 | 5,000 |
| basic | 60 | 2,000 | 20,000 |
| pro | 120 | 5,000 | 50,000 |
| enterprise | 300 | 20,000 | 200,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:
| Parameter | Standard | Beschreibung |
|---|---|---|
page | 1 | Seitennummer (1-basiert) |
per_page | 20 | Einträge pro Seite (max. 100) |
sort | newest | Sortierreihenfolge: 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.secondsin 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.
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:
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
prompt | string | Ja | Der Generierungs-Prompt (max. 10.000 Zeichen) |
model_id | integer | Ja | KI-Modell-ID. Text: 1-9999, Bild: 10001-19999, Video: 20001-29999. Siehe Modelle. |
privacy_mode | integer | Nein | 0 = öffentlich (Standard), 1 = privat |
team_id | integer | Nein | Unter einem Team erstellen |
count | integer | Nein | Anzahl der Elemente (1-10, Standard 1) |
language | string | Nein | Sprachcode für die Textgenerierung (z. B. "en-US", "nb-NO"). Standard: "auto" |
temperature | float | Nein | LLM-Kreativität (nur Textmodelle, 0.0-2.0) |
preference | string/int | Nein | Generatorspezifische Einstellung (z. B. Witztyp, Gedichtstil) |
preference_two | string/int | Nein | Generatorspezifische sekundäre Einstellung |
aspect_ratio | int or string | Nein | Akzeptiert 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_url | string | Nein | Referenz-Bild-URL für Image-to-Image, Stilübertragung oder Image-to-Video (I2V). |
seconds | integer | Nein | Videolä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_audio | boolean | Nein | Native-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_url | string | Nein | Endbild-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_images | array<string> | Nein | Bis 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_videos | array<string> | Nein | Bis zu 3 Referenz-Video-URLs. Verwendet von Seedance 2.0 (Replicate) und Dreamina Seedance 2.0 (BytePlus direkt) für Bewegungs-/Stilkohärenz. |
reference_audio | string | Nein | Referenz-Audio-URL für Musik-/Stimmkontinuität. Wird derzeit von Dreamina Seedance 2.0 verwendet (Modell 20060-20062, BytePlus direkt). |
video_url | string | Nein | Quell-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. |
parameters | object | Nein | Generatorspezifische 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"
}
}'
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:
| Feld | Typ | Beschreibung |
|---|---|---|
user_text | string | Freier Zusatztext (z. B. Quellinhalt zum Zusammenfassen / Umwandeln) |
user_text_two | string | Sekundärer Zusatztext (verwendet von Generatoren mit zwei Texteingaben) |
avoid_duplicates | boolean | Das Modell zu neuartigen Ausgaben über einen Batch hinweg neigen lassen |
thinking_mode | string | Für Modelle mit Reasoning-Fähigkeit: off, on oder high |
story_context | string | Quellgeschichte, die an story, story-part und storyboard übergeben wird, um markenkonforme Szenen zu schreiben |
character_context / character_name / character_id | string / int | Charakterkontinuität für Storyboards, Story-Teile und Folge-Kreationen |
support_for | integer | ID der übergeordneten Kreation – verknüpft diese Generierung als untergeordnete / begleitende Kreation |
mode | string | Generatorspezifischer Modusumschalter (z. B. Spielphase) |
model_speech | integer | Sprachmodell, das mit der Textausgabe kombiniert wird (verwendet für vorgelesene Horoskope, Podcasts usw.) |
item_index / total_count | integer | Hinweise zur sequenziellen Generierung (verwendet beim Generieren von Elementen in Reihenfolge, z. B. Lösungsschritten) |
translation_of / source_language | integer / string | Eine 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 alsbalance_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/estimatevorhergesagt hätte). Aus Gründen der Transparenz und Drift-Überwachung enthalten. Weicht häufig voncredit_costbei 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 mittime_estimate.secondsaus/estimate, um die Vorhersage der historischen Zeit zu validieren.
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}'
| Feld | Werte |
|---|---|
privacy_mode | 0 (öffentlich), 1 (privat) |
license | 1 (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 überseconds. Nicht unterstützte Werte rasten serverseitig ein und werden unteradjustments.secondsgemeldet.qualities— Um die Auflösung zu wechseln, suchen Sie denmodel_idfür die gewünschte Auflösung und übergeben Sie diesen als Ihrenmodel_id. (Auflösungen sind eigenständige Modelle, kein Laufzeitparameter.)supports_audio— Wenntrue, können Sie"generate_audio": truean/generateübergeben. Wennfalse, wird das Flag ignoriert.supports_end_frame— Wenntrue, können Sieimage_url(Startbild) mitending_frame_urlkombinieren, um nahtlose Übergänge oder Schleifen zu erstellen.aspect_ratios— übergeben Sie dieid(Ganzzahl) oder dasratio(Zeichenkette) im Feldaspect_ratiobei/generate. Beide Formen funktionieren.
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
| Code | HTTP-Status | Beschreibung |
|---|---|---|
UNAUTHORIZED | 401 | Fehlender oder ungültiger API-Schlüssel |
FORBIDDEN | 403 | Gültiger Schlüssel, aber unzureichende Berechtigungen oder Geltungsbereich |
NOT_FOUND | 404 | Ressource existiert nicht |
METHOD_NOT_ALLOWED | 405 | HTTP-Methode für diesen Endpunkt nicht unterstützt |
VALIDATION_ERROR | 400 | Ungültige Eingabeparameter |
INSUFFICIENT_CREDITS | 402 | Nicht genügend Credits für die Generierung |
RATE_LIMIT_EXCEEDED | 429 | Zu viele Anfragen, prüfe den Retry-After-Header |
SERVER_ERROR | 500 | Interner Serverfehler |
