generor

Generor APIドキュメント

93種類以上のAIジェネレーターで作成 — テキスト、画像、動画、音声など。

ベースURL v1
https://generor.com/api/v1

AIコンテンツの生成、閲覧、管理のための統合REST API。すべてのリクエストはJSONを使用します。Bearerトークンで認証します。

認証

Authorization ヘッダーでBearerトークンを使って認証します:

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

APIキーはgnr_live_で始まり、その後に40桁の16進数文字が続きます。キーはAPIキー・エンドポイントまたはアカウント設定から作成できます。

一部のエンドポイント(ジェネレーター、公開作品、モデルの閲覧)は認証なしで動作します。AUTH の付いたエンドポイントには有効な API キーが必要です。

スコープ

APIキーはアクセスを制限するスコープを設定できます:

スコープ許可
readすべてのエンドポイントへのGETリクエスト
writePOST、PATCH、DELETE 操作(コメント、評価、プロフィール更新など)
generateコンテンツ生成(クレジットを消費)

スコープが指定されていないキーはフルアクセスを持ちます。

レート制限

制限はAPIキーごとに適用されます。すべてのレスポンスにレート制限ヘッダーが含まれます:

X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
ティア1分あたり1時間あたり1日あたり
free305005,000
basic602,00020,000
pro1205,00050,000
enterprise30020,000200,000

認証されていないリクエストはIPごとに毎分15回までに制限されます。レート制限に達すると、Retry-Afterヘッダー付きの429レスポンスが返されます。

レスポンス形式

すべてのレスポンスは一貫したJSONエンベロープを使用します:

成功

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

エラー

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

ページネーション

一覧エンドポイントはクエリパラメータによるページネーションに対応しています:

パラメータデフォルト説明
page1ページ番号(1から始まる)
per_page20ページあたりのアイテム数(最大100)
sortnewest並べ替え順: newest, oldest

ジェネレーター

GET /generators

利用可能なすべてのジェネレーターを一覧表示します。

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

クエリパラメータ: status (active, development, all)

レスポンス: slug、title、description、icon、および類似のジェネレーターを含むジェネレーターの配列。

GET /generators/{slug}

特定のジェネレーターの詳細情報を取得します。

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

POST /generators/{slug}/estimate

/generate を呼び出す 前 に、クレジットコストと予想される生成時間をプレビューします。/generate と同じボディ形状ですが、読み取り専用です。クレジットは請求されず、作品も書き込まれません。これは UI が生成ボタンの横に表示するのとまったく同じ数値です。

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

レスポンス:

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

認証なしの呼び出し元に公開されています。価格/タイミングは公開情報であり、公開ジェネレーターページに表示される内容と一致します。

区切られた動画の長さ

モデルのsupported_durationsに含まれないseconds値を渡した場合、APIは最も近いサポート値にスナップし(同値の場合は低い方を採用)、その変更をadjustmentsブロックで示します。同じレスポンス内のクレジットコストと時間の見積もりは、元のリクエストではなくスナップされた値(/generateが実際に行う内容)を反映します。

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

使用するタイミング

  • 事前のコストチェック — 課金前にユーザーが生成費用を支払えるか確認します。
  • 進捗UI — time_estimate.seconds をローディングバーに渡して、ユーザーが待ち時間を把握できるようにします。
  • パラメータ調整 — ユーザーがドロップダウンを変更するたびに呼び出します。生成を確定せずにコストが更新されます。

/generate との関係 — /estimate は 個別、任意 呼び出しです。/generate は課金された実際の credit_cost と事後の credits_remaining をすでに返すため、リアルタイム価格での支払いに問題がなければ、/estimate を完全に省略できます。

統合プロンプト (Generorを設定する際にAIアシスタントに貼り付けてください):
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

AIでコンテンツを生成します。これは同期呼び出しで — 生成が完了するとレスポンスが返ります。選択したモデルに応じてクレジットを消費します。テキスト生成は通常5〜30秒、画像生成は10〜60秒、動画生成は数分かかることがあります。

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

リクエストボディ:

フィールドタイプ必須説明
promptstringはい生成プロンプト(最大10,000文字)
model_idintegerはいAIモデルID。テキスト:1-9999、画像:10001-19999、動画:20001-29999。モデルを参照してください。
privacy_modeintegerいいえ0 = public (default), 1 = private, 2 = team, 3 = unlisted.
team_idintegerいいえチームのもとで作成
countintegerいいえアイテムの数(1〜10、デフォルト1)
languagestringいいえテキスト生成用の言語コード(例: "en-US"、"nb-NO")。デフォルト: "auto"
temperaturefloatいいえLLMの創造性(テキストモデルのみ、0.0-2.0)
preferencestring/intいいえジェネレーター固有の設定(例: ジョークの種類、詩のスタイル)
preference_twostring/intいいえジェネレーター固有の二次設定
aspect_ratioint or stringいいえ数値IDまたは比率・名前の文字列を受け付けます。 画像: 1 / "1:1" / "square", 2 / "3:4" / "vertical", 3 / "4:3" / "horizontal", 4 / "16:9" / "wide", 5 / "9:16" / "tall". 動画: 1 / "16:9" / "wide", 2 / "9:16" / "tall". ヒント:"16:9" のような比率の文字列を使用すると、API がモデルの種類に応じた正しい ID にマッピングします。
image_urlstringいいえimage-to-image、スタイル転送、または image-to-video(I2V)のための参照画像URL。
secondsintegerいいえ動画の長さ(秒、動画モデルのみ)。各プロバイダーは離散的な値のセットのみを受け付けます。supported_durationsについてはGET /models/video/{id}をクエリしてください。サポートされていない値を渡すと、APIは最も近いサポート値に丸め、その調整内容をレスポンスのadjustments.secondsで報告します。
generate_audiobooleanいいえVeo 3.1 および Seedance 1.5 Pro(動画)向けのネイティブ音声切り替え。他の動画モデルは音声の挙動が組み込まれており、このフラグは無視されます。
ending_frame_urlstringいいえ開始+終了フレーム制御に対応するモデル(Veo 3.1、Wan 2.6 I2V、Seedance Pro Lite、Kling v3)用の終了フレームアンカー。image_urlと組み合わせてシームレスな遷移やループを実現します。
reference_imagesarray<string>いいえ最大9件の参照画像URL。対応: Veo 3.1 (最大3), Seedance 2.0 (最大9), Happy Horse R2V (最大9), Happy Horse Video Edit (最大5)。順序は保持され、プロンプトで参照される際に[Image1] … [ImageN]としてモデルに渡されます。
reference_videosarray<string>いいえ最大3件の参照動画URL。Seedance 2.0 (Replicate) と Dreamina Seedance 2.0 (BytePlus direct) がモーションやスタイルの一貫性のために使用します。
reference_audiostringいいえ音楽/音声の連続性のための参照オーディオURL。現在は Dreamina Seedance 2.0(モデル 20060-20062、BytePlus 直接)で使用されています。
video_urlstringいいえソース動画のURL — Happy Horse Video Edit(モデル 20051)に必須で、Dreamina Seedance 2.0(20060-20062)の動画編集/動画延長モードで使用されます。
parametersobjectいいえジェネレーター固有のフィールド — フロントエンドが公開するドロップダウンと同じもので、DOM IDをキーとします。下記のジェネレーターのパラメーターを参照してください。不明または無効なキーは黙って破棄されます。

ジェネレーターのパラメーター

各ジェネレーターの調整可能なフィールドの全セットは、ジェネレーターごとのスキーマに格納されています(サイト上のドロップダウンやURLプリフィルが使用するのと同じソースです)。生成リクエストのparametersオブジェクトにこれらのフィールドを渡すことで、プログラムから制御できます。

任意のジェネレーターのスキーマはGET /generators/{slug}で取得できます — レスポンスのparameters配列には、各フィールドのid、type(enum、number、またはmodel)、options(またはmin/max)、default、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"
    }
  }'
なぜディスカバリーエンドポイントなのか? このプラットフォームには100以上のジェネレーターがあり、それぞれに独自の設定があります。それらを API 仕様に固定するのではなく、対象とするジェネレーターのライブスキーマを取得すると、API は公開ページに表示されるドロップダウンを正確に反映します。

追加のテキスト生成フィールド

テキストジェネレーター(model_id 1-9999)の場合、これらのトップレベルのボディフィールドは、関連する場合にLLMエンドポイントに転送されます:

フィールドタイプ説明
user_textstring自由形式の補足テキスト(例:要約・変換する元のコンテンツ)
user_text_twostring副次的な補足テキスト(2つのテキスト入力を持つジェネレーターで使用)
avoid_duplicatesbooleanバッチ全体でモデルを斬新な出力に偏らせる
thinking_modestring推論対応モデル向け: off、on、または high
story_contextstringブランドに沿ったシーン執筆のために story、story-part、storyboard に渡されるソースストーリー
character_context / character_name / character_idstring / intストーリーボード、ストーリーパート、続編作品でのキャラクターの一貫性
support_forinteger親クリエーションID — この生成を子 / 関連クリエーションとしてリンクします
modestringジェネレーター固有のモード切り替え(例: ゲームフェーズ)
model_speechintegerテキスト出力と組み合わせる音声モデル(ナレーション付きの星占いやポッドキャストなどに使用)
item_index / total_countinteger順次生成のヒント(解法ステップなど、項目を順番に生成する際に使用)
translation_of / source_languageinteger / stringゼロから生成するのではなく、既存の作品を翻訳します

レスポンス (201 Created) — テキストジェネレーターの例:

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

レスポンス (201 Created) — 画像ジェネレーターの例:

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

区切られた動画の長さ — 呼び出し元の seconds がモデルの supported_durations に含まれない場合、API はプロバイダーを呼び出す前に最も近いサポート値にスナップし、/estimate のものと同じ形式の adjustments.seconds ブロックをレスポンスに追加します。これにより、プロバイダーがサポートされていない値を暗黙的にデフォルト設定するのを防ぎます。

コストフィールドの仕組み

  • credit_cost — 実際に差し引かれた 実際 の金額。balance_before − balance_after として計算されます。これが信頼できる情報源です。ログ記録、請求、ユーザー残高の更新に使用してください。
  • credit_cost_estimated — 事前のカタログ見積もり(/estimate が予測したであろう同じ数値)。透明性とドリフト監視のために含まれます。実際の課金がプロバイダー呼び出し内で計算される、動画 / 秒単位 / 文字単位の料金では、credit_cost と異なることがよくあります。
  • time_taken_seconds — 実際の経過時間。/estimateのtime_estimate.secondsと比較して、過去時間の予測を検証します。
注: テキスト作成物はジェネレーター固有のフィールドを返します(例:ジョークの場合は text、illustration_desc、レシピの場合は dish_name、ingredients)。後で作成物の完全なデータを取得するには GET /creations/{id} を使用してください。

作品

GET /creations AUTH

自分の作品を一覧表示します。

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

クエリパラメータ: generator (スラッグで絞り込み), page, per_page, sort

GET /creations/{id}

詳細、画像、ジェネレーター固有のデータを含む単一の作品を取得します。

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

作品の所有者としての認証、または共有先チームのメンバーであることが必要です。

レスポンスに含まれるもの:

{
  "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": 1,
    "type": "img",
    "license": 1,
    "images": [
      {
        "url": "/users/42/img/image-12345.png",
        "width": 1024,
        "height": 1024
      }
    ],
    "generator_data": { ... }
  }
}

GET /creations/{id}/status AUTH

作品の生成ステータスを確認します(生成レコードを追跡している場合に便利です)。

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

ステータス値: pending, generating, completed, failed, cancelled

PATCH /creations/{id} AUTH

所有する作品を更新します。

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}'
フィールド価値観
privacy_mode0 (public), 1 (private), 3 (unlisted)
license非推奨 — 後方互換性のために受け付けられますが、無視されます。作成者は自身の作品に対するすべての権利を保持します。/license をご参照ください。

DELETE /creations/{id} AUTH

所有する作品を削除します(ソフト削除)。

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

モデル

GET /models

利用可能なすべてのAIモデルをタイプ別に一覧表示します。

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

GET /models/{type}

特定のタイプのモデルを一覧表示します。

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

有効なタイプ: text, image, video, speech, music, soundeffect, upscale, vector, backgroundremoval

モデルごとのレスポンス:

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

動画モデル さらにプロバイダー機能の完全な構造体を含めます:

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

画像モデル アスペクト比を変える場合は同等の aspect_ratios 配列が含まれます(画像側には6つのエントリがあります: square、vertical、horizontal、wide、tall、および img2img モード用の match_input_image)。

これらのフィールドの使い方

  • supported_durations — ここで seconds を通じて任意の値を渡せます。サポートされていない値はサーバー側でスナップされ、adjustments.seconds の下に報告されます。
  • qualities — 解像度を切り替えるには、希望する解像度の model_id を調べて、それを model_id として渡してください。(解像度はランタイムパラメータではなく、姉妹モデルです。)
  • supports_audio — true の場合、/generate で "generate_audio": true を渡せます。false の場合、このフラグは無視されます。
  • supports_end_frame — true の場合、image_url(開始フレーム)と ending_frame_url を組み合わせて、シームレスなトランジションやループを作成できます。
  • aspect_ratios — /generate の aspect_ratio フィールドに id(整数)または ratio(文字列)を渡します。どちらの形式でも機能します。
モデルIDの範囲:テキスト(1-9999)、画像(10001-19999)、動画(20001-29999)、音声(30001-39999)、音楽(40001-49999)、効果音(50001-59999)。

GET /models/{type}/{id}

特定のモデルの詳細と価格を取得します。

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

ユーザー

GET /users/me AUTH

プロフィール、クレジット残高、統計を取得します。

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

レスポンス:

{
  "success": true,
  "data": {
    "user_id": 42,
    "username": "johndoe",
    "email": "[email protected]",
    "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

プロフィールを更新します。

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}

ユーザーの公開プロフィールを取得します。

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

GET /users/{username}/followers

ユーザーのフォロワーを一覧表示します。ページネーションに対応しています。

GET /users/{username}/following

ユーザーがフォローしている相手を一覧表示します。ページネーションに対応しています。

POST /users/{username}/follow AUTH

ユーザーをフォローする。

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

DELETE /users/{username}/follow AUTH

ユーザーのフォローを解除します。

GET /users/{username}/follow AUTH

ユーザーをフォローしているか確認します。{"following": true/false} を返します。

チーム

すべてのチームエンドポイントには認証が必要です。

GET /teams AUTH

あなたのチームを一覧表示します。

POST /teams AUTH

新しいチームを作成します。

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

メンバーリストを含むチームの詳細を取得します。

DELETE /teams/{id} AUTH

チームを退出します。

POST /teams/{id}/members AUTH

ユーザー名でメンバーを追加: {"username": "janedoe"}

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

チームメンバーを削除します(オーナーのみ)。

POST /teams/join/{invite_code} AUTH

招待コードでチームに参加します。

POST /teams/{id}/invite AUTH

招待コードを再生成します(オーナーのみ)。

GET /teams/{id}/creations AUTH

チームの作品を一覧表示します。ページネーションに対応しています。

コメント

GET /creations/{id}/comments

作品へのコメントを一覧表示します。ページネーションに対応しています。

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

POST /creations/{id}/comments AUTH

コメントを追加します。

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

自分のコメントを削除します。

POST /comments/{id}/vote AUTH

コメントに投票: {"vote": "up"} または {"vote": "down"}

評価

GET /creations/{id}/rating

作品の平均評価を取得します。

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

POST /creations/{id}/rating AUTH

作品を評価します(1〜5)。すでに評価済みの場合は既存の評価を更新します。

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

クレジット

クレジットは、AI生成に使用される決済システムで、USD建てで表されます。

GET /credits/balance AUTH

現在のクレジット残高を取得します。

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

クレジットの取引履歴を取得します。

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

クエリパラメータ: type (spend, purchase, daily_bonus, weekly_bonus, signup_bonus, refund, gift_sent, gift_received), page, per_page

APIキー

独自のAPIキーをプログラムで管理します。すべてのエンドポイントには認証が必要です。

GET /api-keys AUTH

API キーを一覧表示します(完全なキーではなくプレフィックスを表示)。

POST /api-keys AUTH

新しいAPIキーを作成します。完全なキーはレスポンスで1回のみだけ表示されます。

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

アカウントごとに有効なキーは最大10個までです。

DELETE /api-keys/{id} AUTH

APIキーを取り消します(直ちに無効化されます)。

エラーコード

コードHTTP ステータス説明
UNAUTHORIZED401APIキーが未入力または無効です
FORBIDDEN403キーは有効ですが、権限またはスコープが不十分です
NOT_FOUND404リソースが存在しません
METHOD_NOT_ALLOWED405このエンドポイントでは HTTP メソッドはサポートされていません
VALIDATION_ERROR400入力パラメータが無効です
INSUFFICIENT_CREDITS402生成に必要なクレジットが不足しています
RATE_LIMIT_EXCEEDED429リクエストが多すぎます。Retry-After ヘッダーを確認してください
SERVER_ERROR500内部サーバーエラー

MCP setup

Connect an AI assistant to Generor with the local PHP MCP server. It supports generator discovery, models, cost estimates, generation, credit balance, and your creations.

Install the MCP package dependencies with Composer in the mcp directory. Requires PHP 8.2 or newer with the cURL and fileinfo extensions.

cd mcp
composer install --no-dev

Add Generor to your MCP client configuration. Replace the path with the location of your local checkout and use your own API key from account settings.

{
  "mcpServers": {
    "generor": {
      "command": "php",
      "args": ["/absolute/path/to/generor/mcp/server.php"],
      "env": {
        "GENEROR_API_KEY": "YOUR_GENEROR_API_KEY"
      }
    }
  }
}

Connect by URL

For MCP clients that support API-key headers, connect to the URL below and send your key in the Authorization header. Keep the trailing slash in the URL.

https://generor.com/mcp/
Authorization: Bearer YOUR_GENEROR_API_KEY

Hosted access uses API keys. Browser OAuth sign-in is not available yet. Keep your API key private; generation requires the generate scope and spends your account credits.

Estimate costs before generating. Long generations may take up to 16 minutes; configure your client timeout accordingly. After a timeout, check your creations before retrying because the generation may still complete and spend credits.