Generor API-documentatie

Bouw met meer dan 93 AI-generatoren — tekst, afbeelding, video, audio en meer.

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

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:

BereikStaat toe
readGET-verzoeken naar alle eindpunten
writePOST-, PATCH-, DELETE-bewerkingen (reacties, beoordelingen, profielupdates, enz.)
generateInhoud 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
NiveauPer minuutPer uurPer dag
free305005,000
basic602,00020,000
pro1205,00050,000
enterprise30020,000200,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:

ParameterStandaardBeschrijving
page1Paginanummer (vanaf 1)
per_page20Items per pagina (max. 100)
sortnewestSorteervolgorde: 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.seconds in 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.

Integratieprompt (plak dit in je AI-assistent bij het koppelen van Generor):
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:

VeldTypeVereistBeschrijving
promptstringJaDe generatieprompt (max. 10.000 tekens)
model_idintegerJaAI-model-ID. Tekst: 1-9999, Afbeelding: 10001-19999, Video: 20001-29999. Zie Modellen.
privacy_modeintegerNee0 = openbaar (standaard), 1 = privé
team_idintegerNeeMaken onder een team
countintegerNeeAantal items (1-10, standaard 1)
languagestringNeeTaalcode voor tekstgeneratie (bijv. "en-US", "nb-NO"). Standaard: "auto"
temperaturefloatNeeLLM-creativiteit (alleen tekstmodellen, 0.0-2.0)
preferencestring/intNeeGeneratorspecifieke voorkeur (bijv. soort grap, gedichtstijl)
preference_twostring/intNeeGeneratorspecifieke secundaire voorkeur
aspect_ratioint or stringNeeAccepteert 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_urlstringNeeURL van referentieafbeelding voor afbeelding-naar-afbeelding, stijloverdracht of afbeelding-naar-video (I2V).
secondsintegerNeeVideoduur 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_audiobooleanNeeNative-audio schakelaar voor Veo 3.1 en Seedance 1.5 Pro (video). Andere videomodellen bakken audiogedrag in en negeren deze instelling.
ending_frame_urlstringNeeEindframe-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_imagesarray<string>NeeMaximaal 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_videosarray<string>NeeMaximaal 3 referentievideo-URL's. Gebruikt door Seedance 2.0 (Replicate) en Dreamina Seedance 2.0 (BytePlus direct) voor beweging-/stijlcoherentie.
reference_audiostringNeeReferentieaudio-URL voor continuïteit van muziek/stem. Momenteel gebruikt door Dreamina Seedance 2.0 (model 20060-20062, BytePlus direct).
video_urlstringNeeBronvideo-URL — vereist door Happy Horse Video Edit (model 20051) en gebruikt door Dreamina Seedance 2.0 (20060-20062) voor video-edit / video-extend modi.
parametersobjectNeeGeneratorspecifieke 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"
    }
  }'
Waarom een discovery-endpoint? Het platform heeft meer dan 100 generatoren, elk met eigen instellingen. In plaats van deze vast te leggen in de API-specificatie, haal je het live schema op voor de generator waarvoor je ontwikkelt, en de API spiegelt exact de dropdowns die je op de openbare pagina ziet.

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:

VeldTypeBeschrijving
user_textstringVrije aanvullende tekst (bijv. broninhoud om samen te vatten / te transformeren)
user_text_twostringSecundaire aanvullende tekst (gebruikt door generatoren met twee tekstinvoervelden)
avoid_duplicatesbooleanStuur het model richting nieuwe uitkomsten binnen een batch
thinking_modestringVoor modellen met redeneervermogen: off, on of high
story_contextstringBronverhaal doorgegeven aan story, story-part en storyboard voor merkgericht scèneschrijven
character_context / character_name / character_idstring / intPersonagecontinuïteit voor storyboards, verhaaldelen en vervolgcreaties
support_forintegerBovenliggende creatie-ID — koppelt deze generatie als onderliggende / bijbehorende creatie
modestringGeneratorspecifieke modusschakelaar (bijv. spelfase)
model_speechintegerSpraakmodel om te koppelen aan de tekstuitvoer (gebruikt voor ingesproken horoscopen, podcasts, enz.)
item_index / total_countintegerHints voor opeenvolgende generatie (gebruikt bij het genereren van items in volgorde, bijv. oplossingsstappen)
translation_of / source_languageinteger / stringVertaal 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 als balance_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 /estimate zou hebben voorspeld). Opgenomen voor transparantie en driftbewaking. Wijkt vaak af van credit_cost bij video- / per-seconde- / per-teken-prijzen waar de werkelijke kosten binnen de provideraanroep worden berekend.
  • time_taken_seconds — werkelijke kloktijd. Vergelijk met time_estimate.seconds uit /estimate om de historische-tijdvoorspelling te valideren.
Opmerking: Tekstcreaties geven generatorspecifieke velden terug (bijv. 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}'
VeldWaarden
privacy_mode0 (openbaar), 1 (privé)
license1 (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 via seconds. Niet-ondersteunde waarden springen aan de serverzijde en worden gerapporteerd onder adjustments.seconds.
  • qualities — om van resolutie te wisselen, zoek de model_id op voor de gewenste resolutie en geef die door als je model_id. (Resoluties zijn verwante modellen, geen runtime-parameter.)
  • supports_audio — wanneer true, kun je "generate_audio": true doorgeven bij /generate. Wanneer false, wordt de vlag genegeerd.
  • supports_end_frame — wanneer true, kun je image_url (startframe) combineren met ending_frame_url voor naadloze overgangen of loops.
  • aspect_ratios — geef de id (integer) of ratio (string) door onder het veld aspect_ratio op /generate. Beide vormen werken.
Model ID-bereiken: tekst (1-9999), afbeelding (10001-19999), video (20001-29999), spraak (30001-39999), muziek (40001-49999), geluidseffecten (50001-59999).

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

CodeHTTP-statusBeschrijving
UNAUTHORIZED401Ontbrekende of ongeldige API-sleutel
FORBIDDEN403Geldige sleutel maar onvoldoende rechten of scope
NOT_FOUND404Bron bestaat niet
METHOD_NOT_ALLOWED405HTTP-methode niet ondersteund voor dit eindpunt
VALIDATION_ERROR400Ongeldige invoerparameters
INSUFFICIENT_CREDITS402Niet genoeg credits voor generatie
RATE_LIMIT_EXCEEDED429Te veel verzoeken, controleer de Retry-After-header
SERVER_ERROR500Interne serverfout