Documentazione Generor API

Crea con oltre 93 generatori AI — testo, immagini, video, audio e altro.

URL di base v1
https://generor.com/api/v1

Un'API REST unificata per generare, sfogliare e gestire contenuti AI. Tutte le richieste usano JSON. Autenticati con un token Bearer.

Autenticazione

Autenticati con un token Bearer nell'intestazione Authorization:

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

Le chiavi API iniziano con gnr_live_ seguito da 40 caratteri esadecimali. Crea le chiavi tramite il Endpoint delle chiavi API o le impostazioni del tuo account.

Alcuni endpoint (esplorazione di generatori, creazioni pubbliche, modelli) funzionano senza autenticazione. Gli endpoint contrassegnati con AUTH richiedono una API key valida.

Ambiti

Le chiavi API possono essere limitate nell'ambito per restringere l'accesso:

AmbitoConsente
readRichieste GET a tutti gli endpoint
writeOperazioni POST, PATCH, DELETE (commenti, valutazioni, aggiornamenti del profilo, ecc.)
generateGenerazione di contenuti (costa crediti)

Le chiavi senza ambiti specificati hanno accesso completo.

Limiti di frequenza

I limiti sono per chiave API. Ogni risposta include header sui limiti di frequenza:

X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
LivelloAl minutoAll'oraAl giorno
free305005,000
basic602,00020,000
pro1205,00050,000
enterprise30020,000200,000

Le richieste non autenticate sono limitate a 15/minuto per IP. In caso di limite superato, riceverai una risposta 429 con un header Retry-After.

Formato della risposta

Tutte le risposte utilizzano un involucro JSON coerente:

Operazione riuscita

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

Errore

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

Impaginazione

Gli endpoint di elenco supportano la paginazione tramite parametri di query:

ParametroPredefinitoDescrizione
page1Numero di pagina (a partire da 1)
per_page20Elementi per pagina (max 100)
sortnewestOrdinamento: newest, oldest

Generatori

GET /generators

Elenca tutti i generatori disponibili.

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

Parametri query: status (active, development, all)

Risposta: Array di generatori con slug, titolo, descrizione, icona e generatori simili.

GET /generators/{slug}

Ottieni informazioni dettagliate su un generatore specifico.

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

GET /generators/{slug}/creations

Sfoglia le creazioni pubbliche di un generatore. Supporta la paginazione.

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

POST /generators/{slug}/estimate

Visualizza in anteprima il costo in crediti e il tempo di generazione previsto prima di chiamare /generate. Stessa struttura del corpo di /generate, ma in sola lettura: nessun credito addebitato, nessuna creazione scritta. È esattamente lo stesso numero che l'interfaccia mostra accanto al pulsante Genera.

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"
    }
  }'

Risposta:

{
  "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"
    }
  }
}

Aperto a chiamanti non autenticati: i prezzi e i tempi sono informazioni pubbliche e corrispondono a quanto mostrato nella pagina pubblica del generatore.

Durate video allineate

Se passi un valore seconds non presente nei supported_durations del modello, l'API lo adatta al valore supportato più vicino (in caso di parità prevale quello inferiore) e segnala la modifica in un blocco adjustments. Il costo in crediti e la stima dei tempi nella stessa risposta riflettono il valore adattato — ciò che /generate farà effettivamente — non la richiesta originale.

{
  "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"
      }
    }
  }
}

Quando usarlo

  • Controllo dei costi preliminare — conferma che un utente possa permettersi la generazione prima di addebitare.
  • Interfaccia di avanzamento — inserisci time_estimate.seconds nella tua barra di caricamento così gli utenti sanno quanto attendere.
  • Regolazione dei parametri — chiamalo ogni volta che un utente cambia un menu a discesa; il costo si aggiorna senza impegnarsi a generare.

Relazione con /generate/estimate è una chiamata separato, facoltativo. /generate restituisce già il credit_cost effettivo addebitato + credits_remaining a posteriori, quindi se ti va bene pagare il prezzo live, puoi saltare del tutto /estimate.

Prompt di integrazione (incolla nel tuo assistente IA durante la configurazione di 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

Genera contenuti usando l'AI. Questa è una chiamata sincrona — la risposta viene restituita al completamento della generazione. Costa crediti in base al modello selezionato. La generazione di testo richiede di solito 5-30 secondi, quella di immagini 10-60 secondi e quella di video può richiedere diversi minuti.

# 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
  }'

Corpo della richiesta:

CampoTipoObbligatorioDescrizione
promptstringIl prompt di generazione (max 10.000 caratteri)
model_idintegerID del modello AI. Testo: 1-9999, Immagine: 10001-19999, Video: 20001-29999. Vedi Modelli.
privacy_modeintegerNo0 = pubblico (predefinito), 1 = privato
team_idintegerNoCrea sotto un team
countintegerNoNumero di elementi (1-10, predefinito 1)
languagestringNoCodice lingua per la generazione del testo (es. "en-US", "nb-NO"). Predefinito: "auto"
temperaturefloatNoCreatività LLM (solo modelli di testo, 0.0-2.0)
preferencestring/intNoPreferenza specifica del generatore (es. tipo di barzelletta, stile della poesia)
preference_twostring/intNoPreferenza secondaria specifica del generatore
aspect_ratioint or stringNoAccetta ID numerici o stringhe di rapporto/nome. Immagine: 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". Suggerimento: usa stringhe di rapporto come "16:9" e l'API le mappa sull'ID corretto per il tipo di modello.
image_urlstringNoURL dell'immagine di riferimento per image-to-image, trasferimento di stile o image-to-video (I2V).
secondsintegerNoDurata del video in secondi (solo modelli video). Ogni provider accetta solo un insieme discreto di valori — interroga GET /models/video/{id} per supported_durations. Se passi un valore non supportato, l'API lo arrotonda a quello supportato più vicino e segnala la modifica in adjustments.seconds nella risposta.
generate_audiobooleanNoInterruttore audio nativo per Veo 3.1 e Seedance 1.5 Pro (video). Gli altri modelli video incorporano il comportamento audio e ignorano questo flag.
ending_frame_urlstringNoFotogramma finale per i modelli che supportano il controllo del fotogramma iniziale+finale (Veo 3.1, Wan 2.6 I2V, Seedance Pro Lite, Kling v3). Abbinalo a image_url per transizioni o loop continui.
reference_imagesarray<string>NoFino a 9 URL di immagini di riferimento. Supportati da: Veo 3.1 (max 3), Seedance 2.0 (max 9), Happy Horse R2V (max 9), Happy Horse Video Edit (max 5). L'ordine viene preservato e presentato al modello come [Image1] … [ImageN] quando i prompt vi fanno riferimento.
reference_videosarray<string>NoFino a 3 URL di video di riferimento. Usati da Seedance 2.0 (Replicate) e Dreamina Seedance 2.0 (BytePlus direct) per la coerenza di movimento/stile.
reference_audiostringNoURL audio di riferimento per la continuità di musica/voce. Attualmente utilizzato da Dreamina Seedance 2.0 (modello 20060-20062, BytePlus direct).
video_urlstringNoURL del video sorgente — richiesto da Happy Horse Video Edit (modello 20051) e usato da Dreamina Seedance 2.0 (20060-20062) per le modalità video-edit / video-extend.
parametersobjectNoCampi specifici del generatore — gli stessi menu a discesa esposti dal frontend, indicizzati tramite i loro ID DOM. Vedi Parametri del generatore di seguito. Le chiavi sconosciute / non valide vengono ignorate senza preavviso.

Parametri del generatore

L'insieme completo dei campi modificabili di ogni generatore risiede in uno schema specifico per generatore (la stessa fonte usata dai menu a tendina del sito e dal precompilamento tramite URL). Passa uno qualsiasi di questi campi nell'oggetto parameters in una richiesta di generazione per controllarli a livello programmatico.

Ottieni lo schema per qualsiasi generatore su GET /generators/{slug} — l'array parameters nella risposta elenca ogni campo con il suo id, type (enum, number o model), options (o min/max), default e 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"
    }
  }'
Perché un endpoint di discovery? La piattaforma dispone di oltre 100 generatori, ognuno con le proprie impostazioni. Invece di fissarli nella specifica dell'API, recuperi lo schema in tempo reale del generatore per cui stai sviluppando e l'API rispecchia esattamente i menu a discesa che vedi nella pagina pubblica.

Campi aggiuntivi per la generazione di testo

Per i generatori di testo (model_id 1-9999), questi campi del body di primo livello vengono inoltrati all'endpoint LLM quando pertinenti:

CampoTipoDescrizione
user_textstringTesto supplementare in formato libero (es. contenuto da riassumere / trasformare)
user_text_twostringTesto supplementare secondario (usato dai generatori con due campi di testo)
avoid_duplicatesbooleanOrienta il modello verso risultati originali in un lotto
thinking_modestringPer i modelli capaci di ragionamento: off, on, o high
story_contextstringStoria sorgente passata a story, story-part e storyboard per la scrittura di scene coerenti con il brand
character_context / character_name / character_idstring / intContinuità del personaggio per storyboard, parti della storia e creazioni successive
support_forintegerID creazione padre — collega questa generazione come creazione figlia / complementare
modestringInterruttore di modalità specifico del generatore (es. fase di gioco)
model_speechintegerModello vocale da abbinare all'output testuale (usato per oroscopi narrati, podcast, ecc.)
item_index / total_countintegerSuggerimenti per la generazione sequenziale (usati quando si generano elementi in ordine, ad es. passaggi di una soluzione)
translation_of / source_languageinteger / stringTraduci una creazione esistente invece di generarne una da zero

Risposta (201 Created) — esempio di generatore di testo:

{
  "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
  }
}

Risposta (201 Created) — esempio di generatore di immagini:

{
  "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
  }
}

Durate video allineate — se il valore seconds del chiamante non è tra i supported_durations del modello, l'API si allinea al valore supportato più vicino prima di invocare il provider e aggiunge un blocco adjustments.seconds alla risposta, identico nella forma a quello su /estimate. Questo impedisce ai provider di applicare silenziosamente valori predefiniti non supportati.

Come funzionano i campi dei costi

  • credit_cost — l'importo effettivo detratto, calcolato come balance_before − balance_after. Questa è la fonte di verità: usalo per logging, fatturazione e aggiornamento dei saldi utente.
  • credit_cost_estimated — la stima anticipata da catalogo (lo stesso numero che /estimate avrebbe previsto). Inclusa per trasparenza e monitoraggio degli scostamenti. Spesso differisce da credit_cost per i prezzi video / al secondo / per carattere, dove l'addebito reale viene calcolato all'interno della chiamata al provider.
  • time_taken_seconds — durata effettiva reale. Confronta con time_estimate.seconds da /estimate per convalidare la previsione del tempo storico.
Nota: Le creazioni di testo restituiscono campi specifici del generatore (ad es. text, illustration_desc per le barzellette; dish_name, ingredients per le ricette). Usa GET /creations/{id} per recuperare in seguito i dati completi della creazione.

Creazioni

GET /creations AUTH

Elenca le tue creazioni.

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

Parametri query: generator (filtra per slug), page, per_page, sort

GET /creations/public

Sfoglia tutte le creazioni pubbliche di tutti i generatori.

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

GET /creations/search

Cerca creazioni pubbliche tramite il testo del prompt.

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

GET /creations/{id}

Ottieni una singola creazione con dettagli completi, immagini e dati specifici del generatore.

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

Le creazioni pubbliche sono accessibili a chiunque. Le creazioni private richiedono l'autenticazione come proprietario.

La risposta include:

{
  "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

Controlla lo stato di generazione di una creazione (utile se stai monitorando i record di generazione).

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

Valori di stato: pending, generating, completed, failed, cancelled

PATCH /creations/{id} AUTH

Aggiorna una creazione di tua proprietà.

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}'
CampoValori
privacy_mode0 (pubblico), 1 (privato)
license1 (Open GO-1.0), 2 (Exclusive GE-1.0)

DELETE /creations/{id} AUTH

Elimina una creazione di tua proprietà (eliminazione soft).

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

Modelli

GET /models

Elenca tutti i modelli AI disponibili raggruppati per tipo.

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

GET /models/{type}

Elenca i modelli per un tipo specifico.

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

Tipi validi: text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval

Risposta per modello:

{
  "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
}

Modelli video includere inoltre la struttura completa delle capacità del fornitore:

{
  "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" }
  ]
}

Modelli di immagine che variano il rapporto d'aspetto includono un array aspect_ratios equivalente (il lato immagine ha 6 voci: quadrato, verticale, orizzontale, ampio, alto, più match_input_image per le modalità img2img).

Come usare questi campi

  • supported_durations — passa qualsiasi valore qui tramite seconds. I valori non supportati vengono allineati lato server e riportati sotto adjustments.seconds.
  • qualities — per cambiare risoluzione, cerca il model_id della risoluzione desiderata e passalo come tuo model_id. (Le risoluzioni sono modelli affini, non un parametro a runtime.)
  • supports_audio — quando true, puoi passare "generate_audio": true su /generate. Quando false, il flag viene ignorato.
  • supports_end_frame — quando true, puoi abbinare image_url (fotogramma iniziale) a ending_frame_url per transizioni o loop senza interruzioni.
  • aspect_ratios — passa id (intero) o ratio (stringa) nel campo aspect_ratio su /generate. Entrambe le forme funzionano.
Intervalli di ID modello: testo (1-9999), immagine (10001-19999), video (20001-29999), voce (30001-39999), musica (40001-49999), effetti sonori (50001-59999).

GET /models/{type}/{id}

Ottieni i dettagli e i prezzi di un modello specifico.

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

Utenti

GET /users/me AUTH

Ottieni il tuo profilo, il saldo dei crediti e le statistiche.

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

Risposta:

{
  "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

Aggiorna il tuo profilo.

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}

Ottieni il profilo pubblico di un utente.

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

GET /users/{username}/creations

Elenca le creazioni pubbliche di un utente. Supporta la paginazione.

GET /users/{username}/followers

Elenca i follower di un utente. Supporta la paginazione.

GET /users/{username}/following

Elenca chi segue un utente. Supporta la paginazione.

POST /users/{username}/follow AUTH

Segui un utente.

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

DELETE /users/{username}/follow AUTH

Smetti di seguire un utente.

GET /users/{username}/follow AUTH

Controlla se segui un utente. Restituisce {"following": true/false}.

Team

Tutti gli endpoint del team richiedono l'autenticazione.

GET /teams AUTH

Elenca i tuoi team.

POST /teams AUTH

Crea un nuovo 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

Ottieni i dettagli del team con l'elenco dei membri.

DELETE /teams/{id} AUTH

Lascia un team.

POST /teams/{id}/members AUTH

Aggiungi un membro tramite nome utente: {"username": "janedoe"}

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

Rimuovi un membro del team (solo proprietario).

POST /teams/join/{invite_code} AUTH

Unisciti a un team tramite codice di invito.

POST /teams/{id}/invite AUTH

Rigenera il codice di invito (solo proprietario).

GET /teams/{id}/creations AUTH

Elenca le creazioni del team. Supporta la paginazione.

Commenti

GET /creations/{id}/comments

Elenca i commenti su una creazione. Supporta la paginazione.

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

POST /creations/{id}/comments AUTH

Aggiungi un commento.

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

Elimina il tuo commento.

POST /comments/{id}/vote AUTH

Vota un commento: {"vote": "up"} o {"vote": "down"}

Valutazioni

GET /creations/{id}/rating

Ottieni la valutazione media di una creazione.

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

POST /creations/{id}/rating AUTH

Valuta una creazione (1-5). Aggiorna la valutazione esistente se già valutata.

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

Crediti

I crediti sono il sistema di pagamento usato per le generazioni AI, espressi in USD.

GET /credits/balance AUTH

Ottieni il tuo saldo attuale di crediti.

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

Ottieni la cronologia delle transazioni di crediti.

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

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

Feed

GET /feed AUTH

Ottieni le creazioni pubbliche degli utenti che segui.

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

Parametri query: generator (filtra per slug), page, per_page

Chiavi API

Gestisci le tue chiavi API in modo programmatico. Tutti gli endpoint richiedono l'autenticazione.

GET /api-keys AUTH

Elenca le tue chiavi API (mostra il prefisso, non la chiave completa).

POST /api-keys AUTH

Crea una nuova chiave API. La chiave completa viene mostrata una sola volta nella risposta.

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."
  }
}

Massimo 10 chiavi attive per account.

DELETE /api-keys/{id} AUTH

Revoca una chiave API (la disattiva immediatamente).

Codici di errore

CodiceStato HTTPDescrizione
UNAUTHORIZED401Chiave API mancante o non valida
FORBIDDEN403Chiave valida ma autorizzazioni o ambito insufficienti
NOT_FOUND404La risorsa non esiste
METHOD_NOT_ALLOWED405Metodo HTTP non supportato per questo endpoint
VALIDATION_ERROR400Parametri di input non validi
INSUFFICIENT_CREDITS402Crediti insufficienti per la generazione
RATE_LIMIT_EXCEEDED429Troppe richieste, controlla l'intestazione Retry-After
SERVER_ERROR500Errore interno del server