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.

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

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:

ÁmbitoPermite
readSolicitudes GET a todos los endpoints
writeOperaciones POST, PATCH, DELETE (comentarios, valoraciones, actualizaciones de perfil, etc.)
generateGeneració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
NivelPor minutoPor horaPor día
free305005,000
basic602,00020,000
pro1205,00050,000
enterprise30020,000200,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ámetroPredeterminadoDescripción
page1Número de página (empezando por 1)
per_page20Elementos por página (máx. 100)
sortnewestOrden: 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.seconds en 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.

Prompt de integración (pégalo en tu asistente de IA al configurar 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 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:

CampoTipoObligatorioDescripción
promptstringEl prompt de generación (máx. 10.000 caracteres)
model_idintegerID del modelo de IA. Texto: 1-9999, Imagen: 10001-19999, Vídeo: 20001-29999. Consulta Modelos.
privacy_modeintegerNo0 = público (predeterminado), 1 = privado
team_idintegerNoCrear dentro de un equipo
countintegerNoNúmero de elementos (1-10, predeterminado 1)
languagestringNoCódigo de idioma para la generación de texto (p. ej. "en-US", "nb-NO"). Predeterminado: "auto"
temperaturefloatNoCreatividad del LLM (solo modelos de texto, 0.0-2.0)
preferencestring/intNoPreferencia específica del generador (p. ej., tipo de chiste, estilo de poema)
preference_twostring/intNoPreferencia secundaria específica del generador
aspect_ratioint or stringNoAcepta 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_urlstringNoURL de imagen de referencia para imagen a imagen, transferencia de estilo o imagen a vídeo (I2V).
secondsintegerNoDuració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_audiobooleanNoInterruptor 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_urlstringNoAnclaje 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_imagesarray<string>NoHasta 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_videosarray<string>NoHasta 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_audiostringNoURL de audio de referencia para la continuidad de música/voz. Actualmente lo usa Dreamina Seedance 2.0 (modelo 20060-20062, BytePlus directo).
video_urlstringNoURL 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.
parametersobjectNoCampos 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"
    }
  }'
¿Por qué un endpoint de descubrimiento? La plataforma cuenta con más de 100 generadores, cada uno con sus propios ajustes. En lugar de fijarlos en la especificación de la API, obtienes el esquema en vivo del generador con el que estás trabajando y la API refleja exactamente los menús desplegables que ves en la página pública.

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:

CampoTipoDescripción
user_textstringTexto complementario de formato libre (p. ej., contenido de origen para resumir o transformar)
user_text_twostringTexto complementario secundario (usado por generadores con dos entradas de texto)
avoid_duplicatesbooleanSesga el modelo hacia resultados originales en un lote
thinking_modestringPara modelos con capacidad de razonamiento: off, on o high
story_contextstringHistoria de origen pasada a story, story-part y storyboard para la redacción de escenas acorde con la marca
character_context / character_name / character_idstring / intContinuidad de personajes para guiones gráficos, partes de historias y creaciones de seguimiento
support_forintegerID de la creación principal: vincula esta generación como creación secundaria / complementaria
modestringConmutador de modo específico del generador (p. ej., fase del juego)
model_speechintegerModelo de voz para combinar con el texto generado (usado para horóscopos narrados, pódcasts, etc.)
item_index / total_countintegerSugerencias de generación secuencial (usadas al generar elementos en orden, p. ej. pasos de una solución)
translation_of / source_languageinteger / stringTraduce 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 como balance_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 /estimate habría predicho). Se incluye por transparencia y para monitorizar desviaciones. A menudo difiere de credit_cost en 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 con time_estimate.seconds de /estimate para validar la predicción de tiempo histórico.
Nota: Las creaciones de texto devuelven campos específicos del generador (p. ej., 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}'
CampoValores
privacy_mode0 (público), 1 (privado)
license1 (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í mediante seconds. Los valores no admitidos se ajustan en el servidor y se informan en adjustments.seconds.
  • qualities — para cambiar de resolución, busca el model_id de la resolución que quieras y pásalo como tu model_id. (Las resoluciones son modelos hermanos, no un parámetro de ejecución.)
  • supports_audio — cuando es true, puedes pasar "generate_audio": true en /generate. Cuando es false, la marca se ignora.
  • supports_end_frame — cuando es true, puedes combinar image_url (fotograma inicial) con ending_frame_url para transiciones o bucles fluidos.
  • aspect_ratios — pasa el id (entero) o el ratio (cadena) en el campo aspect_ratio de /generate. Ambas formas funcionan.
Rangos de ID de modelo: texto (1-9999), imagen (10001-19999), vídeo (20001-29999), voz (30001-39999), música (40001-49999), efectos de sonido (50001-59999).

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ódigoEstado HTTPDescripción
UNAUTHORIZED401Clave de API ausente o no válida
FORBIDDEN403Clave válida pero con permisos o alcance insuficientes
NOT_FOUND404El recurso no existe
METHOD_NOT_ALLOWED405Método HTTP no compatible con este endpoint
VALIDATION_ERROR400Parámetros de entrada no válidos
INSUFFICIENT_CREDITS402No hay créditos suficientes para la generación
RATE_LIMIT_EXCEEDED429Demasiadas solicitudes, revisa la cabecera Retry-After
SERVER_ERROR500Error interno del servidor