Documentation de l'API Generor
Créez avec plus de 93 générateurs d'IA — texte, image, vidéo, audio, et plus encore.
Une API REST unifiée pour générer, parcourir et gérer du contenu IA. Toutes les requêtes utilisent JSON. Authentifiez-vous avec un jeton Bearer.
Authentification
Authentifiez-vous avec un jeton Bearer dans l'en-tête Authorization :
curl https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_your_api_key_here"
Les clés API commencent par gnr_live_ suivi de 40 caractères hexadécimaux. Créez des clés via le Point de terminaison des clés API ou les paramètres de votre compte.
Certains endpoints (parcourir les générateurs, créations publiques, modèles) fonctionnent sans authentification. Les endpoints marqués de AUTH nécessitent une clé API valide.
Portées
Les clés API peuvent être limitées en portée pour restreindre l'accès :
| Portée | Autorise |
|---|---|
read | Requêtes GET vers tous les points de terminaison |
write | Opérations POST, PATCH, DELETE (commentaires, évaluations, mises à jour de profil, etc.) |
generate | Génération de contenu (coûte des crédits) |
Les clés sans portée spécifiée disposent d'un accès complet.
Limites de débit
Les limites s'appliquent par clé API. Chaque réponse inclut des en-têtes de limite de débit :
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
| Niveau | Par minute | Par heure | Par jour |
|---|---|---|---|
| free | 30 | 500 | 5,000 |
| basic | 60 | 2,000 | 20,000 |
| pro | 120 | 5,000 | 50,000 |
| enterprise | 300 | 20,000 | 200,000 |
Les requêtes non authentifiées sont limitées à 15/minute par IP. En cas de limitation de débit, vous recevrez une réponse 429 avec un en-tête Retry-After.
Format de réponse
Toutes les réponses utilisent une enveloppe JSON cohérente :
Succès
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 142,
"total_pages": 8,
"has_next": true,
"has_prev": false
}
}
Erreur
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Creation not found",
"status": 404
}
}
Pagination
Les points de terminaison de liste prennent en charge la pagination via des paramètres de requête :
| Paramètre | Par défaut | Description |
|---|---|---|
page | 1 | Numéro de page (à partir de 1) |
per_page | 20 | Éléments par page (max 100) |
sort | newest | Ordre de tri : newest, oldest |
Générateurs
GET /generators
Lister tous les générateurs disponibles.
curl https://generor.com/api/v1/generators
Paramètres de requête : status (active, development, all)
Réponse : Tableau de générateurs avec slug, titre, description, icône et générateurs similaires.
GET /generators/{slug}
Obtenir des informations détaillées sur un générateur spécifique.
curl https://generor.com/api/v1/generators/image
GET /generators/{slug}/creations
Parcourez les créations publiques d'un générateur. Prend en charge la pagination.
curl "https://generor.com/api/v1/generators/joke/creations?page=1&per_page=10"
POST /generators/{slug}/estimate
Prévisualisez le coût en crédits et le temps de génération estimé avant d'appeler /generate. Même structure de corps que /generate — mais en lecture seule : aucun crédit débité, aucune création enregistrée. C'est exactement le même nombre que l'interface affiche à côté du bouton Générer.
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"
}
}'
Réponse :
{
"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"
}
}
}
Ouvert aux appelants non authentifiés — les tarifs et délais sont des informations publiques et correspondent à ce qu'affiche la page publique du générateur.
Durées de vidéo ajustées
Si vous transmettez une valeur seconds qui ne figure pas dans le supported_durations du modèle, l'API la cale sur la valeur prise en charge la plus proche (en cas d'égalité, la valeur inférieure l'emporte) et signale le changement dans un bloc adjustments. Le coût en crédits et l'estimation de durée dans la même réponse reflètent la valeur calée — ce que /generate fera réellement — et non la requête initiale.
{
"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"
}
}
}
}
Quand l'utiliser
- Vérification du coût avant lancement — vérifiez que l'utilisateur peut se permettre la génération avant de le facturer.
- Interface de progression — alimentez votre barre de chargement avec
time_estimate.secondspour que les utilisateurs sachent combien de temps attendre. - Réglage des paramètres — appelez-la chaque fois qu'un utilisateur modifie un menu déroulant ; le coût se met à jour sans lancer la génération.
Relation avec /generate — /estimate est un appel distinct, facultatif. /generate renvoie déjà le credit_cost réel facturé + credits_remaining après coup, donc si vous acceptez de payer le prix en vigueur, vous pouvez ignorer /estimate entièrement.
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
Générez du contenu à l'aide de l'IA. Il s'agit d'un appel synchrone — la réponse est renvoyée une fois la génération terminée. Consomme des crédits selon le modèle sélectionné. La génération de texte prend généralement 5 à 30 secondes, la génération d'images 10 à 60 secondes, et la génération de vidéos peut prendre plusieurs minutes.
# 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
}'
Corps de la requête :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
prompt | string | Oui | L'invite de génération (10 000 caractères max) |
model_id | integer | Oui | ID du modèle IA. Texte : 1-9999, Image : 10001-19999, Vidéo : 20001-29999. Voir Modèles. |
privacy_mode | integer | Non | 0 = public (par défaut), 1 = privé |
team_id | integer | Non | Créer au sein d'une équipe |
count | integer | Non | Nombre d'éléments (1-10, par défaut 1) |
language | string | Non | Code de langue pour la génération de texte (par ex. « en-US », « nb-NO »). Par défaut : « auto » |
temperature | float | Non | Créativité du LLM (modèles texte uniquement, 0.0-2.0) |
preference | string/int | Non | Préférence spécifique au générateur (par ex. type de blague, style de poème) |
preference_two | string/int | Non | Préférence secondaire spécifique au générateur |
aspect_ratio | int or string | Non | Accepte des ID numériques ou des chaînes de ratio/nom. Image : 1 / "1:1" / "square", 2 / "3:4" / "vertical", 3 / "4:3" / "horizontal", 4 / "16:9" / "wide", 5 / "9:16" / "tall". Vidéo : 1 / "16:9" / "wide", 2 / "9:16" / "tall". Astuce : utilisez des chaînes de ratio comme "16:9" et l'API les associe à l'ID correct pour le type de modèle. |
image_url | string | Non | URL de l'image de référence pour l'image-vers-image, le transfert de style ou l'image-vers-vidéo (I2V). |
seconds | integer | Non | Durée de la vidéo en secondes (modèles vidéo uniquement). Chaque fournisseur n'accepte qu'un ensemble discret de valeurs — interrogez GET /models/video/{id} pour supported_durations. Si vous transmettez une valeur non prise en charge, l'API la ramène à la valeur prise en charge la plus proche et signale l'ajustement dans adjustments.seconds de la réponse. |
generate_audio | boolean | Non | Option audio natif pour Veo 3.1 et Seedance 1.5 Pro (vidéo). Les autres modèles vidéo intègrent le comportement audio et ignorent cette option. |
ending_frame_url | string | Non | Ancrage d'image de fin pour les modèles qui prennent en charge le contrôle des images de début et de fin (Veo 3.1, Wan 2.6 I2V, Seedance Pro Lite, Kling v3). Associez-le à image_url pour des transitions ou des boucles fluides. |
reference_images | array<string> | Non | Jusqu'à 9 URL d'images de référence. Pris en charge par : Veo 3.1 (max 3), Seedance 2.0 (max 9), Happy Horse R2V (max 9), Happy Horse Video Edit (max 5). L'ordre est préservé et présenté au modèle sous la forme [Image1] … [ImageN] lorsque les prompts y font référence. |
reference_videos | array<string> | Non | Jusqu'à 3 URL de vidéos de référence. Utilisées par Seedance 2.0 (Replicate) et Dreamina Seedance 2.0 (BytePlus direct) pour la cohérence du mouvement/style. |
reference_audio | string | Non | URL audio de référence pour la continuité de la musique/voix. Actuellement utilisée par Dreamina Seedance 2.0 (modèle 20060-20062, BytePlus direct). |
video_url | string | Non | URL de la vidéo source — requise par Happy Horse Video Edit (modèle 20051), et utilisée par Dreamina Seedance 2.0 (20060-20062) pour les modes video-edit / video-extend. |
parameters | object | Non | Champs spécifiques au générateur — les mêmes menus déroulants exposés par l'interface, indexés par leurs identifiants DOM. Voir Paramètres du générateur ci-dessous. Les clés inconnues ou invalides sont ignorées silencieusement. |
Paramètres du générateur
L'ensemble complet des champs ajustables de chaque générateur se trouve dans un schéma propre à chaque générateur (la même source utilisée par les menus déroulants du site et le préremplissage par URL). Transmettez n'importe lequel de ces champs dans l'objet parameters d'une requête de génération pour les piloter par programmation.
Obtenez le schéma de n'importe quel générateur sur GET /generators/{slug} — le tableau parameters de la réponse liste chaque champ avec son id, type (enum, number ou model), ses options (ou min/max), sa valeur default et ses 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"
}
}'
Champs supplémentaires de génération de texte
Pour les générateurs de texte (model_id 1-9999), ces champs de corps de premier niveau sont transmis au point de terminaison LLM lorsque cela est pertinent :
| Champ | Type | Description |
|---|---|---|
user_text | string | Texte complémentaire libre (par ex. contenu source à résumer / transformer) |
user_text_two | string | Texte secondaire complémentaire (utilisé par les générateurs à deux entrées de texte) |
avoid_duplicates | boolean | Orienter le modèle vers des résultats originaux sur un lot |
thinking_mode | string | Pour les modèles capables de raisonnement : off, on, ou high |
story_context | string | Histoire source transmise à story, story-part et storyboard pour une rédaction de scène fidèle à la marque |
character_context / character_name / character_id | string / int | Continuité des personnages pour les storyboards, les parties d'histoire et les créations de suivi |
support_for | integer | ID de la création parente — relie cette génération en tant que création enfant / associée |
mode | string | Bascule de mode spécifique au générateur (par ex. phase de jeu) |
model_speech | integer | Modèle de synthèse vocale à associer à la sortie texte (utilisé pour les horoscopes narrés, podcasts, etc.) |
item_index / total_count | integer | Indices de génération séquentielle (utilisés lors de la génération d'éléments dans l'ordre, par ex. les étapes d'une solution) |
translation_of / source_language | integer / string | Traduire une création existante plutôt que d'en générer une nouvelle |
Réponse (201 Created) — exemple de générateur de texte :
{
"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
}
}
Réponse (201 Created) — exemple de générateur d'images :
{
"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
}
}
Durées de vidéo ajustées — si le seconds de l'appelant ne figure pas dans les valeurs supported_durations du modèle, l'API se cale sur la valeur prise en charge la plus proche avant d'invoquer le fournisseur et ajoute un bloc adjustments.seconds à la réponse, de forme identique à celui de /estimate. Cela empêche les fournisseurs d'appliquer silencieusement des valeurs par défaut non prises en charge.
Comment fonctionnent les champs de coût
credit_cost— le montant réel déduit, calculé commebalance_before − balance_after. C'est la source de vérité : utilisez-le pour la journalisation, la facturation et la mise à jour des soldes des utilisateurs.credit_cost_estimated— l'estimation initiale du catalogue (le même nombre que/estimateaurait prédit). Inclus pour la transparence et le suivi des écarts. Diffère souvent decredit_costpour la tarification vidéo / à la seconde / au caractère, où le coût réel est calculé lors de l'appel au fournisseur.time_taken_seconds— durée réelle écoulée. Comparer avectime_estimate.secondsde/estimatepour valider la prédiction du temps historique.
text, illustration_desc pour les blagues ; dish_name, ingredients pour les recettes). Utilisez GET /creations/{id} pour récupérer ultérieurement les données complètes de la création. Créations
GET /creations AUTH
Lister vos propres créations.
curl https://generor.com/api/v1/creations \
-H "Authorization: Bearer gnr_live_..."
Paramètres de requête : generator (filtrer par slug), page, per_page, sort
GET /creations/public
Parcourez toutes les créations publiques de tous les générateurs.
curl "https://generor.com/api/v1/creations/public?generator=image&page=1"
GET /creations/search
Rechercher des créations publiques par texte d'invite.
curl "https://generor.com/api/v1/creations/search?q=sunset+mountain"
GET /creations/{id}
Obtenir une seule création avec tous les détails, images et données spécifiques au générateur.
curl https://generor.com/api/v1/creations/12345
Les créations publiques sont accessibles à tous. Les créations privées nécessitent une authentification en tant que propriétaire.
La réponse inclut :
{
"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
Vérifiez le statut de génération d'une création (utile si vous suivez les enregistrements de génération).
curl https://generor.com/api/v1/creations/12345/status \
-H "Authorization: Bearer gnr_live_..."
Valeurs de statut : pending, generating, completed, failed, cancelled
PATCH /creations/{id} AUTH
Mettez à jour une création que vous possédez.
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}'
| Champ | Valeurs |
|---|---|
privacy_mode | 0 (public), 1 (privé) |
license | 1 (Open GO-1.0), 2 (Exclusive GE-1.0) |
DELETE /creations/{id} AUTH
Supprimer une création dont vous êtes propriétaire (suppression réversible).
curl -X DELETE https://generor.com/api/v1/creations/12345 \
-H "Authorization: Bearer gnr_live_..."
Modèles
GET /models
Lister tous les modèles d'IA disponibles regroupés par type.
curl https://generor.com/api/v1/models
GET /models/{type}
Lister les modèles d'un type spécifique.
curl https://generor.com/api/v1/models/image
Types valides : text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval
Réponse par modèle :
{
"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
}
Modèles vidéo inclure en outre la structure complète des capacités du fournisseur :
{
"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" }
]
}
Modèles d'image qui font varier le rapport d'aspect incluent un tableau aspect_ratios équivalent (côté image, il y a 6 entrées : carré, vertical, horizontal, large, haut, plus match_input_image pour les modes img2img).
Comment utiliser ces champs
supported_durations— transmettez n'importe quelle valeur ici viaseconds. Les valeurs non prises en charge sont calées côté serveur et signalées sousadjustments.seconds.qualities— pour changer de résolution, recherchez lemodel_idde la résolution souhaitée et transmettez-le comme votremodel_id. (Les résolutions sont des modèles frères, pas un paramètre d'exécution.)supports_audio— lorsquetrue, vous pouvez transmettre"generate_audio": truelors de/generate. Lorsquefalse, l'indicateur est ignoré.supports_end_frame— lorsquetrue, vous pouvez associerimage_url(image de début) àending_frame_urlpour des transitions ou boucles fluides.aspect_ratios— transmettez leid(entier) ou leratio(chaîne) sous le champaspect_ratiode/generate. Les deux formes fonctionnent.
GET /models/{type}/{id}
Obtenir les détails et la tarification d'un modèle spécifique.
curl https://generor.com/api/v1/models/image/10001
Utilisateurs
GET /users/me AUTH
Obtenir votre profil, votre solde de crédits et vos statistiques.
curl https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_..."
Réponse :
{
"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
Mettez à jour votre profil.
curl -X PATCH https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{"bio": "Updated bio", "website": "https://example.com"}'
GET /users/{username}
Obtenir le profil public d'un utilisateur.
curl https://generor.com/api/v1/users/johndoe
GET /users/{username}/creations
Lister les créations publiques d'un utilisateur. Prend en charge la pagination.
GET /users/{username}/followers
Lister les abonnés d'un utilisateur. Prend en charge la pagination.
GET /users/{username}/following
Lister les personnes qu'un utilisateur suit. Prend en charge la pagination.
POST /users/{username}/follow AUTH
Suivre un utilisateur.
curl -X POST https://generor.com/api/v1/users/johndoe/follow \
-H "Authorization: Bearer gnr_live_..."
DELETE /users/{username}/follow AUTH
Ne plus suivre un utilisateur.
GET /users/{username}/follow AUTH
Vérifie si vous suivez un utilisateur. Renvoie {"following": true/false}.
Équipes
Tous les points de terminaison d'équipe nécessitent une authentification.
GET /teams AUTH
Lister vos équipes.
POST /teams AUTH
Créer une nouvelle équipe.
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
Obtenir les détails de l'équipe avec la liste des membres.
DELETE /teams/{id} AUTH
Quitter une équipe.
POST /teams/{id}/members AUTH
Ajouter un membre par nom d'utilisateur : {"username": "janedoe"}
DELETE /teams/{id}/members/{user_id} AUTH
Supprimer un membre de l'équipe (propriétaire uniquement).
POST /teams/join/{invite_code} AUTH
Rejoignez une équipe à l'aide d'un code d'invitation.
POST /teams/{id}/invite AUTH
Régénérer le code d'invitation (propriétaire uniquement).
GET /teams/{id}/creations AUTH
Lister les créations de l'équipe. Prend en charge la pagination.
Commentaires
GET /creations/{id}/comments
Lister les commentaires d'une création. Prend en charge la pagination.
curl https://generor.com/api/v1/creations/12345/comments
POST /creations/{id}/comments AUTH
Ajouter un commentaire.
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
Supprimer votre propre commentaire.
POST /comments/{id}/vote AUTH
Voter sur un commentaire : {"vote": "up"} ou {"vote": "down"}
Notes
GET /creations/{id}/rating
Obtenir la note moyenne d'une création.
// Response:
{"success": true, "data": {"creation_id": 12345, "average": 4.2, "count": 15}}
POST /creations/{id}/rating AUTH
Noter une création (1-5). Met à jour la note existante si déjà notée.
curl -X POST https://generor.com/api/v1/creations/12345/rating \
-H "Authorization: Bearer gnr_live_..." \
-H "Content-Type: application/json" \
-d '{"score": 5}'
Crédits
Les crédits constituent le système de paiement utilisé pour les générations par IA, libellés en USD.
GET /credits/balance AUTH
Obtenir votre solde de crédits actuel.
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
Obtenir l'historique des transactions de crédits.
curl "https://generor.com/api/v1/credits/transactions?type=spend&page=1" \
-H "Authorization: Bearer gnr_live_..."
Paramètres de requête : type (spend, purchase, daily_bonus, weekly_bonus, signup_bonus, refund, gift_sent, gift_received), page, per_page
Fil
GET /feed AUTH
Obtenir les créations publiques des utilisateurs que vous suivez.
curl "https://generor.com/api/v1/feed?generator=image&page=1" \
-H "Authorization: Bearer gnr_live_..."
Paramètres de requête : generator (filtrer par slug), page, per_page
Clés API
Gérez vos propres clés API par programmation. Tous les points d'accès nécessitent une authentification.
GET /api-keys AUTH
Lister vos clés API (affiche le préfixe, pas la clé complète).
POST /api-keys AUTH
Créez une nouvelle clé API. La clé complète est affichée une seule fois dans la réponse.
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."
}
}
Maximum 10 clés actives par compte.
DELETE /api-keys/{id} AUTH
Révoquer une clé API (la désactive immédiatement).
Codes d'erreur
| Code | Statut HTTP | Description |
|---|---|---|
UNAUTHORIZED | 401 | Clé API manquante ou invalide |
FORBIDDEN | 403 | Clé valide mais autorisations ou portée insuffisantes |
NOT_FOUND | 404 | La ressource n'existe pas |
METHOD_NOT_ALLOWED | 405 | Méthode HTTP non prise en charge pour ce point de terminaison |
VALIDATION_ERROR | 400 | Paramètres d'entrée invalides |
INSUFFICIENT_CREDITS | 402 | Crédits insuffisants pour la génération |
RATE_LIMIT_EXCEEDED | 429 | Trop de requêtes, vérifiez l'en-tête Retry-After |
SERVER_ERROR | 500 | Erreur interne du serveur |
