Documentação da Generor API
Crie com mais de 93 geradores de IA — texto, imagem, vídeo, áudio e muito mais.
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:
| Escopo | Permite |
|---|---|
read | Requisições GET para todos os endpoints |
write | Operações POST, PATCH, DELETE (comentários, avaliações, atualizações de perfil, etc.) |
generate | Geraçã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ível | Por minuto | Por hora | Por dia |
|---|---|---|---|
| free | 30 | 500 | 5,000 |
| basic | 60 | 2,000 | 20,000 |
| pro | 120 | 5,000 | 50,000 |
| enterprise | 300 | 20,000 | 200,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âmetro | Padrão | Descrição |
|---|---|---|
page | 1 | Número da página (começando em 1) |
per_page | 20 | Itens por página (máx. 100) |
sort | newest | Ordem 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.secondsna 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.
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:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
prompt | string | Sim | O prompt de geração (máximo de 10.000 caracteres) |
model_id | integer | Sim | ID do modelo de IA. Texto: 1-9999, Imagem: 10001-19999, Vídeo: 20001-29999. Veja Modelos. |
privacy_mode | integer | Não | 0 = público (padrão), 1 = privado |
team_id | integer | Não | Criar sob uma equipe |
count | integer | Não | Número de itens (1-10, padrão 1) |
language | string | Não | Código de idioma para geração de texto (ex.: "en-US", "nb-NO"). Padrão: "auto" |
temperature | float | Não | Criatividade do LLM (apenas modelos de texto, 0.0-2.0) |
preference | string/int | Não | Preferência específica do gerador (ex.: tipo de piada, estilo de poema) |
preference_two | string/int | Não | Preferência secundária específica do gerador |
aspect_ratio | int or string | Não | Aceita 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_url | string | Não | URL da imagem de referência para imagem-para-imagem, transferência de estilo ou imagem-para-vídeo (I2V). |
seconds | integer | Não | Duraçã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_audio | boolean | Não | Alternâ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_url | string | Nã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_images | array<string> | Não | Até 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_videos | array<string> | Não | Até 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_audio | string | Não | URL de áudio de referência para continuidade de música/voz. Atualmente usado pelo Dreamina Seedance 2.0 (modelo 20060-20062, BytePlus direto). |
video_url | string | Não | URL 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. |
parameters | object | Não | Campos 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"
}
}'
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:
| Campo | Tipo | Descrição |
|---|---|---|
user_text | string | Texto complementar livre (ex.: conteúdo de origem para resumir / transformar) |
user_text_two | string | Texto complementar secundário (usado por geradores com duas entradas de texto) |
avoid_duplicates | boolean | Direcione o modelo para resultados inéditos ao longo de um lote |
thinking_mode | string | Para modelos com capacidade de raciocínio: off, on ou high |
story_context | string | História de origem passada para story, story-part e storyboard para a escrita de cenas alinhada à marca |
character_context / character_name / character_id | string / int | Continuidade de personagem para storyboards, partes da história e criações subsequentes |
support_for | integer | ID da criação pai — vincula esta geração como criação filha / complementar |
mode | string | Alternância de modo específica do gerador (ex.: fase do jogo) |
model_speech | integer | Modelo de fala para combinar com o texto gerado (usado em horóscopos narrados, podcasts, etc.) |
item_index / total_count | integer | Dicas de geração sequencial (usadas ao gerar itens em ordem, ex.: etapas da solução) |
translation_of / source_language | integer / string | Traduza 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 comobalance_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/estimateteria previsto). Incluída para transparência e monitoramento de desvios. Frequentemente difere decredit_costpara 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 comtime_estimate.secondsde/estimatepara validar a previsão de tempo histórico.
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}'
| Campo | Valores |
|---|---|
privacy_mode | 0 (público), 1 (privado) |
license | 1 (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 viaseconds. Valores não compatíveis são ajustados no servidor e relatados emadjustments.seconds.qualities— para trocar a resolução, procure omodel_idda resolução desejada e passe-o como seumodel_id. (As resoluções são modelos irmãos, não um parâmetro de tempo de execução.)supports_audio— quandotrue, você pode passar"generate_audio": trueem/generate. Quandofalse, a flag é ignorada.supports_end_frame— quandotrue, você pode combinarimage_url(quadro inicial) comending_frame_urlpara transições ou loops contínuos.aspect_ratios— passe oid(inteiro) ou oratio(string) no campoaspect_ratioem/generate. Ambas as formas funcionam.
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ódigo | Status HTTP | Descrição |
|---|---|---|
UNAUTHORIZED | 401 | Chave de API ausente ou inválida |
FORBIDDEN | 403 | Chave válida, mas com permissões ou escopo insuficientes |
NOT_FOUND | 404 | O recurso não existe |
METHOD_NOT_ALLOWED | 405 | Método HTTP não suportado para este endpoint |
VALIDATION_ERROR | 400 | Parâmetros de entrada inválidos |
INSUFFICIENT_CREDITS | 402 | Créditos insuficientes para a geração |
RATE_LIMIT_EXCEEDED | 429 | Muitas requisições, verifique o cabeçalho Retry-After |
SERVER_ERROR | 500 | Erro interno do servidor |
