Image Describer API ドキュメント
2025-02-22
Posted byImage Describer API ドキュメント
はじめに & ユースケース
Image Describer API を使用すると、AI を活用した画像説明機能をアプリケーションに統合できます。この API は高度な AI モデルを使用して画像を分析し、詳細な説明を生成します。
一般的なユースケース
- 画像の詳細な説明を生成する
- 画像からテキストや情報を抽出する
- 画像の内容とコンテキストを分析する
- クリエイティブライティングのキャラクター描写を作成する
- コンテンツ管理用の画像キャプションを生成する
API キー
API を使用するには、API 認証情報(API キーとシークレット)を取得する必要があります。API キーはダッシュボードで管理できます。
API エンドポイント
POST https://imagedescriber.online/api/openapi/describe-image
統合ガイド
リクエストヘッダー
ヘッダー名 | 必須 | 説明 |
---|---|---|
content-type | はい | multipart/form-data である必要があります |
appid | はい | ダッシュボードから取得した API キー |
timestamp | はい | 現在のタイムスタンプ(ミリ秒単位) |
nonce | はい | リクエストの一意性を保証するためのランダムな UUID 文字列。一意で、6〜32 文字である必要があります。例: 4dc6gvrjg1 |
signature | はい | 認証用の HMAC-SHA256 署名(コード例を参照) |
リクエストパラメータ
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
imageBase64Data | string | はい | MIME タイププレフィックス付きの Base64 エンコードされた画像データ(例: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQE... ) |
prompt | string | いいえ | 画像分析用のカスタムプロンプト |
lang | string | いいえ | レスポンス言語 (en/zh/de/es/fr/ja/ko) |
レスポンス形式
フィールド | タイプ | 説明 |
---|---|---|
code | number | レスポンスステータスコード。200 は成功 |
data | object | レスポンスデータオブジェクト。コードが 200 の場合に存在します |
data.content | string | 生成された画像の説明 |
msg | string | レスポンスメッセージ。追加情報を提供します |
succeed | boolean | リクエストが成功したかどうかを示します |
レスポンス例
{
"code": 200,
"data": {
"content": "Markdown 形式の画像の詳細な説明..."
},
"succeed": true,
"msg": "成功"
}
エラーコード
コード | メッセージ | 説明 |
---|---|---|
200 | OK | リクエスト成功 |
500 | SERVER_ERROR | 内部サーバーエラー |
10003 | INSUFFICIENT_CREDITS | クレジット不足 |
10004 | INVALID_PARAM | 無効なパラメータ |
10005 | HARMFUL_CONTENT | 有害なコンテンツが検出されました |
30001 | INVALID_API_KEY | 無効な API キー |
30002 | INVALID_SIGNATURE | 無効なリクエスト署名 |
コード例
Next.js の例
import fs from 'fs';
// Get image base64 data: Server-side implementation
const buffer = await fs.readFileSync("/temp/test.jpg");
const base64Image = buffer.toString('base64');
const imageBase64Data = `data:image/jpeg;base64,${base64Image}`;
// Get image base64 data: Client-side implementation
const file:File = /* file from input or drop event */;
const arrayBuffer = await file.arrayBuffer();
const bytes = new Uint8Array(arrayBuffer);
const base64Image = btoa(String.fromCharCode.apply(null, bytes as any));
const imageBase64Data = `data:${file.type};base64,${base64Image}`;
// Request Body
const formData = new FormData();
formData.append('imageBase64Data', imageBase64Data);
formData.append('lang', 'en');
formData.append('prompt', 'Summarize the content of the picture in one sentence, then describe in detail what is in the picture, including objects, people, animals, and the atmosphere and mood of the picture');
// Signature
const appid = "app_1234567";
const secret = "sk_a8f3dbb3...";
const timestamp = Date.now().toString();
const nonce = crypto.randomBytes(4).toString('hex');
const signStr = buildSignString(appid, timestamp, nonce); // See subsequent code for function implementation
const sign = await sign(signStr, secret); // See subsequent code for function implementation
// Do Request
const response = await fetch('https://imagedescriber.online/api/openapi/describe-image', {
method: 'POST',
headers: {
'appid': appid,
'timestamp': timestamp,
'nonce': nonce,
'signature': sign
},
body: formData
});
const result = await response.json();
console.log(result);
function buildSignString(appId: string, timestamp: string, nonce: string): string {
return [appId, timestamp, nonce].join('-');
}
async function sign(message: string, secret: string): Promise<string> {
const encoder = new TextEncoder();
const keyData = encoder.encode(secret);
const messageData = encoder.encode(message);
const key = await crypto.subtle.importKey(
'raw',
keyData,
{ name: 'HMAC', hash: 'SHA-256' },
false,
['sign']
);
const signatureData = await crypto.subtle.sign(
'HMAC',
key,
messageData
);
return btoa(String.fromCharCode.apply(null, Array.from(new Uint8Array(signatureData))));
}
料金
API 呼び出しはアカウントのクレジットを消費します。クレジットは料金ページで購入できます。
ヘルプ & サポート
ご質問やサポートが必要な場合は、サポートチームまでお気軽にお問い合わせください。
メールアドレス:[email protected]