Generor API Documentation

Build with 93+ AI generators. Version 1 — Base URL: https://generor.com/api/v1

Authentication

Authenticate with a Bearer token in the Authorization header:

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

API keys start with gnr_live_ followed by 40 hex characters. Create keys via the API Keys endpoint or your account settings.

Some endpoints (browsing generators, public creations, models) work without authentication. Endpoints marked with AUTH require a valid API key.

Scopes

API keys can be scoped to limit access:

ScopeAllows
readGET requests to all endpoints
writePOST, PATCH, DELETE operations (comments, ratings, profile updates, etc.)
generateContent generation (costs oomph)

Keys with no scopes specified have full access.

Rate Limits

Limits are per API key. Every response includes rate limit headers:

X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
TierPer MinutePer HourPer Day
free305005,000
basic602,00020,000
pro1205,00050,000
enterprise30020,000200,000

Unauthenticated requests are limited to 15/minute per IP. When rate limited, you'll receive a 429 response with a Retry-After header.

Response Format

All responses use a consistent JSON envelope:

Success

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

Pagination

List endpoints support pagination via query parameters:

ParameterDefaultDescription
page1Page number (1-based)
per_page20Items per page (max 100)
sortnewestSort order: newest, oldest

Generators

GET /generators

List all available generators.

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

Query params: status (active, development, all)

Response: Array of generators with slug, title, description, icon, and similar generators.

GET /generators/{slug}

Get detailed info about a specific generator.

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

GET /generators/{slug}/creations

Browse public creations for a generator. Supports pagination.

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

POST /generators/{slug}/generate AUTH

Generate content. Costs oomph based on the model selected.

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": 1,
    "privacy_mode": 0
  }'

Request body:

FieldTypeRequiredDescription
promptstringYesThe generation prompt (max 10,000 chars)
model_idintegerNoAI model ID (see Models)
privacy_modeintegerNo0 = public (default), 1 = private
team_idintegerNoCreate under a team
countintegerNoNumber of items (1-10, default 1)

Response (202 Accepted):

{
  "success": true,
  "data": {
    "init_id": 12345,
    "session_key": "abc123...",
    "status": "pending",
    "generator": "joke",
    "model_id": 1,
    "oomph_cost": 2,
    "status_url": "/api/v1/creations/12345/status",
    "message": "Generation request queued. Poll the status_url to check progress."
  }
}

Creations

GET /creations AUTH

List your own creations.

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

Query params: generator (filter by slug), page, per_page, sort

GET /creations/public

Browse all public creations across all generators.

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

GET /creations/search

Search public creations by prompt text.

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

GET /creations/{id}

Get a single creation with full details, images, and generator-specific data.

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

Public creations are accessible to anyone. Private creations require authentication as the owner.

Response includes:

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

Poll the status of an async generation. Use the init_id returned from the generate endpoint.

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

Status values: pending, generating, completed, failed, cancelled

PATCH /creations/{id} AUTH

Update a creation you own.

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}'
FieldValues
privacy_mode0 (public), 1 (private)
license1 (Open GO-1.0), 2 (Exclusive GE-1.0)

DELETE /creations/{id} AUTH

Delete a creation you own (soft delete).

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

Models

GET /models

List all available AI models grouped by type.

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

GET /models/{type}

List models for a specific type.

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

Valid types: text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval

Response per model:

{
  "id": 10001,
  "name": "Flux 1.1 Pro",
  "type": "image",
  "provider": "replicate",
  "description": "High-quality image generation...",
  "oomph_cost": 80,
  "supports_img2img": true,
  "supports_aspect_ratio": true
}
Model ID ranges: text (1-9999), image (10001-19999), video (20001-29999), speech (30001-39999), music (40001-49999), sound effects (50001-59999).

GET /models/{type}/{id}

Get a specific model's details and pricing.

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

Users

GET /users/me AUTH

Get your profile, oomph balance, and stats.

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

Response:

{
  "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",
    "oomph": {
      "total": 1250,
      "paid": 1000,
      "free": 200,
      "earned": 50,
      "max": 250
    },
    "creation_count": 347,
    "follower_count": 12,
    "following_count": 5,
    "teams": [...]
  }
}

PATCH /users/me AUTH

Update your profile.

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}

Get a user's public profile.

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

GET /users/{username}/creations

List a user's public creations. Supports pagination.

GET /users/{username}/followers

List a user's followers. Supports pagination.

GET /users/{username}/following

List who a user follows. Supports pagination.

POST /users/{username}/follow AUTH

Follow a user.

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

DELETE /users/{username}/follow AUTH

Unfollow a user.

GET /users/{username}/follow AUTH

Check if you follow a user. Returns {"following": true/false}.

Teams

All team endpoints require authentication.

GET /teams AUTH

List your teams.

POST /teams AUTH

Create a new team.

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

Get team details with member list.

DELETE /teams/{id} AUTH

Leave a team.

POST /teams/{id}/members AUTH

Add a member by username: {"username": "janedoe"}

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

Remove a team member (owner only).

POST /teams/join/{invite_code} AUTH

Join a team via invite code.

POST /teams/{id}/invite AUTH

Regenerate invite code (owner only).

GET /teams/{id}/creations AUTH

List team creations. Supports pagination.

Comments

GET /creations/{id}/comments

List comments on a creation. Supports pagination.

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

POST /creations/{id}/comments AUTH

Add a comment.

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

Delete your own comment.

POST /comments/{id}/vote AUTH

Vote on a comment: {"vote": "up"} or {"vote": "down"}

Ratings

GET /creations/{id}/rating

Get average rating for a creation.

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

POST /creations/{id}/rating AUTH

Rate a creation (1-5). Updates existing rating if already rated.

curl -X POST https://generor.com/api/v1/creations/12345/rating \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"score": 5}'

Oomph

Oomph is the virtual currency used for AI generations.

GET /oomph/balance AUTH

Get your current oomph balance.

curl https://generor.com/api/v1/oomph/balance \
  -H "Authorization: Bearer gnr_live_..."
// Response:
{
  "success": true,
  "data": {
    "total": 1250,
    "paid": 1000,
    "free": 200,
    "earned": 50,
    "max": 250
  }
}

GET /oomph/transactions AUTH

Get oomph transaction history.

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

Query params: type (spend, purchase, daily_bonus, weekly_bonus, signup_bonus, refund, gift_sent, gift_received), page, per_page

Feed

GET /feed AUTH

Get public creations from users you follow.

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

Query params: generator (filter by slug), page, per_page

API Keys

Manage your own API keys programmatically. All endpoints require authentication.

GET /api-keys AUTH

List your API keys (shows prefix, not full key).

POST /api-keys AUTH

Create a new API key. The full key is shown only once in the response.

curl -X POST https://generor.com/api/v1/api-keys \
  -H "Authorization: Bearer gnr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "My App", "scopes": ["read", "generate"]}'
// Response (201):
{
  "success": true,
  "data": {
    "key_id": 1,
    "api_key": "gnr_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0",
    "prefix": "gnr_live_a1b2c3d4",
    "name": "My App",
    "scopes": ["read", "generate"],
    "message": "Save this API key now. It will not be shown again."
  }
}

Maximum 10 active keys per account.

DELETE /api-keys/{id} AUTH

Revoke an API key (deactivates it immediately).

Error Codes

CodeHTTP StatusDescription
UNAUTHORIZED401Missing or invalid API key
FORBIDDEN403Valid key but insufficient permissions or scope
NOT_FOUND404Resource does not exist
METHOD_NOT_ALLOWED405HTTP method not supported for this endpoint
VALIDATION_ERROR400Invalid input parameters
INSUFFICIENT_OOMPH402Not enough oomph for generation
RATE_LIMIT_EXCEEDED429Too many requests, check Retry-After header
SERVER_ERROR500Internal server error