Documentazione Generor API
Crea con oltre 93 generatori AI — testo, immagini, video, audio e altro.
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:
| Ambito | Consente |
|---|---|
read | Richieste GET a tutti gli endpoint |
write | Operazioni POST, PATCH, DELETE (commenti, valutazioni, aggiornamenti del profilo, ecc.) |
generate | Generazione 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
| Livello | Al minuto | All'ora | Al giorno |
|---|---|---|---|
| free | 30 | 500 | 5,000 |
| basic | 60 | 2,000 | 20,000 |
| pro | 120 | 5,000 | 50,000 |
| enterprise | 300 | 20,000 | 200,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:
| Parametro | Predefinito | Descrizione |
|---|---|---|
page | 1 | Numero di pagina (a partire da 1) |
per_page | 20 | Elementi per pagina (max 100) |
sort | newest | Ordinamento: 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.secondsnella 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.
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:
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
prompt | string | Sì | Il prompt di generazione (max 10.000 caratteri) |
model_id | integer | Sì | ID del modello AI. Testo: 1-9999, Immagine: 10001-19999, Video: 20001-29999. Vedi Modelli. |
privacy_mode | integer | No | 0 = pubblico (predefinito), 1 = privato |
team_id | integer | No | Crea sotto un team |
count | integer | No | Numero di elementi (1-10, predefinito 1) |
language | string | No | Codice lingua per la generazione del testo (es. "en-US", "nb-NO"). Predefinito: "auto" |
temperature | float | No | Creatività LLM (solo modelli di testo, 0.0-2.0) |
preference | string/int | No | Preferenza specifica del generatore (es. tipo di barzelletta, stile della poesia) |
preference_two | string/int | No | Preferenza secondaria specifica del generatore |
aspect_ratio | int or string | No | Accetta 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_url | string | No | URL dell'immagine di riferimento per image-to-image, trasferimento di stile o image-to-video (I2V). |
seconds | integer | No | Durata 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_audio | boolean | No | Interruttore 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_url | string | No | Fotogramma 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_images | array<string> | No | Fino 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_videos | array<string> | No | Fino 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_audio | string | No | URL audio di riferimento per la continuità di musica/voce. Attualmente utilizzato da Dreamina Seedance 2.0 (modello 20060-20062, BytePlus direct). |
video_url | string | No | URL 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. |
parameters | object | No | Campi 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"
}
}'
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:
| Campo | Tipo | Descrizione |
|---|---|---|
user_text | string | Testo supplementare in formato libero (es. contenuto da riassumere / trasformare) |
user_text_two | string | Testo supplementare secondario (usato dai generatori con due campi di testo) |
avoid_duplicates | boolean | Orienta il modello verso risultati originali in un lotto |
thinking_mode | string | Per i modelli capaci di ragionamento: off, on, o high |
story_context | string | Storia sorgente passata a story, story-part e storyboard per la scrittura di scene coerenti con il brand |
character_context / character_name / character_id | string / int | Continuità del personaggio per storyboard, parti della storia e creazioni successive |
support_for | integer | ID creazione padre — collega questa generazione come creazione figlia / complementare |
mode | string | Interruttore di modalità specifico del generatore (es. fase di gioco) |
model_speech | integer | Modello vocale da abbinare all'output testuale (usato per oroscopi narrati, podcast, ecc.) |
item_index / total_count | integer | Suggerimenti per la generazione sequenziale (usati quando si generano elementi in ordine, ad es. passaggi di una soluzione) |
translation_of / source_language | integer / string | Traduci 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 comebalance_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/estimateavrebbe previsto). Inclusa per trasparenza e monitoraggio degli scostamenti. Spesso differisce dacredit_costper 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 contime_estimate.secondsda/estimateper convalidare la previsione del tempo storico.
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}'
| Campo | Valori |
|---|---|
privacy_mode | 0 (pubblico), 1 (privato) |
license | 1 (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 tramiteseconds. I valori non supportati vengono allineati lato server e riportati sottoadjustments.seconds.qualities— per cambiare risoluzione, cerca ilmodel_iddella risoluzione desiderata e passalo come tuomodel_id. (Le risoluzioni sono modelli affini, non un parametro a runtime.)supports_audio— quandotrue, puoi passare"generate_audio": truesu/generate. Quandofalse, il flag viene ignorato.supports_end_frame— quandotrue, puoi abbinareimage_url(fotogramma iniziale) aending_frame_urlper transizioni o loop senza interruzioni.aspect_ratios— passaid(intero) oratio(stringa) nel campoaspect_ratiosu/generate. Entrambe le forme funzionano.
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
| Codice | Stato HTTP | Descrizione |
|---|---|---|
UNAUTHORIZED | 401 | Chiave API mancante o non valida |
FORBIDDEN | 403 | Chiave valida ma autorizzazioni o ambito insufficienti |
NOT_FOUND | 404 | La risorsa non esiste |
METHOD_NOT_ALLOWED | 405 | Metodo HTTP non supportato per questo endpoint |
VALIDATION_ERROR | 400 | Parametri di input non validi |
INSUFFICIENT_CREDITS | 402 | Crediti insufficienti per la generazione |
RATE_LIMIT_EXCEEDED | 429 | Troppe richieste, controlla l'intestazione Retry-After |
SERVER_ERROR | 500 | Errore interno del server |
