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

GET /generators/{slug}/creations

ジェネレーターの公開作品を閲覧します。ページネーションに対応しています。

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

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

使用するタイミング

  • 事前のコストチェック — 課金前にユーザーが生成費用を支払えるか確認します。
  • 進捗UItime_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 = 公開 (デフォルト)、1 = 非公開
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配列には、各フィールドのidtypeenumnumber、またはmodel)、options(またはmin/max)、defaultcost_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推論対応モデル向け: offon、または high
story_contextstringブランドに沿ったシーン執筆のために storystory-partstoryboard に渡されるソースストーリー
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 — 実際の経過時間。/estimatetime_estimate.secondsと比較して、過去時間の予測を検証します。
注: テキスト作成物はジェネレーター固有のフィールドを返します(例:ジョークの場合は textillustration_desc、レシピの場合は dish_nameingredients)。後で作成物の完全なデータを取得するには 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/public

すべてのジェネレーターにわたるすべての公開作品を閲覧します。

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

GET /creations/search

プロンプトのテキストで公開作品を検索します。

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

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": 0,
    "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 (公開)、1 (非公開)
license1 (Open GO-1.0)、2 (Exclusive GE-1.0)

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_audiotrue の場合、/generate"generate_audio": true を渡せます。false の場合、このフラグは無視されます。
  • supports_end_frametrue の場合、image_url(開始フレーム)と ending_frame_url を組み合わせて、シームレスなトランジションやループを作成できます。
  • aspect_ratios/generateaspect_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": "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

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

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}/creations

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

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

フィード

GET /feed AUTH

フォローしているユーザーの公開作品を取得します。

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

クエリパラメータ: generator (スラッグで絞り込み), 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内部サーバーエラー