画像からプロンプトへの変換機能をアプリケーションに統合することで、強力な可能性が広がります。自動説明生成、ビジュアル検索ツール、コンテンツ制作パイプライン、ビジュアルスタイルに基づくレコメンドシステムなどが実現できます。この技術ガイドでは、開発者がImageToPrompt APIをプロジェクトに統合するために必要なすべてを解説します。

注意: ImageToPrompt APIはAnthropicのClaude AIによって動作し、画像を一時的に処理します。画像がサーバーに保存されることは一切ありません。

API概要

ImageToPrompt APIは、画像/テキストからAIプロンプトへの変換に関するすべてのユースケースをカバーする4つの主要エンドポイントを提供します。各エンドポイントはJSON本文を含むPOSTリクエストを受け付け、生成されたプロンプトと有用なメタデータを含む構造化レスポンスを返します。

APIはVercelのサーバーレス関数としてホストされており、低レイテンシーと高可用性を保証します。画像の複雑さと選択したターゲットモデルによって、平均レスポンス時間は5〜10秒です。

認証とセキュリティ

APIリクエストにはシークレットキーを含む認証ヘッダーが必要です。このキーは各リクエストのx-app-secretヘッダーで送信します。

POST /api/analyze Content-Type: application/json x-app-secret: YOUR_APP_SECRET { "image": "data:image/jpeg;base64,/9j/4AAQ...", "model": "midjourney", "style": "cinematic" }

すべての通信はHTTPSで暗号化されます。画像はリクエスト本文でbase64として送信され、安全でないサードパーティサービスを経由することはありません。

利用可能なエンドポイント

エンドポイント メソッド 説明
/api/analyze POST 画像をターゲットモデル向けのAIプロンプトに変換
/api/text-to-prompt POST テキスト説明を最適化されたAIプロンプトに変換
/api/image-to-video-prompt POST ソース画像からAI動画プロンプトを生成
/api/text-to-video-prompt POST テキスト説明からAI動画プロンプトを作成

Python統合例

以下はrequestsライブラリを使用したPythonの完全な統合例です。このスクリプトはローカル画像をbase64エンコードし、APIにリクエストを送信して、生成されたプロンプトを表示します。

import requests import base64 import json def image_to_prompt(image_path, model="midjourney", style="cinematic"): """Convert a local image to an AI prompt.""" # Read and encode the image with open(image_path, "rb") as f: image_data = base64.b64encode(f.read()).decode("utf-8") # Determine MIME type ext = image_path.lower().split(".")[-1] mime_types = {"jpg": "jpeg", "jpeg": "jpeg", "png": "png", "webp": "webp"} mime = mime_types.get(ext, "jpeg") # Build the request payload = { "image": f"data:image/{mime};base64,{image_data}", "model": model, "style": style } headers = { "Content-Type": "application/json", "x-app-secret": "YOUR_APP_SECRET" } response = requests.post( "https://www.imagetoprompt.dev/api/analyze", json=payload, headers=headers, timeout=30 ) if response.status_code == 200: result = response.json() return result elif response.status_code == 429: print("Rate limit reached. Try again tomorrow.") return None else: print(f"Error {response.status_code}: {response.text}") return None # Usage result = image_to_prompt("my-photo.jpg", model="flux", style="technical") if result: print("Prompt:", result["prompt"]) print("Negative:", result.get("negative", "N/A"))

JavaScript統合例

Webアプリケーションおよびnode.js向けのfetchを使用した例です。このコードはブラウザ側でもNode.js 18+のサーバー側でも動作します。

async function imageToPrompt(imageFile, model = "midjourney", style = "cinematic") { // Convert File to base64 const reader = new FileReader(); const base64 = await new Promise((resolve) => { reader.onload = () => resolve(reader.result); reader.readAsDataURL(imageFile); }); const response = await fetch("https://www.imagetoprompt.dev/api/analyze", { method: "POST", headers: { "Content-Type": "application/json", "x-app-secret": "YOUR_APP_SECRET" }, body: JSON.stringify({ image: base64, model: model, style: style }) }); if (response.status === 429) { throw new Error("Rate limit exceeded"); } if (!response.ok) { throw new Error(`API error: ${response.status}`); } return await response.json(); } // Usage with file input const fileInput = document.querySelector('input[type="file"]'); fileInput.addEventListener("change", async (e) => { const file = e.target.files[0]; try { const result = await imageToPrompt(file, "stable-diffusion", "technical"); console.log("Generated prompt:", result.prompt); } catch (err) { console.error("Failed:", err.message); } });

リクエストパラメータ

各エンドポイントはプロンプト生成に影響する特定のパラメータを受け付けます。以下はメインエンドポイント/api/analyzeのパラメータです。

パラメータ 必須 説明
image string はい data URIプレフィックス付きのbase64画像
model string はい ターゲットモデル:midjourney、stable-diffusion、flux、dall-e-3、adobe-firefly、leonardo-ai、ideogram
style string いいえ プロンプトスタイル:cinematic、technical、artistic、minimal、epic、photographic

レスポンス形式

APIはメインプロンプト、ネガティブプロンプト(該当する場合)、クリエイティブバリエーション、ビジュアル分析メタデータを含む構造化JSONオブジェクトを返します。

{ "prompt": "cinematic portrait of a woman in golden hour light, shallow depth of field, film grain, warm tones --ar 3:2 --v 6.1 --style raw", "negative": "blurry, low quality, deformed, bad anatomy", "remix": "ethereal portrait bathed in amber sunset glow, dreamlike bokeh...", "colors": ["#D4A574", "#2C1810", "#F5E6D3", "#8B4513", "#FFD700"], "tags": ["portrait", "golden hour", "cinematic", "warm tones"], "aspectRatio": "3:2", "model": "midjourney", "style": "cinematic" }

レート制限とクォータ

APIはUpstash Redisを使用したIPアドレスベースのレート制限システムを採用しています。現在の制限は以下の通りです。

クォータを超過すると、APIは説明メッセージ付きのHTTP 429コードを返します。クライアントコードにエクスポネンシャルバックオフ付きのリトライメカニズムを実装してください。

エラー処理

APIはエラーを報告するために標準HTTPコードを使用します。以下は最も一般的なコードとその意味です。

コード 意味 推奨対応
200 成功 レスポンスを通常通り処理
400 無効なリクエスト 画像フォーマットとパラメータを確認
401 未認証 x-app-secretキーを確認
429 レート制限到達 クォータリセットを待つか有料プランにアップグレード
500 サーバーエラー エクスポネンシャルバックオフで数秒後にリトライ

高度なユースケース

コンテンツ生成パイプライン

APIをコンテンツ制作パイプラインに統合し、商品写真、ポートフォリオ画像、デザインスクリーンショットから自動的にビジュアル説明を生成できます。これにより、大規模に一貫したスタイルバリエーションを作成することが可能になります。

ビジュアル検索エンジン

生成されたプロンプトをセマンティック記述子として使用し、ビジュアルスタイルで画像をインデックス化・検索できます。APIが返すカラー、スタイル、雰囲気のタグが、ビジュアル類似性検索のための豊富なインデックスを構築します。

クリエイティブ教育ツール

画像をビジュアル要素(照明、構図、パレット、スタイル)に分解する教育ツールを構築し、アーティストや写真家が画像を効果的にする要素を理解する手助けができます。

SNS自動化

ビジュアルから説明的なキャプションやハッシュタグを自動生成できます。生成されたプロンプトには、ビジュアルコンテンツを詳細かつ魅力的に説明するための最も関連性の高い用語が含まれています。

今すぐAPIを試す

1日10リクエストの無料枠でお試しください。オンラインツールのテストには登録不要です。

ImageToPromptを無料で試す →

よくある質問

ImageToPrompt APIは無料ですか?

APIはIPアドレスごとに1日10リクエストの無料枠を提供しています。この枠はすべてのエンドポイント(image-to-prompt、text-to-prompt、image-to-video、text-to-video)で共有されます。より多くのリクエストが必要な場合は、料金ページで有料プランをご確認ください。

APIがサポートする画像フォーマットは何ですか?

APIはJPEG、PNG、WebP、GIF(最初のフレームのみ)形式の画像を受け付けます。最大サイズは1画像あたり10MBです。画像はJSONリクエストボディ内でbase64エンコードして送信します。最良の結果を得るには、512x512ピクセル以上の画像をご使用ください。

APIのエラーとレート制限にどう対処しますか?

レート制限に達するとAPIはHTTP 429コードを返し、Retry-Afterヘッダーでリトライのタイミングを示します。コードにエクスポネンシャルバックオフを実装してください。400エラーはリクエストの問題(無効な画像、パラメータ不足)を示し、500エラーは一時的なサーバー問題を示します。

APIに送信した画像は保存されますか?

いいえ。すべての画像はメモリ上で一時的に処理され、サーバーに保存されることはありません。分析はClaude AIによってリアルタイムで実行され、プロンプト生成後すぐにデータは削除されます。画像のログは一切保持されません。