Documentação da Generor API

Crie com mais de 93 geradores de IA — texto, imagem, vídeo, áudio e muito mais.

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

Uma API REST unificada para gerar, navegar e gerenciar conteúdo de IA. Todas as requisições usam JSON. Autentique com um token Bearer.

Autenticação

Autentique-se com um token Bearer no cabeçalho Authorization:

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

As chaves de API começam com gnr_live_ seguido de 40 caracteres hexadecimais. Crie chaves pelo Endpoint de Chaves de API ou nas configurações da sua conta.

Alguns endpoints (navegação de geradores, criações públicas, modelos) funcionam sem autenticação. Endpoints marcados com AUTH exigem uma chave de API válida.

Escopos

As chaves de API podem ter escopo definido para limitar o acesso:

EscopoPermite
readRequisições GET para todos os endpoints
writeOperações POST, PATCH, DELETE (comentários, avaliações, atualizações de perfil, etc.)
generateGeração de conteúdo (consome créditos)

Chaves sem escopos especificados têm acesso total.

Limites de taxa

Os limites são por chave de API. Toda resposta inclui cabeçalhos de limite de taxa:

X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
NívelPor minutoPor horaPor dia
free305005,000
basic602,00020,000
pro1205,00050,000
enterprise30020,000200,000

Requisições não autenticadas são limitadas a 15/minuto por IP. Quando o limite for atingido, você receberá uma resposta 429 com um cabeçalho Retry-After.

Formato da resposta

Todas as respostas usam um envelope JSON consistente:

Sucesso

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

Erro

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

Paginação

Os endpoints de listagem suportam paginação via parâmetros de consulta:

ParâmetroPadrãoDescrição
page1Número da página (começando em 1)
per_page20Itens por página (máx. 100)
sortnewestOrdem de classificação: newest, oldest

Geradores

GET /generators

Lista todos os geradores disponíveis.

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

Parâmetros da consulta: status (active, development, all)

Resposta: Array de geradores com slug, título, descrição, ícone e geradores semelhantes.

GET /generators/{slug}

Obtenha informações detalhadas sobre um gerador específico.

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

GET /generators/{slug}/creations

Explore criações públicas de um gerador. Suporta paginação.

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

POST /generators/{slug}/estimate

Pré-visualize o custo em créditos e o tempo de geração esperado antes chamar /generate. Mesmo formato de corpo que /generate — mas somente leitura: nenhum crédito cobrado, nenhuma criação gravada. Este é exatamente o mesmo número que a interface mostra ao lado do botão Gerar.

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

Resposta:

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

Aberto a chamadores não autenticados — preços/tempos são informações públicas e correspondem ao que a página pública do gerador exibe.

Durações de vídeo ajustadas

Se você passar um valor de seconds que não esteja no supported_durations do modelo, a API ajusta para o valor suportado mais próximo (em caso de empate, escolhe o menor) e exibe a alteração em um bloco adjustments. O custo em créditos e a estimativa de tempo na mesma resposta refletem o valor ajustado — o que /generate realmente fará — e não a solicitação 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"
      }
    }
  }
}

Quando usar

  • Verificação prévia de custo — confirme se o usuário pode pagar pela geração antes de cobrar.
  • Interface de progresso — alimente time_estimate.seconds na sua barra de carregamento para que os usuários saibam quanto tempo esperar.
  • Ajuste de parâmetros — chame sempre que um usuário alterar um menu suspenso; o custo é atualizado sem se comprometer a gerar.

Relação com /generate/estimate é uma chamada separado, opcional. /generate já retorna o credit_cost real que cobrou + credits_remaining depois do fato, então se você não se importa em pagar o preço atual, pode pular /estimate completamente.

Prompt de integração (cole no seu assistente de IA ao configurar o 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

Gere conteúdo usando IA. Esta é uma chamada síncrona — a resposta retorna quando a geração é concluída. Consome créditos com base no modelo selecionado. A geração de texto normalmente leva de 5 a 30 segundos, a geração de imagem de 10 a 60 segundos e a geração de vídeo pode levar vários 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
  }'

Corpo da requisição:

CampoTipoObrigatórioDescrição
promptstringSimO prompt de geração (máximo de 10.000 caracteres)
model_idintegerSimID do modelo de IA. Texto: 1-9999, Imagem: 10001-19999, Vídeo: 20001-29999. Veja Modelos.
privacy_modeintegerNão0 = público (padrão), 1 = privado
team_idintegerNãoCriar sob uma equipe
countintegerNãoNúmero de itens (1-10, padrão 1)
languagestringNãoCódigo de idioma para geração de texto (ex.: "en-US", "nb-NO"). Padrão: "auto"
temperaturefloatNãoCriatividade do LLM (apenas modelos de texto, 0.0-2.0)
preferencestring/intNãoPreferência específica do gerador (ex.: tipo de piada, estilo de poema)
preference_twostring/intNãoPreferência secundária específica do gerador
aspect_ratioint or stringNãoAceita IDs numéricos ou strings de proporção/nome. Imagem: 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". Dica: use strings de proporção como "16:9" e a API mapeia para o ID correto do tipo de modelo.
image_urlstringNãoURL da imagem de referência para imagem-para-imagem, transferência de estilo ou imagem-para-vídeo (I2V).
secondsintegerNãoDuração do vídeo em segundos (apenas modelos de vídeo). Cada provedor aceita apenas um conjunto discreto — consulte GET /models/video/{id} para supported_durations. Se você passar um valor não suportado, a API o ajusta para o mais próximo suportado e relata o ajuste em adjustments.seconds na resposta.
generate_audiobooleanNãoAlternância de áudio nativo para Veo 3.1 e Seedance 1.5 Pro (vídeo). Outros modelos de vídeo incorporam o comportamento de áudio e ignoram esta opção.
ending_frame_urlstringNãoÂncora de quadro final para modelos que oferecem controle de quadro inicial+final (Veo 3.1, Wan 2.6 I2V, Seedance Pro Lite, Kling v3). Combine com image_url para transições ou loops contínuos.
reference_imagesarray<string>NãoAté 9 URLs de imagem de referência. Compatível com: 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). A ordem é preservada e apresentada ao modelo como [Image1] … [ImageN] quando os prompts as referenciam.
reference_videosarray<string>NãoAté 3 URLs de vídeo de referência. Usado por Seedance 2.0 (Replicate) e Dreamina Seedance 2.0 (BytePlus direto) para coerência de movimento/estilo.
reference_audiostringNãoURL de áudio de referência para continuidade de música/voz. Atualmente usado pelo Dreamina Seedance 2.0 (modelo 20060-20062, BytePlus direto).
video_urlstringNãoURL do vídeo de origem — exigida pelo Happy Horse Video Edit (modelo 20051) e usada pelo Dreamina Seedance 2.0 (20060-20062) para os modos de edição e extensão de vídeo.
parametersobjectNãoCampos específicos do gerador — os mesmos menus suspensos que o frontend expõe, indexados por seus IDs de DOM. Veja Parâmetros do Gerador abaixo. Chaves desconhecidas / inválidas são descartadas silenciosamente.

Parâmetros do Gerador

O conjunto completo de campos ajustáveis de cada gerador fica em um esquema por gerador (a mesma fonte usada pelos menus suspensos do site e pelo preenchimento via URL). Passe qualquer um desses campos no objeto parameters em uma requisição de geração para controlá-los de forma programática.

Obtenha o esquema de qualquer gerador em GET /generators/{slug} — o array parameters na resposta lista cada campo com seu id, type (enum, number ou model), options (ou 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"
    }
  }'
Por que um endpoint de descoberta? A plataforma tem mais de 100 geradores, cada um com suas próprias configurações. Em vez de fixá-los na especificação da API, você busca o schema ao vivo do gerador para o qual está desenvolvendo, e a API espelha exatamente os menus suspensos que você vê na página pública.

Campos adicionais de geração de texto

Para geradores de texto (model_id 1-9999), estes campos de nível superior do corpo são encaminhados ao endpoint do LLM quando relevante:

CampoTipoDescrição
user_textstringTexto complementar livre (ex.: conteúdo de origem para resumir / transformar)
user_text_twostringTexto complementar secundário (usado por geradores com duas entradas de texto)
avoid_duplicatesbooleanDirecione o modelo para resultados inéditos ao longo de um lote
thinking_modestringPara modelos com capacidade de raciocínio: off, on ou high
story_contextstringHistória de origem passada para story, story-part e storyboard para a escrita de cenas alinhada à marca
character_context / character_name / character_idstring / intContinuidade de personagem para storyboards, partes da história e criações subsequentes
support_forintegerID da criação pai — vincula esta geração como criação filha / complementar
modestringAlternância de modo específica do gerador (ex.: fase do jogo)
model_speechintegerModelo de fala para combinar com o texto gerado (usado em horóscopos narrados, podcasts, etc.)
item_index / total_countintegerDicas de geração sequencial (usadas ao gerar itens em ordem, ex.: etapas da solução)
translation_of / source_languageinteger / stringTraduza uma criação existente em vez de gerar do zero

Resposta (201 Created) — exemplo de gerador 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
  }
}

Resposta (201 Created) — exemplo de gerador de imagens:

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

Durações de vídeo ajustadas — se o seconds do chamador não estiver no supported_durations do modelo, a API ajusta para o valor compatível mais próximo antes de invocar o provedor e adiciona um bloco adjustments.seconds à resposta, idêntico em formato ao de /estimate. Isso impede que os provedores assumam valores não compatíveis silenciosamente.

Como funcionam os campos de custo

  • credit_cost — o valor real deduzido, calculado como balance_before − balance_after. Esta é a fonte da verdade: use-a para registros, faturamento e atualização dos saldos dos usuários.
  • credit_cost_estimated — a estimativa antecipada do catálogo (o mesmo número que /estimate teria previsto). Incluída para transparência e monitoramento de desvios. Frequentemente difere de credit_cost para preços de vídeo / por segundo / por caractere, onde a cobrança real é calculada dentro da chamada ao provedor.
  • time_taken_seconds — duração real de relógio. Compare com time_estimate.seconds de /estimate para validar a previsão de tempo histórico.
Observação: Criações de texto retornam campos específicos do gerador (por exemplo, text, illustration_desc para piadas; dish_name, ingredients para receitas). Use GET /creations/{id} para buscar os dados completos da criação posteriormente.

Criações

GET /creations AUTH

Lista suas próprias criações.

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

Parâmetros da consulta: generator (filtrar por slug), page, per_page, sort

GET /creations/public

Explore todas as criações públicas de todos os geradores.

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

GET /creations/search

Buscar criações públicas pelo texto do prompt.

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

GET /creations/{id}

Obtenha uma única criação com detalhes completos, imagens e dados específicos do gerador.

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

Criações públicas são acessíveis a qualquer pessoa. Criações privadas exigem autenticação como proprietário.

A resposta inclui:

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

Verifica o status de geração de uma criação (útil se você estiver acompanhando registros de geração).

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

Valores de status: pending, generating, completed, failed, cancelled

PATCH /creations/{id} AUTH

Atualizar uma criação sua.

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

Excluir uma criação que você possui (exclusão suave).

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

Modelos

GET /models

Lista todos os modelos de IA disponíveis agrupados por tipo.

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

GET /models/{type}

Lista os modelos de um tipo específico.

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

Tipos válidos: text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval

Resposta 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 incluir adicionalmente a estrutura completa de capacidade do provedor:

{
  "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 imagem que variam a proporção incluem um array aspect_ratios equivalente (o lado da imagem tem 6 entradas: quadrado, vertical, horizontal, amplo, alto, mais match_input_image para os modos img2img).

Como usar esses campos

  • supported_durations — passe qualquer valor aqui via seconds. Valores não compatíveis são ajustados no servidor e relatados em adjustments.seconds.
  • qualities — para trocar a resolução, procure o model_id da resolução desejada e passe-o como seu model_id. (As resoluções são modelos irmãos, não um parâmetro de tempo de execução.)
  • supports_audio — quando true, você pode passar "generate_audio": true em /generate. Quando false, a flag é ignorada.
  • supports_end_frame — quando true, você pode combinar image_url (quadro inicial) com ending_frame_url para transições ou loops contínuos.
  • aspect_ratios — passe o id (inteiro) ou o ratio (string) no campo aspect_ratio em /generate. Ambas as formas funcionam.
Faixas de Model ID: texto (1-9999), imagem (10001-19999), vídeo (20001-29999), fala (30001-39999), música (40001-49999), efeitos sonoros (50001-59999).

GET /models/{type}/{id}

Obtenha os detalhes e preços de um modelo específico.

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

Usuários

GET /users/me AUTH

Obtenha seu perfil, saldo de créditos e estatísticas.

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

Resposta:

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

Atualizar seu 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}

Obtenha o perfil público de um usuário.

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

GET /users/{username}/creations

Lista as criações públicas de um usuário. Suporta paginação.

GET /users/{username}/followers

Lista os seguidores de um usuário. Suporta paginação.

GET /users/{username}/following

Lista quem um usuário segue. Suporta paginação.

POST /users/{username}/follow AUTH

Seguir um usuário.

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

DELETE /users/{username}/follow AUTH

Deixar de seguir um usuário.

GET /users/{username}/follow AUTH

Verifica se você segue um usuário. Retorna {"following": true/false}.

Equipes

Todos os endpoints de equipe exigem autenticação.

GET /teams AUTH

Lista suas equipes.

POST /teams AUTH

Criar uma nova equipe.

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

Obtenha os detalhes da equipe com a lista de membros.

DELETE /teams/{id} AUTH

Sair de uma equipe.

POST /teams/{id}/members AUTH

Adicione um membro por nome de usuário: {"username": "janedoe"}

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

Remover um membro da equipe (somente proprietário).

POST /teams/join/{invite_code} AUTH

Entre em uma equipe por meio de um código de convite.

POST /teams/{id}/invite AUTH

Gerar novo código de convite (somente proprietário).

GET /teams/{id}/creations AUTH

Lista as criações da equipe. Suporta paginação.

Comentários

GET /creations/{id}/comments

Lista os comentários de uma criação. Suporta paginação.

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

POST /creations/{id}/comments AUTH

Adicione um comentário.

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

Excluir seu próprio comentário.

POST /comments/{id}/vote AUTH

Vote em um comentário: {"vote": "up"} ou {"vote": "down"}

Avaliações

GET /creations/{id}/rating

Obtenha a avaliação média de uma criação.

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

POST /creations/{id}/rating AUTH

Avalie uma criação (1-5). Atualiza a avaliação existente se já avaliada.

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

Os créditos são o sistema de pagamento usado para gerações de IA, denominados em USD.

GET /credits/balance AUTH

Obtenha seu saldo de créditos atual.

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

Obtenha o histórico de transações de créditos.

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

Parâmetros da consulta: type (spend, purchase, daily_bonus, weekly_bonus, signup_bonus, refund, gift_sent, gift_received), page, per_page

Feed

GET /feed AUTH

Obtenha criações públicas de usuários que você segue.

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

Parâmetros da consulta: generator (filtrar por slug), page, per_page

Chaves de API

Gerencie suas próprias chaves de API de forma programática. Todos os endpoints exigem autenticação.

GET /api-keys AUTH

Lista suas chaves de API (mostra o prefixo, não a chave completa).

POST /api-keys AUTH

Crie uma nova chave de API. A chave completa é exibida apenas uma vez na resposta.

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 de 10 chaves ativas por conta.

DELETE /api-keys/{id} AUTH

Revogar uma chave de API (desativa-a imediatamente).

Códigos de erro

CódigoStatus HTTPDescrição
UNAUTHORIZED401Chave de API ausente ou inválida
FORBIDDEN403Chave válida, mas com permissões ou escopo insuficientes
NOT_FOUND404O recurso não existe
METHOD_NOT_ALLOWED405Método HTTP não suportado para este endpoint
VALIDATION_ERROR400Parâmetros de entrada inválidos
INSUFFICIENT_CREDITS402Créditos insuficientes para a geração
RATE_LIMIT_EXCEEDED429Muitas requisições, verifique o cabeçalho Retry-After
SERVER_ERROR500Erro interno do servidor