代替テキスト生成
Generations APIは、Imgix画像のAI生成代替テキストを生成できます。これはスクリーンリーダーなどの支援技術向けに書かれます。1回の呼び出しで、サポートされている52言語のうち最大10言語をリクエストできます。
生成されたテキストが適切でない場合は、言語ごとに手動オーバーライドを設定して編集することもできます。オーバーライドはAI生成テキストと並んで保存され、その画像の代替テキストがリクエストされたときに常に優先されます。
動画生成とは異なり、代替テキスト生成は同期です。生成されたテキストはレスポンスで直接返され、ポーリングすべきジョブはありません。
認証
Generations APIへのすべての呼び出しには、任意の権限(請求、アセットマネージャー読み取りなど)を持つAPIキーが必要です。キーを作成するには、ダッシュボードのAPIキービューに移動してください。APIキーのアカウントは、画像を配信するソースを所有している必要があります。
代替テキスト操作
| エンドポイント | メソッド | 説明 |
|---|---|---|
/v1/generations/alt-text | GET | 1つ以上の言語で画像の代替テキストを生成します。 |
/v1/generations/alt-text | POST | 言語ごとに画像の代替テキストの手動オーバーライドを設定・削除します。 |
代替テキストの生成
代替テキストを生成するには、urlまたはurl64で画像を指定して、/v1/generations/alt-textにGETリクエストを送信します。
リクエストパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
url | String | url/url64のいずれか | クエリパラメータを含まないプレーンなImgixレンダリングURL(例:https://assets.imgix.net/photo.jpg)。 |
url64 | String | url/url64のいずれか | base64urlでエンコードされたImgixレンダリングURL。URLがAI生成パラメータなどのクエリパラメータを含む場合に使用します。 |
language | String | いいえ | BCP-47言語コード。複数の言語を指定するには、パラメータを繰り返すか、カンマ区切りのリストを渡します(1リクエストあたり最大10言語)。大文字と小文字は区別されません。デフォルトはenです。 |
regenerate | Boolean | いいえ | キャッシュをスキップして、リクエストした言語の代替テキストを再生成し、保存されている内容を置き換えます。その言語の手動オーバーライドも削除されるため、レスポンスには新しいAI生成テキストが含まれます。リクエストしなかった言語は、保存済みのテキストもオーバーライドもそのまま保持されます。デフォルトはfalseです。 |
注意: urlまたはurl64のいずれか一方のみを指定してください。クリーンな画像URLにはurlを使用し、
URLにクエリパラメータが含まれる場合(例:text2imageで生成された画像)はurl64を使用します。
生成とキャッシュの仕組み
生成された代替テキストは画像ごとに保存されるため、2回目以降のリクエストは再生成せずに保存済みのテキストを返します。
各リクエストでは、その画像でまだ利用できない言語のみが生成されます。pl,nl,ru,deをリクエストした後にpl,nl,ru,de,thをリクエストした場合、生成されるのはタイ語だけで、他の4言語は以前とまったく同じテキストが返されます。オーバーライドを設定した言語もすでに利用可能とみなされるため、再生成されません。
同じ画像の異なるレンダリングは保存済みの代替テキストを共有します。photo.jpg?w=200とphoto.jpg?fit=crop&h=400は同じ写真なので、同じテキストを再利用します。text2imageで生成された画像は、プロンプトが異なれば別の画像として扱われます。
すでにあるテキストを置き換えるには、regenerate=trueを使用してください。
サポート言語
代替テキストは以下の52言語で生成できます。言語コードの大文字と小文字は区別されないため、PTやzh-hantも受け付けます。これら以外の言語をリクエストすると、400レスポンスが返されます。
中国語は簡体字と繁体字でテキストが異なるため、zhではなく書記体系ごとに指定します。
| コード | 言語 |
|---|---|
ar | アラビア語 |
bn | ベンガル語 |
bg | ブルガリア語 |
ca | カタルーニャ語 |
hr | クロアチア語 |
cs | チェコ語 |
da | デンマーク語 |
nl | オランダ語 |
en | 英語 |
et | エストニア語 |
fil | フィリピン語 |
fi | フィンランド語 |
fr | フランス語 |
de | ドイツ語 |
el | ギリシャ語 |
gu | グジャラート語 |
he | ヘブライ語 |
hi | ヒンディー語 |
hu | ハンガリー語 |
is | アイスランド語 |
id | インドネシア語 |
it | イタリア語 |
ja | 日本語 |
kn | カンナダ語 |
ko | 韓国語 |
lv | ラトビア語 |
lt | リトアニア語 |
ms | マレー語 |
ml | マラヤーラム語 |
mr | マラーティー語 |
nb | ノルウェー語(ブークモール) |
fa | ペルシア語 |
pl | ポーランド語 |
pt | ポルトガル語 |
pa | パンジャブ語 |
ro | ルーマニア語 |
ru | ロシア語 |
sr | セルビア語 |
zh-Hans | 簡体字中国語 |
sk | スロバキア語 |
sl | スロベニア語 |
es | スペイン語 |
sw | スワヒリ語 |
sv | スウェーデン語 |
ta | タミル語 |
te | テルグ語 |
th | タイ語 |
zh-Hant | 繁体字中国語 |
tr | トルコ語 |
uk | ウクライナ語 |
ur | ウルドゥー語 |
vi | ベトナム語 |
10言語を超えるリクエスト
1回のリクエストで指定できるのは最大10言語です。それを超えると400が返されます。
残りは別のリクエストに分けてください。リクエストごとに課金されるため、複数の言語を
1回でまとめてリクエストするほうが、1言語ずつリクエストするより低コストです。
レスポンス
レスポンスには、リクエストした言語コードをキーとするalt_textオブジェクトと、生成できなかったリクエスト済み言語を列挙するfailed_languages配列が含まれます。
| 属性 | 型 | 説明 |
|---|---|---|
alt_text | Object | リクエストした各言語について、言語コードと代替テキスト文字列のマップ。手動オーバーライドが設定されている言語は、AI生成テキストではなくオーバーライドのテキストを返します。 |
failed_languages | Array | リクエストされたが生成できなかった言語コード。完全に成功した場合は空です。 |
overridden_languages | Array | alt_textの値がAI生成ではなく手動オーバーライドから返された、リクエスト済み言語コード。 |
GET api/v1/generations/alt-text?url=https://assets.imgix.net/photo.jpg&language=en,frパラメータを含むURLの代替テキストを生成する
画像URLにクエリパラメータが含まれる場合(例:text2imageで作成されたAI画像)は、完全なURLをbase64urlでエンコードしてurl64として渡します。
# プレーンなURL(クエリパラメータを含む):
# https://assets.imgix.net/ai?text2image=true&prompt=a serene mountain lake at sunset
GET api/v1/generations/alt-text?url64=aHR0cHM6Ly9hc3NldHMuaW1naXgubmV0L2FpP3RleHQyaW1hZ2U9dHJ1ZSZwcm9tcHQ9YSBzZXJlbmUgbW91bnRhaW4gbGFrZSBhdCBzdW5zZXQ&language=en代替テキストの編集
AI生成の説明文を調整したい場合 — 例えば商品名を含めたい、ブランドのトーンに合わせたいなど — は、/v1/generations/alt-textにPOSTリクエストを送信して、言語ごとに手動オーバーライドを設定できます。オーバーライドはAI生成テキストより優先されます。設定すると、GETエンドポイントはその言語についてユーザーのテキストを返し、overridden_languagesにその言語を列挙します。
オーバーライドは、すでに代替テキストが生成されている画像に対してのみ設定できます。先にGETリクエストで生成してください。生成済みの代替テキストがない画像へのPOSTは409を返します。
リクエストボディ
リクエストボディはJSONオブジェクトで、urlまたはurl64のいずれか一方で画像を指定し(GETエンドポイントと同じ扱い)、適用するオーバーライドをalt_textオブジェクトで渡します。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
url | String | url/url64のいずれか | クエリパラメータを含まないプレーンなImgixレンダリングURL。 |
url64 | String | url/url64のいずれか | base64urlでエンコードされたImgixレンダリングURL。クエリパラメータを含むURLに使用します。 |
alt_text | Object | はい | 言語コードとオーバーライドテキストのマップ。値をnullにするとその言語のオーバーライドが削除され、AI生成テキストに戻ります。少なくとも1つの言語を含める必要があります。 |
サポート言語の任意のサブセットについて、1回のリクエストでオーバーライドの設定と削除ができます。10言語の上限は生成にのみ適用され、オーバーライドには適用されません。言語コードの大文字と小文字は区別されません。オーバーライドテキストは空にできず(削除には空文字列ではなくnullを使用)、言語ごとに最大2,000文字です。
レスポンス
| 属性 | 型 | 説明 |
|---|---|---|
alt_text | Object | 設定されたオーバーライド。言語コードをキーとします。 |
removed_languages | Array | オーバーライドが削除された言語コード。 |
POST api/v1/generations/alt-text
{
"url": "https://assets.imgix.net/photo.jpg",
"alt_text": {
"en": "Maya the havanese puppy sitting on a wooden floor, looking up at the camera",
"fr": null
}
}オーバーライドとクレジット
オーバーライドの設定・削除はAIモデルを呼び出さないため、POSTリクエストは
AIクレジットを消費しません。オーバーライドは、null値で削除するか、
regenerate=trueでその言語を再生成するまで保持されます。ある言語を再生成しても、
他の言語のオーバーライドには影響しません。
オーバーライドが設定されている言語はすでに利用可能とみなされるため、 オーバーライドが有効な間は再生成されません。オーバーライドを削除すると、 その言語が以前に生成されていればAI生成テキストが再び表示されます。 生成されていなかった場合は、次のリクエストで生成されます。
ステータスコード
| ステータスコード | 説明 |
|---|---|
200 | OK - 代替テキストが正常に生成(またはキャッシュから配信)されたか、オーバーライドが正常に適用されました。 |
400 | Bad Request - url/url64が欠落または無効、サポートされていない言語、1リクエストで10言語を超過、または無効なオーバーライドテキスト(空、または2,000文字超過)です。 |
402 | Payment Required - アカウントのAIクレジットが枯渇しています(plan_credits_depleted_payment_required)。GETのみ。 |
403 | Forbidden - ソースで代替テキスト生成が有効になっていない、またはAPIキーがソースを所有していません。 |
409 | Conflict - POSTのみ。画像にまだ生成済みの代替テキストがありません。先にGETリクエストで生成してください。 |
500 | Internal Server Error - 画像を取得できなかった、リクエストされたすべての言語で生成に失敗した、またはオーバーライドを保存できませんでした。 |
クレジットの使用
代替テキスト生成は、アカウントのAIクレジットに対して計上されます。代替テキストを
生成するリクエストは、言語数にかかわらず1回として計上されます — 10言語のリクエストでも
1言語のリクエストと同じコストです。保存済みのテキストやオーバーライドのみで応答した
リクエストは計上されず、POSTリクエストも計上されません。
計上はリクエスト単位のため、複数の言語をまとめて生成するほうが1言語ずつ生成するより
低コストです。402レスポンスはアカウントのクレジットが枯渇していることを示します。
残高が補充されると生成が再開されます。
例
代替テキストの生成
curl -X GET "https://api.imgix.com/api/v1/generations/alt-text?url=https://assets.imgix.net/photo.jpg&language=en,es" \
-H "Authorization: Bearer YOUR_API_KEY"
# Response:
# {
# "alt_text": {
# "en": "a havanese puppy sitting on a wooden floor, looking up at the camera",
# "es": "un cachorro habanero sentado en un suelo de madera, mirando a la cámara"
# },
# "failed_languages": [],
# "overridden_languages": []
# }代替テキストの編集
curl -X POST "https://api.imgix.com/api/v1/generations/alt-text" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://assets.imgix.net/photo.jpg",
"alt_text": {
"en": "Maya the havanese puppy sitting on a wooden floor, looking up at the camera"
}
}'
# Response:
# {
# "alt_text": {
# "en": "Maya the havanese puppy sitting on a wooden floor, looking up at the camera"
# },
# "removed_languages": []
# }