Generor API-documentatie
Bouw met meer dan 93 AI-generatoren — tekst, afbeelding, video, audio en meer.
Een uniforme REST API voor het genereren, bekijken en beheren van AI-content. Alle verzoeken gebruiken JSON. Authenticeer met een Bearer-token.
Authenticatie
Authenticeer met een Bearer-token in de Authorization-header:
curl https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_your_api_key_here"
API-sleutels beginnen met gnr_live_, gevolgd door 40 hex-tekens. Maak sleutels aan via de API Keys-endpoint of je accountinstellingen.
Sommige endpoints (generatoren, openbare creaties en modellen bekijken) werken zonder authenticatie. Endpoints gemarkeerd met AUTH vereisen een geldige API-sleutel.
Bereiken
API-sleutels kunnen worden beperkt om de toegang te begrenzen:
| Bereik | Staat toe |
|---|---|
read | GET-verzoeken naar alle eindpunten |
write | POST-, PATCH-, DELETE-bewerkingen (reacties, beoordelingen, profielupdates, enz.) |
generate | Inhoud genereren (kost credits) |
Sleutels zonder opgegeven scopes hebben volledige toegang.
Aanvraaglimieten
Limieten gelden per API-sleutel. Elke respons bevat rate limit-headers:
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
| Niveau | Per minuut | Per uur | Per dag |
|---|---|---|---|
| free | 30 | 500 | 5,000 |
| basic | 60 | 2,000 | 20,000 |
| pro | 120 | 5,000 | 50,000 |
| enterprise | 300 | 20,000 | 200,000 |
Niet-geauthenticeerde verzoeken zijn beperkt tot 15/minuut per IP. Bij snelheidsbeperking ontvang je een 429-respons met een Retry-After-header.
Reactieformaat
Alle reacties gebruiken een consistente JSON-envelop:
Geslaagd
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 142,
"total_pages": 8,
"has_next": true,
"has_prev": false
}
}
Fout
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Creation not found",
"status": 404
}
}
Paginering
Lijst-endpoints ondersteunen paginering via queryparameters:
| Parameter | Standaard | Beschrijving |
|---|---|---|
page | 1 | Paginanummer (vanaf 1) |
per_page | 20 | Items per pagina (max. 100) |
sort | newest | Sorteervolgorde: newest, oldest |
Generators
GET /generators
Toon alle beschikbare generatoren.
curl https://generor.com/api/v1/generators
Queryparameters: status (active, development, all)
Reactie: Array van generatoren met slug, titel, beschrijving, pictogram en vergelijkbare generatoren.
GET /generators/{slug}
Haal gedetailleerde informatie over een specifieke generator op.
curl https://generor.com/api/v1/generators/image
GET /generators/{slug}/creations
Blader door openbare creaties voor een generator. Ondersteunt paginering.
curl "https://generor.com/api/v1/generators/joke/creations?page=1&per_page=10"
POST /generators/{slug}/estimate
Bekijk de creditkosten en verwachte generatietijd vóór je /generate aanroept. Zelfde bodyvorm als /generate — maar alleen-lezen: geen credits in rekening gebracht, geen creatie weggeschreven. Dit is exact hetzelfde getal dat de UI naast de knop Genereren toont.
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"
}
}'
Reactie:
{
"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"
}
}
}
Open voor niet-geauthenticeerde aanroepen — prijzen/timing is openbare informatie en komt overeen met wat de openbare generatorpagina toont.
Vastgeklikte videoduren
Als je een seconds-waarde meegeeft die niet in de supported_durations van het model staat, springt de API naar de dichtstbijzijnde ondersteunde waarde (bij gelijke afstand naar de lagere) en toont de wijziging in een adjustments-blok. De creditkosten en tijdschatting in dezelfde respons weerspiegelen de aangepaste waarde — wat /generate daadwerkelijk zal doen — niet het oorspronkelijke verzoek.
{
"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"
}
}
}
}
Wanneer te gebruiken
- Voorafgaande kostencontrole — bevestig dat een gebruiker de generatie kan betalen voordat er kosten in rekening worden gebracht.
- Voortgangs-UI — voer
time_estimate.secondsin je laadbalk in zodat gebruikers weten hoelang ze moeten wachten. - Parameterafstemming — roep dit aan wanneer een gebruiker een dropdown wijzigt; de kosten worden bijgewerkt zonder dat er gegenereerd wordt.
Relatie tot /generate — /estimate is een apart, optioneel aanroep. /generate geeft achteraf al de werkelijke credit_cost terug die in rekening is gebracht + credits_remaining, dus als je tevreden bent met de actuele prijs, kun je /estimate volledig overslaan.
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
Genereer content met AI. Dit is een synchrone aanroep — de respons komt terug zodra de generatie voltooid is. Kost credits op basis van het gekozen model. Tekstgeneratie duurt doorgaans 5-30 seconden, afbeeldingsgeneratie 10-60 seconden en videogeneratie kan enkele minuten duren.
# 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
}'
Verzoekinhoud:
| Veld | Type | Vereist | Beschrijving |
|---|---|---|---|
prompt | string | Ja | De generatieprompt (max. 10.000 tekens) |
model_id | integer | Ja | AI-model-ID. Tekst: 1-9999, Afbeelding: 10001-19999, Video: 20001-29999. Zie Modellen. |
privacy_mode | integer | Nee | 0 = openbaar (standaard), 1 = privé |
team_id | integer | Nee | Maken onder een team |
count | integer | Nee | Aantal items (1-10, standaard 1) |
language | string | Nee | Taalcode voor tekstgeneratie (bijv. "en-US", "nb-NO"). Standaard: "auto" |
temperature | float | Nee | LLM-creativiteit (alleen tekstmodellen, 0.0-2.0) |
preference | string/int | Nee | Generatorspecifieke voorkeur (bijv. soort grap, gedichtstijl) |
preference_two | string/int | Nee | Generatorspecifieke secundaire voorkeur |
aspect_ratio | int or string | Nee | Accepteert numerieke ID's of verhoudings-/naamtekenreeksen. Afbeelding: 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". Tip: gebruik verhoudingsreeksen zoals "16:9" en de API koppelt deze aan de juiste ID voor het modeltype. |
image_url | string | Nee | URL van referentieafbeelding voor afbeelding-naar-afbeelding, stijloverdracht of afbeelding-naar-video (I2V). |
seconds | integer | Nee | Videoduur in seconden (alleen videomodellen). Elke aanbieder accepteert slechts een discrete set — bevraag GET /models/video/{id} voor supported_durations. Als je een niet-ondersteunde waarde doorgeeft, rondt de API deze af naar de dichtstbijzijnde ondersteunde waarde en meldt de aanpassing in adjustments.seconds in het antwoord. |
generate_audio | boolean | Nee | Native-audio schakelaar voor Veo 3.1 en Seedance 1.5 Pro (video). Andere videomodellen bakken audiogedrag in en negeren deze instelling. |
ending_frame_url | string | Nee | Eindframe-anker voor modellen die start- en eindframe-besturing ondersteunen (Veo 3.1, Wan 2.6 I2V, Seedance Pro Lite, Kling v3). Combineer met image_url voor naadloze overgangen of loops. |
reference_images | array<string> | Nee | Maximaal 9 referentiebeeld-URL's. Ondersteund door: Veo 3.1 (max 3), Seedance 2.0 (max 9), Happy Horse R2V (max 9), Happy Horse Video Edit (max 5). De volgorde blijft behouden en wordt aan het model getoond als [Image1] … [ImageN] wanneer prompts ernaar verwijzen. |
reference_videos | array<string> | Nee | Maximaal 3 referentievideo-URL's. Gebruikt door Seedance 2.0 (Replicate) en Dreamina Seedance 2.0 (BytePlus direct) voor beweging-/stijlcoherentie. |
reference_audio | string | Nee | Referentieaudio-URL voor continuïteit van muziek/stem. Momenteel gebruikt door Dreamina Seedance 2.0 (model 20060-20062, BytePlus direct). |
video_url | string | Nee | Bronvideo-URL — vereist door Happy Horse Video Edit (model 20051) en gebruikt door Dreamina Seedance 2.0 (20060-20062) voor video-edit / video-extend modi. |
parameters | object | Nee | Generatorspecifieke velden — dezelfde dropdowns die de frontend toont, geïndexeerd op hun DOM-ID's. Zie Generatorparameters hieronder. Onbekende / ongeldige sleutels worden stilzwijgend genegeerd. |
Generatorparameters
De volledige set instelbare velden van elke generator staat in een schema per generator (dezelfde bron die de dropdowns op de site en het vooraf invullen via URL gebruiken). Geef een van deze velden mee in het parameters-object bij een generatieverzoek om ze programmatisch aan te sturen.
Haal het schema voor elke generator op bij GET /generators/{slug} — de parameters-array in de respons toont elk veld met zijn id, type (enum, number of model), options (of min/max), default en cost_multipliers.
# 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"
}
}'
Aanvullende velden voor tekstgeneratie
Voor tekstgeneratoren (model_id 1-9999) worden deze body-velden op het hoogste niveau waar relevant doorgestuurd naar het LLM-eindpunt:
| Veld | Type | Beschrijving |
|---|---|---|
user_text | string | Vrije aanvullende tekst (bijv. broninhoud om samen te vatten / te transformeren) |
user_text_two | string | Secundaire aanvullende tekst (gebruikt door generatoren met twee tekstinvoervelden) |
avoid_duplicates | boolean | Stuur het model richting nieuwe uitkomsten binnen een batch |
thinking_mode | string | Voor modellen met redeneervermogen: off, on of high |
story_context | string | Bronverhaal doorgegeven aan story, story-part en storyboard voor merkgericht scèneschrijven |
character_context / character_name / character_id | string / int | Personagecontinuïteit voor storyboards, verhaaldelen en vervolgcreaties |
support_for | integer | Bovenliggende creatie-ID — koppelt deze generatie als onderliggende / bijbehorende creatie |
mode | string | Generatorspecifieke modusschakelaar (bijv. spelfase) |
model_speech | integer | Spraakmodel om te koppelen aan de tekstuitvoer (gebruikt voor ingesproken horoscopen, podcasts, enz.) |
item_index / total_count | integer | Hints voor opeenvolgende generatie (gebruikt bij het genereren van items in volgorde, bijv. oplossingsstappen) |
translation_of / source_language | integer / string | Vertaal een bestaande creatie in plaats van vanaf nul te genereren |
Reactie (201 Created) — voorbeeld tekstgenerator:
{
"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
}
}
Reactie (201 Created) — voorbeeld afbeeldingsgenerator:
{
"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
}
}
Vastgeklikte videoduren — als de seconds van de aanroeper niet in de supported_durations van het model staat, springt de API naar de dichtstbijzijnde ondersteunde waarde voordat de provider wordt aangeroepen en voegt een adjustments.seconds-blok toe aan de respons, identiek van vorm aan die op /estimate. Dit voorkomt dat providers stilzwijgend terugvallen op niet-ondersteunde waarden.
Hoe de kostenvelden werken
credit_cost— het werkelijk afgetrokken bedrag, berekend alsbalance_before − balance_after. Dit is de bron van waarheid: gebruik het voor logging, facturering en het bijwerken van gebruikerssaldi.credit_cost_estimated— de vooraf berekende catalogusraming (hetzelfde getal dat/estimatezou hebben voorspeld). Opgenomen voor transparantie en driftbewaking. Wijkt vaak af vancredit_costbij video- / per-seconde- / per-teken-prijzen waar de werkelijke kosten binnen de provideraanroep worden berekend.time_taken_seconds— werkelijke kloktijd. Vergelijk mettime_estimate.secondsuit/estimateom de historische-tijdvoorspelling te valideren.
text, illustration_desc voor grappen; dish_name, ingredients voor recepten). Gebruik GET /creations/{id} om later de volledige creatiegegevens op te halen. Creaties
GET /creations AUTH
Toon je eigen creaties.
curl https://generor.com/api/v1/creations \
-H "Authorization: Bearer gnr_live_..."
Queryparameters: generator (filteren op slug), page, per_page, sort
GET /creations/public
Blader door alle openbare creaties van alle generatoren.
curl "https://generor.com/api/v1/creations/public?generator=image&page=1"
GET /creations/search
Zoek openbare creaties op prompttekst.
curl "https://generor.com/api/v1/creations/search?q=sunset+mountain"
GET /creations/{id}
Haal één creatie op met volledige details, afbeeldingen en generatorspecifieke gegevens.
curl https://generor.com/api/v1/creations/12345
Openbare creaties zijn voor iedereen toegankelijk. Privécreaties vereisen authenticatie als eigenaar.
Reactie omvat:
{
"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
Controleer de generatiestatus van een creatie (handig als je generatie-records bijhoudt).
curl https://generor.com/api/v1/creations/12345/status \
-H "Authorization: Bearer gnr_live_..."
Statuswaarden: pending, generating, completed, failed, cancelled
PATCH /creations/{id} AUTH
Een creatie bijwerken die je bezit.
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}'
| Veld | Waarden |
|---|---|
privacy_mode | 0 (openbaar), 1 (privé) |
license | 1 (Open GO-1.0), 2 (Exclusief GE-1.0) |
DELETE /creations/{id} AUTH
Verwijder een creatie waarvan je eigenaar bent (zachte verwijdering).
curl -X DELETE https://generor.com/api/v1/creations/12345 \
-H "Authorization: Bearer gnr_live_..."
Modellen
GET /models
Toon alle beschikbare AI-modellen gegroepeerd op type.
curl https://generor.com/api/v1/models
GET /models/{type}
Toon modellen voor een specifiek type.
curl https://generor.com/api/v1/models/image
Geldige types: text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval
Reactie per model:
{
"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
}
Videomodellen neem daarnaast de volledige provider-capability-struct op:
{
"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" }
]
}
Afbeeldingsmodellen die de beeldverhouding variëren bevatten een equivalente aspect_ratios-array (aan de afbeeldingszijde zijn er 6 items: vierkant, verticaal, horizontaal, breed, hoog, plus match_input_image voor img2img-modi).
Hoe deze velden te gebruiken
supported_durations— geef hier elke waarde door viaseconds. Niet-ondersteunde waarden springen aan de serverzijde en worden gerapporteerd onderadjustments.seconds.qualities— om van resolutie te wisselen, zoek demodel_idop voor de gewenste resolutie en geef die door als jemodel_id. (Resoluties zijn verwante modellen, geen runtime-parameter.)supports_audio— wanneertrue, kun je"generate_audio": truedoorgeven bij/generate. Wanneerfalse, wordt de vlag genegeerd.supports_end_frame— wanneertrue, kun jeimage_url(startframe) combineren metending_frame_urlvoor naadloze overgangen of loops.aspect_ratios— geef deid(integer) ofratio(string) door onder het veldaspect_ratioop/generate. Beide vormen werken.
GET /models/{type}/{id}
Haal de details en prijzen van een specifiek model op.
curl https://generor.com/api/v1/models/image/10001
Gebruikers
GET /users/me AUTH
Haal je profiel, creditsaldo en statistieken op.
curl https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_..."
Reactie:
{
"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
Je profiel bijwerken.
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}
Haal het openbare profiel van een gebruiker op.
curl https://generor.com/api/v1/users/johndoe
GET /users/{username}/creations
Toon de openbare creaties van een gebruiker. Ondersteunt paginering.
GET /users/{username}/followers
Toon de volgers van een gebruiker. Ondersteunt paginering.
GET /users/{username}/following
Toon wie een gebruiker volgt. Ondersteunt paginering.
POST /users/{username}/follow AUTH
Een gebruiker volgen.
curl -X POST https://generor.com/api/v1/users/johndoe/follow \
-H "Authorization: Bearer gnr_live_..."
DELETE /users/{username}/follow AUTH
Een gebruiker ontvolgen.
GET /users/{username}/follow AUTH
Controleer of je een gebruiker volgt. Geeft {"following": true/false} terug.
Teams
Alle team-endpoints vereisen authenticatie.
GET /teams AUTH
Toon je teams.
POST /teams AUTH
Maak een nieuw team.
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
Haal teamgegevens op met ledenlijst.
DELETE /teams/{id} AUTH
Een team verlaten.
POST /teams/{id}/members AUTH
Voeg een lid toe op gebruikersnaam: {"username": "janedoe"}
DELETE /teams/{id}/members/{user_id} AUTH
Een teamlid verwijderen (alleen eigenaar).
POST /teams/join/{invite_code} AUTH
Word lid van een team via een uitnodigingscode.
POST /teams/{id}/invite AUTH
Uitnodigingscode opnieuw genereren (alleen eigenaar).
GET /teams/{id}/creations AUTH
Toon teamcreaties. Ondersteunt paginering.
Reacties
GET /creations/{id}/comments
Toon reacties op een creatie. Ondersteunt paginering.
curl https://generor.com/api/v1/creations/12345/comments
POST /creations/{id}/comments AUTH
Voeg een opmerking toe.
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
Verwijder je eigen reactie.
POST /comments/{id}/vote AUTH
Stemmen op een reactie: {"vote": "up"} of {"vote": "down"}
Beoordelingen
GET /creations/{id}/rating
Haal de gemiddelde beoordeling voor een creatie op.
// Response:
{"success": true, "data": {"creation_id": 12345, "average": 4.2, "count": 15}}
POST /creations/{id}/rating AUTH
Beoordeel een creatie (1-5). Werkt een bestaande beoordeling bij indien al beoordeeld.
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
Credits zijn het betaalsysteem dat wordt gebruikt voor AI-generaties, uitgedrukt in USD.
GET /credits/balance AUTH
Haal je huidige creditsaldo op.
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
Haal de transactiegeschiedenis van credits op.
curl "https://generor.com/api/v1/credits/transactions?type=spend&page=1" \
-H "Authorization: Bearer gnr_live_..."
Queryparameters: type (spend, purchase, daily_bonus, weekly_bonus, signup_bonus, refund, gift_sent, gift_received), page, per_page
Feed
GET /feed AUTH
Haal openbare creaties op van gebruikers die je volgt.
curl "https://generor.com/api/v1/feed?generator=image&page=1" \
-H "Authorization: Bearer gnr_live_..."
Queryparameters: generator (filteren op slug), page, per_page
API-sleutels
Beheer je eigen API-sleutels programmatisch. Alle endpoints vereisen authenticatie.
GET /api-keys AUTH
Toon je API-sleutels (toont voorvoegsel, niet de volledige sleutel).
POST /api-keys AUTH
Maak een nieuwe API-sleutel. De volledige sleutel wordt slechts één keer weergegeven in het antwoord.
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."
}
}
Maximaal 10 actieve sleutels per account.
DELETE /api-keys/{id} AUTH
Een API-sleutel intrekken (deze wordt onmiddellijk gedeactiveerd).
Foutcodes
| Code | HTTP-status | Beschrijving |
|---|---|---|
UNAUTHORIZED | 401 | Ontbrekende of ongeldige API-sleutel |
FORBIDDEN | 403 | Geldige sleutel maar onvoldoende rechten of scope |
NOT_FOUND | 404 | Bron bestaat niet |
METHOD_NOT_ALLOWED | 405 | HTTP-methode niet ondersteund voor dit eindpunt |
VALIDATION_ERROR | 400 | Ongeldige invoerparameters |
INSUFFICIENT_CREDITS | 402 | Niet genoeg credits voor generatie |
RATE_LIMIT_EXCEEDED | 429 | Te veel verzoeken, controleer de Retry-After-header |
SERVER_ERROR | 500 | Interne serverfout |
