Generor APIドキュメント
93種類以上のAIジェネレーターで作成 — テキスト、画像、動画、音声など。
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リクエスト |
write | POST、PATCH、DELETE 操作(コメント、評価、プロフィール更新など) |
generate | コンテンツ生成(クレジットを消費) |
スコープが指定されていないキーはフルアクセスを持ちます。
レート制限
制限はAPIキーごとに適用されます。すべてのレスポンスにレート制限ヘッダーが含まれます:
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1708444860
X-RateLimit-Tier: free
| ティア | 1分あたり | 1時間あたり | 1日あたり |
|---|---|---|---|
| free | 30 | 500 | 5,000 |
| basic | 60 | 2,000 | 20,000 |
| pro | 120 | 5,000 | 50,000 |
| enterprise | 300 | 20,000 | 200,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
}
}
ページネーション
一覧エンドポイントはクエリパラメータによるページネーションに対応しています:
| パラメータ | デフォルト | 説明 |
|---|---|---|
page | 1 | ページ番号(1から始まる) |
per_page | 20 | ページあたりのアイテム数(最大100) |
sort | newest | 並べ替え順: 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"
}
}
}
}
使用するタイミング
- 事前のコストチェック — 課金前にユーザーが生成費用を支払えるか確認します。
- 進捗UI —
time_estimate.secondsをローディングバーに渡して、ユーザーが待ち時間を把握できるようにします。 - パラメータ調整 — ユーザーがドロップダウンを変更するたびに呼び出します。生成を確定せずにコストが更新されます。
/generate との関係 — /estimate は 個別、任意 呼び出しです。/generate は課金された実際の credit_cost と事後の credits_remaining をすでに返すため、リアルタイム価格での支払いに問題がなければ、/estimate を完全に省略できます。
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
}'
リクエストボディ:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
prompt | string | はい | 生成プロンプト(最大10,000文字) |
model_id | integer | はい | AIモデルID。テキスト:1-9999、画像:10001-19999、動画:20001-29999。モデルを参照してください。 |
privacy_mode | integer | いいえ | 0 = 公開 (デフォルト)、1 = 非公開 |
team_id | integer | いいえ | チームのもとで作成 |
count | integer | いいえ | アイテムの数(1〜10、デフォルト1) |
language | string | いいえ | テキスト生成用の言語コード(例: "en-US"、"nb-NO")。デフォルト: "auto" |
temperature | float | いいえ | LLMの創造性(テキストモデルのみ、0.0-2.0) |
preference | string/int | いいえ | ジェネレーター固有の設定(例: ジョークの種類、詩のスタイル) |
preference_two | string/int | いいえ | ジェネレーター固有の二次設定 |
aspect_ratio | int 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_url | string | いいえ | image-to-image、スタイル転送、または image-to-video(I2V)のための参照画像URL。 |
seconds | integer | いいえ | 動画の長さ(秒、動画モデルのみ)。各プロバイダーは離散的な値のセットのみを受け付けます。supported_durationsについてはGET /models/video/{id}をクエリしてください。サポートされていない値を渡すと、APIは最も近いサポート値に丸め、その調整内容をレスポンスのadjustments.secondsで報告します。 |
generate_audio | boolean | いいえ | Veo 3.1 および Seedance 1.5 Pro(動画)向けのネイティブ音声切り替え。他の動画モデルは音声の挙動が組み込まれており、このフラグは無視されます。 |
ending_frame_url | string | いいえ | 開始+終了フレーム制御に対応するモデル(Veo 3.1、Wan 2.6 I2V、Seedance Pro Lite、Kling v3)用の終了フレームアンカー。image_urlと組み合わせてシームレスな遷移やループを実現します。 |
reference_images | array<string> | いいえ | 最大9件の参照画像URL。対応: Veo 3.1 (最大3), Seedance 2.0 (最大9), Happy Horse R2V (最大9), Happy Horse Video Edit (最大5)。順序は保持され、プロンプトで参照される際に[Image1] … [ImageN]としてモデルに渡されます。 |
reference_videos | array<string> | いいえ | 最大3件の参照動画URL。Seedance 2.0 (Replicate) と Dreamina Seedance 2.0 (BytePlus direct) がモーションやスタイルの一貫性のために使用します。 |
reference_audio | string | いいえ | 音楽/音声の連続性のための参照オーディオURL。現在は Dreamina Seedance 2.0(モデル 20060-20062、BytePlus 直接)で使用されています。 |
video_url | string | いいえ | ソース動画のURL — Happy Horse Video Edit(モデル 20051)に必須で、Dreamina Seedance 2.0(20060-20062)の動画編集/動画延長モードで使用されます。 |
parameters | object | いいえ | ジェネレーター固有のフィールド — フロントエンドが公開するドロップダウンと同じもので、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"
}
}'
追加のテキスト生成フィールド
テキストジェネレーター(model_id 1-9999)の場合、これらのトップレベルのボディフィールドは、関連する場合にLLMエンドポイントに転送されます:
| フィールド | タイプ | 説明 |
|---|---|---|
user_text | string | 自由形式の補足テキスト(例:要約・変換する元のコンテンツ) |
user_text_two | string | 副次的な補足テキスト(2つのテキスト入力を持つジェネレーターで使用) |
avoid_duplicates | boolean | バッチ全体でモデルを斬新な出力に偏らせる |
thinking_mode | string | 推論対応モデル向け: off、on、または high |
story_context | string | ブランドに沿ったシーン執筆のために story、story-part、storyboard に渡されるソースストーリー |
character_context / character_name / character_id | string / int | ストーリーボード、ストーリーパート、続編作品でのキャラクターの一貫性 |
support_for | integer | 親クリエーションID — この生成を子 / 関連クリエーションとしてリンクします |
mode | string | ジェネレーター固有のモード切り替え(例: ゲームフェーズ) |
model_speech | integer | テキスト出力と組み合わせる音声モデル(ナレーション付きの星占いやポッドキャストなどに使用) |
item_index / total_count | integer | 順次生成のヒント(解法ステップなど、項目を順番に生成する際に使用) |
translation_of / source_language | integer / 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/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_mode | 0 (公開)、1 (非公開) |
license | 1 (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_audio—trueの場合、/generateで"generate_audio": trueを渡せます。falseの場合、このフラグは無視されます。supports_end_frame—trueの場合、image_url(開始フレーム)とending_frame_urlを組み合わせて、シームレスなトランジションやループを作成できます。aspect_ratios—/generateのaspect_ratioフィールドにid(整数)またはratio(文字列)を渡します。どちらの形式でも機能します。
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 ステータス | 説明 |
|---|---|---|
UNAUTHORIZED | 401 | APIキーが未入力または無効です |
FORBIDDEN | 403 | キーは有効ですが、権限またはスコープが不十分です |
NOT_FOUND | 404 | リソースが存在しません |
METHOD_NOT_ALLOWED | 405 | このエンドポイントでは HTTP メソッドはサポートされていません |
VALIDATION_ERROR | 400 | 入力パラメータが無効です |
INSUFFICIENT_CREDITS | 402 | 生成に必要なクレジットが不足しています |
RATE_LIMIT_EXCEEDED | 429 | リクエストが多すぎます。Retry-After ヘッダーを確認してください |
SERVER_ERROR | 500 | 内部サーバーエラー |
