API リファレンス
エンドポイント、キー、制限。AI画像エンドポイント(生成、削除、拡張)の認証、CORS、レート制限に関するリファレンスです。
Morphは、api.morph.coolでAI駆動の画像エンドポイントを公開しています。これらのエンドポイントはArtboardのAI機能を支え、開発者が統合を構築する際に使用できます。
https://api.morph.coolすべてのリクエストはHTTPSを使用します。HTTPリクエストは拒否されます。
認証
AI画像エンドポイント(生成、削除、拡張)は基本的な使用には認証を必要としません。IPアドレスによるレート制限があります。ユーザーのデータを変更するエンドポイント(変換、ベル、リーダーボード)には、BearerトークンとしてAuthorizationヘッダーにJWTトークンを渡す必要があります。
Authorization: Bearer <jwt_token>
レート制限
すべてのエンドポイントは、乱用を防ぐためレート制限が設定されています。制限を超えると、429ステータスとJSONエラーが返されます。
- Artboard AIエンドポイント — 1 IPあたり1分間に10リクエスト(KVバックエンド)。
- 変換ログ — 認証が必要で、別途IP制限はありません。
- エラーレポート — 1 IPあたり1分間に30回のリクエスト。
- ウェイトリスト — 1 IPあたり1分間に10リクエスト。
画像生成
POST /artboard/generate
テキストから画像生成およびインペインティング。マスクを付けて選択領域をテキストプロンプトに基づいて埋めるためのキャンバス画像を送信します。また、画像のテキスト説明を返す「describeモード」もサポートしています。
| フィールド | タイプ | 説明 |
|---|---|---|
| プロンプト | string | 生成する内容のテキスト説明。describeモードでは必須ではありません。 |
| canvasImage必須 | string | キャンバスコンテンツのBase64エンコードされたPNGです。 |
| maskImage | string | 選択範囲のマスクのBase64エンコードPNG。白 = 填充する領域。インペインティングには必須ですが、説明には必要ありません。 |
| モード | string | 画像説明モードにするには"describe"を設定します。生成の場合は省略します。 |
生成応答:
{
"result": "<base64_png_string>"
}
応答の説明:
{
"result": "A detailed text description of the image content."
}
検証: 説明モードでは、PNGは少なくとも64×64ピクセルでなければなりません。それ以下の画像はREGION_TOO_SMALLエラーを返します。
オブジェクト削除
POST /artboard/remove
AIでオブジェクト除去。マスクでオブジェクトを塗りつぶし、モデルが文脈に応じたコンテンツで領域を埋めます。
| フィールド | タイプ | 説明 |
|---|---|---|
| canvasImage必須 | string | キャンバスのBase64エンコードPNG |
| maskImage必須 | string | Base64エンコードされたPNGマスク。白 = 削除する領域。 |
応答:
{
"result": "<base64_png_string>"
}
ジェネレーティブ拡張
POST /artboard/expand
指定された方向にキャンバスを拡大します。AIが新しい領域を既存の画像と一致するコンテンツで埋めます。コンテキストにはエッジピクセル拡張を使用します。
| フィールド | タイプ | 説明 |
|---|---|---|
| canvasImage必須 | string | キャンバスのBase64エンコードされたPNG。各辺は64~4096pxでなければなりません。 |
| 方向必須 | string | 以下のいずれか: left, right, top, bottom, all。 |
| expandPx必須 | number | 拡大するピクセル。範囲:64–512。 |
| プロンプト | string | 生成コンテンツをガイドするためのオプションテキストプロンプト。 |
応答:
{
"result": "<base64_png_string>"
}
検証: ソース画像は各辺が64~4096pxでなければなりません。拡張キャンバスはいずれの次元でも4096pxを超えてはなりません。違反すると REGION_TOO_SMALL または CANVAS_TOO_LARGE エラーが返されます。
エラーレスポンス
すべてのエンドポイントは、errorフィールドを含むJSONエラーレスポンスを返します:
{
"error": "RATE_LIMITED"
}
一般的なエラーコード:
- RATE_LIMITED — too many requests. Wait and retry.
- REGION_TOO_SMALL — 64×64px以下の画像サイズは最小値を超えません。
- キャンバスが大きすぎます — 拡大キャンバスは4096pxの制限を超えています。
- MISSING_FIELDS — 必要なフィールドが提供されていません。
メモ
- AIモデル — すべてのインペインティングエンドポイントはCloudflare Workers AIを介してStable Diffusion v1.5を使用しています。推論ステップは20に制限されています。
- 画像形式 — すべての画像はbase64エンコードされたPNG形式でなければなりません。
- プライバシー — 画像はメモリ内で処理され、保存、ログ記録、またはモデル学習に使用されません。
- CORS — エンドポイントは
morph.cool、www.morph.cool、およびlocalhost:5173からのリクエストを受け付けます。 - タイムアウト — クライアントは30秒のタイムアウトを設定すべきです。サーバー側の処理はたいてい15秒未満です。