Documentación de la API de Generor
Crea con más de 93 generadores de IA — texto, imagen, vídeo, audio y mucho más.
Una API REST unificada para generar, explorar y gestionar contenido de IA. Todas las solicitudes usan JSON. Autentícate con un token Bearer.
Autenticación
Autentícate con un token Bearer en la cabecera Authorization:
curl https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_your_api_key_here"
Las claves de API empiezan por gnr_live_ seguido de 40 caracteres hexadecimales. Crea claves a través de Endpoint de claves de API o en los ajustes de tu cuenta.
Algunos endpoints (explorar generadores, creaciones públicas, modelos) funcionan sin autenticación. Los endpoints marcados con AUTH requieren una clave de API válida.
Ámbitos
Las claves de API se pueden limitar en su alcance para restringir el acceso:
| Ámbito | Permite |
|---|---|
read | Solicitudes GET a todos los endpoints |
write | Operaciones POST, PATCH, DELETE (comentarios, valoraciones, actualizaciones de perfil, etc.) |
generate | Generación de contenido (consume créditos) |
Las claves sin ámbitos especificados tienen acceso completo.
Límites de frecuencia
Los límites son por clave de API. Cada respuesta incluye cabeceras de límite de tasa:
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
| Nivel | Por minuto | Por hora | Por día |
|---|---|---|---|
| free | 30 | 500 | 5,000 |
| basic | 60 | 2,000 | 20,000 |
| pro | 120 | 5,000 | 50,000 |
| enterprise | 300 | 20,000 | 200,000 |
Las solicitudes no autenticadas están limitadas a 15/minuto por IP. Cuando se aplica el límite, recibirás una respuesta 429 con una cabecera Retry-After.
Formato de respuesta
Todas las respuestas usan un envoltorio JSON consistente:
Éxito
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 142,
"total_pages": 8,
"has_next": true,
"has_prev": false
}
}
Error
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Creation not found",
"status": 404
}
}
Paginación
Los endpoints de listado admiten paginación mediante parámetros de consulta:
| Parámetro | Predeterminado | Descripción |
|---|---|---|
page | 1 | Número de página (empezando por 1) |
per_page | 20 | Elementos por página (máx. 100) |
sort | newest | Orden: newest, oldest |
Generadores
GET /generators
Lista todos los generadores disponibles.
curl https://generor.com/api/v1/generators
Parámetros de consulta: status (active, development, all)
Respuesta: Array de generadores con slug, título, descripción, icono y generadores similares.
GET /generators/{slug}
Obtén información detallada sobre un generador específico.
curl https://generor.com/api/v1/generators/image
GET /generators/{slug}/creations
Explora las creaciones públicas de un generador. Admite paginación.
curl "https://generor.com/api/v1/generators/joke/creations?page=1&per_page=10"
POST /generators/{slug}/estimate
Consulta el coste en créditos y el tiempo de generación previsto antes de llamar a /generate. Misma estructura de cuerpo que /generate, pero de solo lectura: no se cobran créditos ni se guarda ninguna creación. Es exactamente el mismo número que muestra la interfaz junto al botón Generar.
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"
}
}'
Respuesta:
{
"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"
}
}
}
Abierto a llamantes no autenticados: la información de precios y tiempos es pública y coincide con lo que muestra la página pública del generador.
Duraciones de vídeo ajustadas
Si pasas un valor seconds que no está en el supported_durations del modelo, la API lo ajusta al valor admitido más cercano (en caso de empate, al menor) y refleja el cambio en un bloque adjustments. El coste en créditos y la estimación de tiempo de la misma respuesta reflejan el valor ajustado —lo que /generate hará realmente— y no la solicitud original.
{
"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"
}
}
}
}
Cuándo usarlo
- Comprobación previa del coste — confirma que un usuario puede permitirse la generación antes de cobrar.
- Interfaz de progreso — introduce
time_estimate.secondsen tu barra de carga para que los usuarios sepan cuánto deben esperar. - Ajuste de parámetros — llámalo cada vez que un usuario cambie un desplegable; el coste se actualiza sin comprometerse a generar.
Relación con /generate — /estimate es una llamada separado, opcional. /generate ya devuelve el credit_cost real que ha cobrado + credits_remaining después, así que si te parece bien pagar el precio en vivo que sea, puedes omitir /estimate por completo.
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 contenido con IA. Esta es una llamada síncrona — la respuesta se devuelve cuando la generación se completa. Cuesta créditos según el modelo seleccionado. La generación de texto suele tardar entre 5 y 30 segundos, la de imágenes entre 10 y 60 segundos, y la de vídeo puede tardar varios minutos.
# 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
}'
Cuerpo de la solicitud:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
prompt | string | Sí | El prompt de generación (máx. 10.000 caracteres) |
model_id | integer | Sí | ID del modelo de IA. Texto: 1-9999, Imagen: 10001-19999, Vídeo: 20001-29999. Consulta Modelos. |
privacy_mode | integer | No | 0 = público (predeterminado), 1 = privado |
team_id | integer | No | Crear dentro de un equipo |
count | integer | No | Número de elementos (1-10, predeterminado 1) |
language | string | No | Código de idioma para la generación de texto (p. ej. "en-US", "nb-NO"). Predeterminado: "auto" |
temperature | float | No | Creatividad del LLM (solo modelos de texto, 0.0-2.0) |
preference | string/int | No | Preferencia específica del generador (p. ej., tipo de chiste, estilo de poema) |
preference_two | string/int | No | Preferencia secundaria específica del generador |
aspect_ratio | int or string | No | Acepta IDs numéricos o cadenas de proporción/nombre. Imagen: 1 / "1:1" / "square", 2 / "3:4" / "vertical", 3 / "4:3" / "horizontal", 4 / "16:9" / "wide", 5 / "9:16" / "tall". Vídeo: 1 / "16:9" / "wide", 2 / "9:16" / "tall". Consejo: usa cadenas de proporción como "16:9" y la API las asignará al ID correcto según el tipo de modelo. |
image_url | string | No | URL de imagen de referencia para imagen a imagen, transferencia de estilo o imagen a vídeo (I2V). |
seconds | integer | No | Duración del vídeo en segundos (solo modelos de vídeo). Cada proveedor acepta únicamente un conjunto discreto — consulta GET /models/video/{id} para supported_durations. Si pasas un valor no admitido, la API lo ajusta al valor admitido más cercano e informa del ajuste en adjustments.seconds de la respuesta. |
generate_audio | boolean | No | Interruptor de audio nativo para Veo 3.1 y Seedance 1.5 Pro (vídeo). Otros modelos de vídeo integran el comportamiento del audio e ignoran esta opción. |
ending_frame_url | string | No | Anclaje de fotograma final para modelos que admiten control de fotograma inicial+final (Veo 3.1, Wan 2.6 I2V, Seedance Pro Lite, Kling v3). Combínalo con image_url para transiciones o bucles sin interrupciones. |
reference_images | array<string> | No | Hasta 9 URL de imagen de referencia. Compatible con: Veo 3.1 (máx. 3), Seedance 2.0 (máx. 9), Happy Horse R2V (máx. 9), Happy Horse Video Edit (máx. 5). El orden se conserva y se expone al modelo como [Image1] … [ImageN] cuando los prompts las referencian. |
reference_videos | array<string> | No | Hasta 3 URL de vídeo de referencia. Usadas por Seedance 2.0 (Replicate) y Dreamina Seedance 2.0 (BytePlus direct) para la coherencia de movimiento/estilo. |
reference_audio | string | No | URL de audio de referencia para la continuidad de música/voz. Actualmente lo usa Dreamina Seedance 2.0 (modelo 20060-20062, BytePlus directo). |
video_url | string | No | URL del vídeo de origen — requerida por Happy Horse Video Edit (modelo 20051) y usada por Dreamina Seedance 2.0 (20060-20062) para los modos de edición y extensión de vídeo. |
parameters | object | No | Campos específicos del generador: los mismos menús desplegables que expone el frontend, indexados por sus IDs del DOM. Consulta Parámetros del generador más abajo. Las claves desconocidas o no válidas se descartan silenciosamente. |
Parámetros del generador
El conjunto completo de campos ajustables de cada generador reside en un esquema específico de cada generador (la misma fuente que utilizan los menús desplegables del sitio y el prellenado por URL). Pasa cualquiera de esos campos en el objeto parameters en una solicitud de generación para controlarlos mediante programación.
Obtén el esquema de cualquier generador en GET /generators/{slug} — el array parameters de la respuesta enumera cada campo con su id, type (enum, number o model), options (o min/max), default y 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"
}
}'
Campos adicionales de generación de texto
Para los generadores de texto (model_id 1-9999), estos campos de nivel superior del cuerpo se reenvían al endpoint del LLM cuando procede:
| Campo | Tipo | Descripción |
|---|---|---|
user_text | string | Texto complementario de formato libre (p. ej., contenido de origen para resumir o transformar) |
user_text_two | string | Texto complementario secundario (usado por generadores con dos entradas de texto) |
avoid_duplicates | boolean | Sesga el modelo hacia resultados originales en un lote |
thinking_mode | string | Para modelos con capacidad de razonamiento: off, on o high |
story_context | string | Historia de origen pasada a story, story-part y storyboard para la redacción de escenas acorde con la marca |
character_context / character_name / character_id | string / int | Continuidad de personajes para guiones gráficos, partes de historias y creaciones de seguimiento |
support_for | integer | ID de la creación principal: vincula esta generación como creación secundaria / complementaria |
mode | string | Conmutador de modo específico del generador (p. ej., fase del juego) |
model_speech | integer | Modelo de voz para combinar con el texto generado (usado para horóscopos narrados, pódcasts, etc.) |
item_index / total_count | integer | Sugerencias de generación secuencial (usadas al generar elementos en orden, p. ej. pasos de una solución) |
translation_of / source_language | integer / string | Traduce una creación existente en lugar de generar desde cero |
Respuesta (201 Created) — ejemplo de generador de texto:
{
"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
}
}
Respuesta (201 Created) — ejemplo de generador de imágenes:
{
"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
}
}
Duraciones de vídeo ajustadas — si el seconds del solicitante no está en el supported_durations del modelo, la API ajusta al valor admitido más cercano antes de invocar al proveedor y añade un bloque adjustments.seconds a la respuesta con la misma estructura que el de /estimate. Esto evita que los proveedores apliquen silenciosamente valores predeterminados a valores no admitidos.
Cómo funcionan los campos de coste
credit_cost— el importe real deducido, calculado comobalance_before − balance_after. Esta es la fuente de verdad: úsala para el registro, la facturación y la actualización de los saldos de los usuarios.credit_cost_estimated— la estimación previa del catálogo (el mismo número que/estimatehabría predicho). Se incluye por transparencia y para monitorizar desviaciones. A menudo difiere decredit_costen los precios de vídeo / por segundo / por carácter, donde el cargo real se calcula dentro de la llamada al proveedor.time_taken_seconds— duración real en tiempo de reloj. Compárala contime_estimate.secondsde/estimatepara validar la predicción de tiempo histórico.
text, illustration_desc para chistes; dish_name, ingredients para recetas). Usa GET /creations/{id} para obtener más tarde los datos completos de la creación. Creaciones
GET /creations AUTH
Lista tus propias creaciones.
curl https://generor.com/api/v1/creations \
-H "Authorization: Bearer gnr_live_..."
Parámetros de consulta: generator (filtrar por slug), page, per_page, sort
GET /creations/public
Explora todas las creaciones públicas de todos los generadores.
curl "https://generor.com/api/v1/creations/public?generator=image&page=1"
GET /creations/search
Busca creaciones públicas por el texto del prompt.
curl "https://generor.com/api/v1/creations/search?q=sunset+mountain"
GET /creations/{id}
Obtén una única creación con todos los detalles, imágenes y datos específicos del generador.
curl https://generor.com/api/v1/creations/12345
Las creaciones públicas son accesibles para cualquiera. Las creaciones privadas requieren autenticarse como propietario.
La respuesta incluye:
{
"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
Comprueba el estado de generación de una creación (útil si estás haciendo seguimiento de registros de generación).
curl https://generor.com/api/v1/creations/12345/status \
-H "Authorization: Bearer gnr_live_..."
Valores de estado: pending, generating, completed, failed, cancelled
PATCH /creations/{id} AUTH
Actualiza una creación de tu propiedad.
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 | Valores |
|---|---|
privacy_mode | 0 (público), 1 (privado) |
license | 1 (Open GO-1.0), 2 (Exclusive GE-1.0) |
DELETE /creations/{id} AUTH
Elimina una creación de tu propiedad (eliminación lógica).
curl -X DELETE https://generor.com/api/v1/creations/12345 \
-H "Authorization: Bearer gnr_live_..."
Modelos
GET /models
Lista todos los modelos de IA disponibles agrupados por tipo.
curl https://generor.com/api/v1/models
GET /models/{type}
Lista los modelos de un tipo específico.
curl https://generor.com/api/v1/models/image
Tipos válidos: text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval
Respuesta por modelo:
{
"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
}
Modelos de vídeo incluye además la estructura completa de capacidades del proveedor:
{
"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" }
]
}
Modelos de imagen que varían la relación de aspecto incluyen un array aspect_ratios equivalente (el lado de imagen tiene 6 entradas: cuadrada, vertical, horizontal, panorámica, alargada, más match_input_image para los modos img2img).
Cómo usar estos campos
supported_durations— pasa cualquier valor aquí medianteseconds. Los valores no admitidos se ajustan en el servidor y se informan enadjustments.seconds.qualities— para cambiar de resolución, busca elmodel_idde la resolución que quieras y pásalo como tumodel_id. (Las resoluciones son modelos hermanos, no un parámetro de ejecución.)supports_audio— cuando estrue, puedes pasar"generate_audio": trueen/generate. Cuando esfalse, la marca se ignora.supports_end_frame— cuando estrue, puedes combinarimage_url(fotograma inicial) conending_frame_urlpara transiciones o bucles fluidos.aspect_ratios— pasa elid(entero) o elratio(cadena) en el campoaspect_ratiode/generate. Ambas formas funcionan.
GET /models/{type}/{id}
Obtén los detalles y precios de un modelo específico.
curl https://generor.com/api/v1/models/image/10001
Usuarios
GET /users/me AUTH
Obtén tu perfil, saldo de créditos y estadísticas.
curl https://generor.com/api/v1/users/me \
-H "Authorization: Bearer gnr_live_..."
Respuesta:
{
"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
Actualiza tu perfil.
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}
Obtén el perfil público de un usuario.
curl https://generor.com/api/v1/users/johndoe
GET /users/{username}/creations
Lista las creaciones públicas de un usuario. Admite paginación.
GET /users/{username}/followers
Lista los seguidores de un usuario. Admite paginación.
GET /users/{username}/following
Lista a quién sigue un usuario. Admite paginación.
POST /users/{username}/follow AUTH
Seguir a un usuario.
curl -X POST https://generor.com/api/v1/users/johndoe/follow \
-H "Authorization: Bearer gnr_live_..."
DELETE /users/{username}/follow AUTH
Dejar de seguir a un usuario.
GET /users/{username}/follow AUTH
Comprueba si sigues a un usuario. Devuelve {"following": true/false}.
Equipos
Todos los endpoints de equipo requieren autenticación.
GET /teams AUTH
Lista tus equipos.
POST /teams AUTH
Crea un nuevo equipo.
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
Obtén los detalles del equipo con la lista de miembros.
DELETE /teams/{id} AUTH
Abandonar un equipo.
POST /teams/{id}/members AUTH
Añade un miembro por nombre de usuario: {"username": "janedoe"}
DELETE /teams/{id}/members/{user_id} AUTH
Eliminar a un miembro del equipo (solo el propietario).
POST /teams/join/{invite_code} AUTH
Únete a un equipo mediante un código de invitación.
POST /teams/{id}/invite AUTH
Regenerar el código de invitación (solo el propietario).
GET /teams/{id}/creations AUTH
Lista las creaciones del equipo. Admite paginación.
Comentarios
GET /creations/{id}/comments
Lista los comentarios de una creación. Admite paginación.
curl https://generor.com/api/v1/creations/12345/comments
POST /creations/{id}/comments AUTH
Añade un comentario.
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 tu propio comentario.
POST /comments/{id}/vote AUTH
Votar un comentario: {"vote": "up"} o {"vote": "down"}
Valoraciones
GET /creations/{id}/rating
Obtén la valoración media de una creación.
// Response:
{"success": true, "data": {"creation_id": 12345, "average": 4.2, "count": 15}}
POST /creations/{id}/rating AUTH
Valora una creación (1-5). Actualiza la valoración existente si ya está valorada.
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éditos
Los créditos son el sistema de pago utilizado para las generaciones de IA, expresados en USD.
GET /credits/balance AUTH
Obtén tu saldo actual de créditos.
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
Obtén el historial de transacciones de créditos.
curl "https://generor.com/api/v1/credits/transactions?type=spend&page=1" \
-H "Authorization: Bearer gnr_live_..."
Parámetros de consulta: type (spend, purchase, daily_bonus, weekly_bonus, signup_bonus, refund, gift_sent, gift_received), page, per_page
Feed
GET /feed AUTH
Obtén las creaciones públicas de los usuarios que sigues.
curl "https://generor.com/api/v1/feed?generator=image&page=1" \
-H "Authorization: Bearer gnr_live_..."
Parámetros de consulta: generator (filtrar por slug), page, per_page
Claves API
Gestiona tus propias claves de API de forma programática. Todos los endpoints requieren autenticación.
GET /api-keys AUTH
Lista tus claves de API (muestra el prefijo, no la clave completa).
POST /api-keys AUTH
Crea una nueva clave de API. La clave completa se muestra solo una vez en la respuesta.
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."
}
}
Máximo 10 claves activas por cuenta.
DELETE /api-keys/{id} AUTH
Revoca una clave de API (la desactiva de inmediato).
Códigos de error
| Código | Estado HTTP | Descripción |
|---|---|---|
UNAUTHORIZED | 401 | Clave de API ausente o no válida |
FORBIDDEN | 403 | Clave válida pero con permisos o alcance insuficientes |
NOT_FOUND | 404 | El recurso no existe |
METHOD_NOT_ALLOWED | 405 | Método HTTP no compatible con este endpoint |
VALIDATION_ERROR | 400 | Parámetros de entrada no válidos |
INSUFFICIENT_CREDITS | 402 | No hay créditos suficientes para la generación |
RATE_LIMIT_EXCEEDED | 429 | Demasiadas solicitudes, revisa la cabecera Retry-After |
SERVER_ERROR | 500 | Error interno del servidor |
