Back to Home

Image Describer API ドキュメント

2025-02-22

Posted by

Image Describer API ドキュメント

はじめに & ユースケース

Image Describer API を使用すると、AI を活用した画像説明機能をアプリケーションに統合できます。この API は高度な AI モデルを使用して画像を分析し、詳細な説明を生成します。

一般的なユースケース

  • 画像の詳細な説明を生成する
  • 画像からテキストや情報を抽出する
  • 画像の内容とコンテキストを分析する
  • クリエイティブライティングのキャラクター描写を作成する
  • コンテンツ管理用の画像キャプションを生成する

API キー

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 署名(コード例を参照

リクエストパラメータ

パラメータタイプ必須説明
imageBase64DatastringはいMIME タイププレフィックス付きの Base64 エンコードされた画像データ(例: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQE...
promptstringいいえ画像分析用のカスタムプロンプト
langstringいいえレスポンス言語 (en/zh/de/es/fr/ja/ko)

レスポンス形式

フィールドタイプ説明
codenumberレスポンスステータスコード。200 は成功
dataobjectレスポンスデータオブジェクト。コードが 200 の場合に存在します
data.contentstring生成された画像の説明
msgstringレスポンスメッセージ。追加情報を提供します
succeedbooleanリクエストが成功したかどうかを示します

レスポンス例

{
    "code": 200,
    "data": {
        "content": "Markdown 形式の画像の詳細な説明..."
    },
    "succeed": true,
    "msg": "成功"
}

エラーコード

コードメッセージ説明
200OKリクエスト成功
500SERVER_ERROR内部サーバーエラー
10003INSUFFICIENT_CREDITSクレジット不足
10004INVALID_PARAM無効なパラメータ
10005HARMFUL_CONTENT有害なコンテンツが検出されました
30001INVALID_API_KEY無効な API キー
30002INVALID_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]