Media API ドキュメント
メディア API(Media API)
メディア API を使用すると、販売者は次のファイルを作成、アップロード、取得できます:
- 画像
- ビデオ
- ドキュメント(GPSR 規制用)
バージョン: v1_beta.4.0
ベースURL: https://apim.ebay.com/commerce/media/v1_beta(または https://api.ebay.com/commerce/media/v1_beta)
認証(OAuth スコープ)
この API のすべてのエンドポイントでは、認可コード付与フロー(Authorization Code Grant)で取得した OAuth 2.0 ユーザートークンが必要です。
| スコープ | 説明 |
|---|---|
https://api.ebay.com/oauth/api_scope/sell.inventory |
在庫およびオファーの表示と管理 |
リソース一覧
Media API は以下の 3 つのリソースカテゴリで構成されています。
| リソース | 説明 | エンドポイント数 |
|---|---|---|
| image | 画像の作成(ファイルアップロードまたは URL 指定)および取得 | 3 |
| video | ビデオの作成、メタデータ取得、ファイルアップロード | 3 |
| document | ドキュメントの作成(直接アップロードまたは URL 指定)、メタデータ取得、ファイルアップロード | 4 |
image — 画像
image リソースは、出品に使用する画像の作成と取得を行います。画像はファイルを直接アップロードするか、URL を指定して作成できます。
POST /image/create_image_from_file
createImageFromFile — ファイルから画像を作成します。画像ファイルを multipart/form-data 形式で直接アップロードします。
画像が正常に作成されると、HTTP ステータスコード 201 Created が返されます。レスポンスには画像の URL と有効期限が含まれます。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
Content-Type | ヘッダー | 必須 | multipart/form-data に設定 |
レスポンス:
201— 作成済み → ImageResponse400— リクエスト形式が不正403— アクセス禁止500— 内部サーバーエラー
POST /image/create_image_from_url
createImageFromUrl — 指定された URL から画像をダウンロードして作成します。
画像が正常に作成されると、HTTP ステータスコード 201 Created が返されます。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
Content-Type | ヘッダー | 必須 | application/json に設定 |
リクエストボディ: CreateImageFromUrlRequest
レスポンス:
201— 作成済み → ImageResponse400— リクエスト形式が不正403— アクセス禁止500— 内部サーバーエラー
GET /image/{image_id}
getImage — 指定された画像 ID に基づいて画像のメタデータ(URL、有効期限)を取得します。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
image_id | パス | 必須 | 取得する画像の一意の識別子 |
レスポンス:
200— 成功 → ImageResponse400— リクエスト形式が不正403— アクセス禁止404— 画像が見つかりません500— 内部サーバーエラー
video — ビデオ
video リソースは、出品に使用するビデオの作成、メタデータ取得、ファイルアップロードを行います。
ビデオの作成フローは次のとおりです:
- createVideo でビデオのメタデータ(タイトル、サイズ等)を登録
- uploadVideo で実際のビデオファイルをアップロード
- getVideo でステータスを確認(
PENDING_UPLOAD→PROCESSING→LIVE/BLOCKED/PROCESSING_FAILED)
POST /video
createVideo — ビデオを作成します。作成するビデオのタイトル、サイズ(バイト単位)、分類を指定します。説明はオプションです。
ビデオが正常に作成されると、HTTP ステータスコード 201 Created が返されます。レスポンスの location ヘッダーにビデオ ID が含まれます。
注: ビデオのフォーマット要件と制限の詳細については、eBay セラーセンターの「動画を出品リストに追加する」を参照してください。
注: 現時点では、ビデオのメタデータを編集する機能およびビデオを削除する機能はありません。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
Content-Type | ヘッダー | 必須 | application/json に設定 |
リクエストボディ: CreateVideoRequest
レスポンス:
201— 作成済み(レスポンスボディなし。locationヘッダーにビデオ ID)400— リクエスト形式が不正403— アクセス禁止500— 内部サーバーエラー
GET /video/{video_id}
getVideo — 指定されたビデオ ID に基づいてビデオのメタデータとコンテンツを取得します。
レスポンスには、ビデオのタイトル、サイズ、分類、説明、ビデオ ID、プレイリスト(ストリーミング URL)、ステータス、ステータスメッセージ(ある場合)、有効期限、サムネイル画像が含まれます。
ビデオのプレイリストには、サポートされているプロトコル(DASH、HLS)に基づいてストリーミングビデオにリンクする URL が含まれています。
ビデオの有効期限は、作成後 30 日後に自動的に設定されます。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
video_id | パス | 必須 | 取得するビデオの一意の識別子 |
レスポンス:
200— 成功 → Video400— リクエスト形式が不正403— アクセス禁止404— ビデオが見つかりません500— 内部サーバーエラー
POST /video/{video_id}/upload
uploadVideo — 指定されたビデオ ID にファイルを関連付け、入力ファイルをアップロードします。ファイルがアップロードされると、処理が開始されます。
注: アップロードするビデオのサイズは、createVideo メソッドで設定されたサイズと正確に一致する必要があります。サイズが一致しないと、ビデオは正常にアップロードされません。
ステータスフロー: PENDING_UPLOAD → PROCESSING → LIVE / BLOCKED / PROCESSING_FAILED
このメソッドは再開可能なアップロードをサポートしています。アップロードが中断された場合、Content-Range および Content-Length ヘッダーを使用して特定のバイト位置から再開できます。
この呼び出しには JSON リクエストペイロードはなく、ファイルを application/octet-stream としてアップロードします。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
video_id | パス | 必須 | アップロードするビデオの一意の識別子 |
Content-Type | ヘッダー | 必須 | application/octet-stream に設定 |
Content-Length | ヘッダー | 任意 | アップロードのコンテンツ長。再開可能なアップロード時にのみ必要。Content-Range ヘッダーと併用 |
Content-Range | ヘッダー | 任意 | アップロードのコンテンツ範囲。パターン: ((?:[0-9]+-[0-9]+)|\\*)/([0-9]+|\\*)。再開可能なアップロード時にのみ必要 |
レスポンス:
200— アップロード成功400— リクエスト形式が不正403— アクセス禁止404— ビデオが見つかりません409— 競合(ビデオが既にアップロード済み等)411— Content-Length が必要416— 範囲が満たされない(Range Not Satisfiable)500— 内部サーバーエラー
document — ドキュメント
document リソースは、GPSR(一般製品安全規則)などの規制に必要なドキュメントの作成、アップロード、メタデータ取得を行います。サポートされているファイルタイプは .PDF、.JPEG/.JPG、.PNG で、最大ファイルサイズは 10 MB(10,485,760 バイト)です。
注: アニメーションおよび複数ページの PNG ファイルは現在サポートされていません。
ドキュメントの作成フローは次のとおりです:
- createDocument でドキュメントをステージング(または createDocumentFromUrl で URL から直接作成)
- uploadDocument でファイルをアップロード(createDocument を使用した場合)
- getDocument でステータスを確認(
documentStatusがACCEPTEDのドキュメントのみリストに追加可能)
重要: レスポンスで返される documentId 値を必ずキャプチャしてください。この値は、document リソース内の他のメソッドを使用するために必要であり、Trading API および Inventory API を使用してドキュメントをリストに関連付けるためにも必要です。
POST /document
createDocument — アップロードするドキュメントをステージングします。アップロードするドキュメントの種類とドキュメントに含まれる言語が必要です。
ドキュメントが正常に作成されると、HTTP ステータスコード 201 Created が返されます。レスポンスペイロードに documentId が含まれ、location ヘッダーでも返されます。
作成されたドキュメントをアップロードするには、このメソッドのレスポンスから返された documentId を uploadDocument メソッドで使用します。
詳細については、ドキュメントの管理を参照してください。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
Content-Type | ヘッダー | 必須 | application/json に設定 |
リクエストボディ: CreateDocumentRequest
レスポンス:
201— 作成済み → CreateDocumentResponse400— リクエスト形式が不正500— 内部サーバーエラー
POST /document/create_document_from_url
createDocumentFromUrl — 指定された URL からドキュメントをダウンロードし、ユーザーのアカウントに追加します。ドキュメントの URL、ドキュメントの種類、ドキュメントに含まれる言語が必要です。
ドキュメントが正常に作成されると、HTTP ステータスコード 201 Created が返されます。レスポンスペイロードに documentId が含まれます。
このメソッドを使用してドキュメントを作成した後、getDocument を呼び出して documentStatus が ACCEPTED であることを確認してください。このステータスのドキュメントのみがリストに追加できます。
詳細については、ドキュメントの管理を参照してください。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
Content-Type | ヘッダー | 必須 | application/json に設定 |
リクエストボディ: CreateDocumentFromUrlRequest
レスポンス:
201— 作成済み → CreateDocumentResponse400— リクエスト形式が不正500— 内部サーバーエラー
GET /document/{document_id}
getDocument — 指定されたドキュメントの現在のステータスとメタデータを取得します。
createDocument メソッドのレスポンスで返される documentId 値が、このメソッドの必須パスパラメータです。
詳細については、ドキュメントの管理を参照してください。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
document_id | パス | 必須 | ステータスとメタデータを取得するドキュメントの一意の識別子。createDocument のレスポンスで返されます。 |
レスポンス:
200— 成功 → DocumentResponse400— リクエスト形式が不正404— ドキュメントが見つかりません500— 内部サーバーエラー
POST /document/{document_id}/upload
uploadDocument — 指定されたファイルを指定されたドキュメント ID に関連付け、入力ファイルをアップロードします。ファイルがアップロードされると、処理が開始されます。
サポートされているファイルタイプは .PDF、.JPEG/.JPG、.PNG で、最大ファイルサイズは 10 MB(10,485,760 バイト)です。
注: アニメーションおよび複数ページの PNG ファイルは現在サポートされていません。
注: Content-Type ヘッダーを multipart/form-data に設定する必要があります。
この呼び出しには JSON リクエストペイロードはなく、ファイルを form-data としてアップロードします。例:
file: @"/C:/Users/.../drone_user_warranty.pdf"
アップロードが成功すると、HTTP ステータスコード 200 OK が返されます。
詳細については、ドキュメントの管理を参照してください。
OAuth スコープ: sell.inventory
| パラメータ | 場所 | 必須 | 説明 |
|---|---|---|---|
document_id | パス | 必須 | アップロードするドキュメントの一意の識別子。createDocument のレスポンスで返されます。 |
Content-Type | ヘッダー | 必須 | multipart/form-data に設定 |
レスポンス:
200— アップロード成功 → DocumentResponse400— リクエスト形式が不正404— ドキュメントが見つかりません500— 内部サーバーエラー
スキーマ定義
Media API で使用されるリクエスト/レスポンスのデータモデルです(全 15 スキーマ)。
画像関連
CreateImageFromUrlRequest
| フィールド | 型 | 説明 |
|---|---|---|
imageUrl | string | 画像の取得元 URL |
ImageResponse
| フィールド | 型 | 説明 |
|---|---|---|
imageUrl | string | 画像の URL |
expirationDate | string | 画像の有効期限(UTC 形式) |
Image
| フィールド | 型 | 説明 |
|---|---|---|
imageUrl | string | 画像の URL |
ビデオ関連
CreateVideoRequest
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
title | string | 必須 | ビデオのタイトル |
size | integer | 必須 | ビデオファイルのサイズ(バイト単位) |
classification | array[string] | 必須 | ビデオの分類。例: ITEM |
description | string | 任意 | ビデオの説明 |
Video
| フィールド | 型 | 説明 |
|---|---|---|
videoId | string | ビデオの一意の識別子 |
title | string | ビデオのタイトル |
description | string | ビデオの説明 |
size | integer | ビデオファイルのサイズ(バイト単位) |
classification | array[string] | ビデオの分類 |
status | string | ビデオの現在のステータス。値: PENDING_UPLOAD, PROCESSING, LIVE, BLOCKED, PROCESSING_FAILED |
statusMessage | string | ステータスメッセージ(ブロックされた理由など) |
playLists | array[Play] | ストリーミングビデオのプレイリスト |
thumbnail | Image | ビデオのサムネイル画像 |
moderation | Moderation | モデレーション情報 |
expirationDate | string | ビデオの有効期限(作成後 30 日) |
Play
| フィールド | 型 | 説明 |
|---|---|---|
playUrl | string | ストリーミングビデオの URL |
protocol | string | ストリーミングプロトコル。値: DASH, HLS |
Moderation
| フィールド | 型 | 説明 |
|---|---|---|
rejectReasons | array[string] | ビデオが拒否された理由の配列 |
ドキュメント関連
CreateDocumentRequest
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
documentType | string | 必須 | ドキュメントの種類。例: GPSR |
languages | array[string] | 必須 | ドキュメントに含まれる言語コードの配列 |
CreateDocumentFromUrlRequest
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
documentType | string | 必須 | ドキュメントの種類。例: GPSR |
documentUrl | string | 必須 | ドキュメントの取得元 URL |
languages | array[string] | 必須 | ドキュメントに含まれる言語コードの配列 |
CreateDocumentResponse
| フィールド | 型 | 説明 |
|---|---|---|
documentId | string | 作成されたドキュメントの一意の識別子 |
documentStatus | string | ドキュメントのステータス |
documentType | string | ドキュメントの種類 |
languages | array[string] | ドキュメントに含まれる言語 |
DocumentResponse
| フィールド | 型 | 説明 |
|---|---|---|
documentId | string | ドキュメントの一意の識別子 |
documentStatus | string | ドキュメントの現在のステータス。値: PENDING_UPLOAD, ACCEPTED, FAILED 等 |
documentType | string | ドキュメントの種類 |
languages | array[string] | ドキュメントに含まれる言語 |
documentMetadata | DocumentMetadata | ドキュメントのメタデータ(ファイル名、サイズ、タイプ) |
DocumentMetadata
| フィールド | 型 | 説明 |
|---|---|---|
fileName | string | ファイル名 |
fileSize | integer | ファイルサイズ(バイト単位) |
fileType | string | ファイルタイプ(MIME タイプ) |
共通スキーマ
Error
| フィールド | 型 | 説明 |
|---|---|---|
category | string | エラーカテゴリ |
domain | string | エラードメイン |
errorId | integer | エラー ID |
inputRefIds | array[string] | 入力参照 ID |
longMessage | string | 詳細メッセージ |
message | string | 短いメッセージ |
outputRefIds | array[string] | 出力参照 ID |
parameters | array[ErrorParameter] | エラーパラメータ |
subdomain | string | エラーサブドメイン |
ErrorParameter
| フィールド | 型 | 説明 |
|---|---|---|
name | string | パラメータ名 |
value | string | パラメータ値 |
エンドポイント一覧
| メソッド | エンドポイント | operationId | リソース |
|---|---|---|---|
| POST | /image/create_image_from_file | createImageFromFile | image |
| POST | /image/create_image_from_url | createImageFromUrl | image |
| GET | /image/{image_id} | getImage | image |
| POST | /video | createVideo | video |
| GET | /video/{video_id} | getVideo | video |
| POST | /video/{video_id}/upload | uploadVideo | video |
| POST | /document | createDocument | document |
| POST | /document/create_document_from_url | createDocumentFromUrl | document |
| GET | /document/{document_id} | getDocument | document |
| POST | /document/{document_id}/upload | uploadDocument | document |