メディアライブラリにアセットをアップロードする
/media_library/create
このエンドポイントを使用すると、外部でホストされているURL(
asset_url)またはリクエスト本文で送信されたバイナリファイルデータ(asset_file)のいずれかを使用して、Brazeメディアライブラリにアセットを追加できます。このエンドポイントは画像と、画像を含むZIPファイルをサポートしています。
このエンドポイントは、Braze MCPサーバーからcreate_media_library_asset関数を使用して呼び出すこともできます。これにより、ClaudeやCursorなどのAIツールが自然言語プロンプトを通じてメディアライブラリにアセットをアップロードできます。
前提条件
このエンドポイントを使用するには、media_library.create 権限を持つAPIキーが必要です。
レート制限
APIレート制限に記載されているように、このエンドポイントにはデフォルトのBrazeレート制限(1時間あたり250,000リクエスト)が適用されます。
リクエスト本文
asset_urlを含めると、エンドポイントはURLからファイルをダウンロードします。asset_fileを含めると、エンドポイントはリクエスト本文のバイナリデータを使用します。
asset_urlのリクエスト本文の例:
1
2
3
4
{
"asset_url": "https://cdn.example.com/assets/cat.jpg",
"name": "Cat Graphic"
}
asset_fileのリクエスト本文の例:
1
2
3
4
{
"asset_file": <BINARY FILE DATA>,
"name": "Cat Graphic"
}
リクエスト本文には以下のパラメーターが含まれます。
| パラメーター | 必須 | データタイプ | 説明 |
|---|---|---|---|
asset_url |
オプション | 文字列 | Brazeにアップロードするアセットの、一般にアクセス可能なURL。 |
asset_file |
オプション | バイナリ | バイナリファイルデータ。 |
name |
オプション | 文字列 | このアセットのメディアライブラリに表示される名前。 |
asset_urlとasset_fileは相互に排他的です。APIリクエストにはどちらか一方のみを含める必要があります。
アップロードされたファイル名
このセクションでは、nameパラメーターを含めるかどうかに基づいて、エンドポイントがアップロードされたファイルに名前を割り当てる方法について説明します。
単一ファイルのアップロード
| シナリオ | 結果 |
|---|---|
nameを指定した場合 |
nameの値がメディアライブラリのアセット名として使用されます。 |
nameを省略した場合 |
URLまたはアップロードされたファイルの元のファイル名が使用されます。 |
ZIPファイルのアップロード
| シナリオ | 結果 |
|---|---|
nameを指定した場合 |
nameの値がプレフィックスとして使用され、サフィックスとして連番が追加されます(例:「My File 1」、「My File 2」、「My File 3」)。 |
nameを省略した場合 |
各ファイルはZIPファイル内の元のファイル名を保持します。 |
リクエスト例
このセクションには2つのcurlリクエスト例が含まれています。1つはURLを使用してアセットを追加する例、もう1つはバイナリファイルデータを使用する例です。
このリクエストは、asset_urlを使用してメディアライブラリにアセットを追加する例を示しています。
1
2
3
4
curl -X POST --location 'https://rest.iad-01.braze.com/media_library/create' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--header 'Content-Type: application/json' \
--data '{"asset_url": "https://cdn.example.com/assets/cat.jpg", "name": "Cat Graphic"}'
このリクエストは、asset_fileを使用してメディアライブラリにアセットを追加する例を示しています。
1
2
3
4
curl -X POST --location 'https://rest.iad-01.braze.com/media_library/create' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--header 'Content-Type: application/json' \
--data '{"asset_file":<BINARY FILE DATA>, "name":"Cat Graphic"}'
エラー応答
このセクションでは、発生する可能性のあるエラーとその対応するメッセージおよび説明を一覧にしています。
バリデーションエラー
バリデーションエラーは次のような構造を返します。
1
2
3
{
"message": (String) Human-readable error description
}
以下の表は、発生する可能性のあるバリデーションエラーの一覧です。
| HTTPステータス | メッセージ | 説明 |
|---|---|---|
| 400 | “Either asset_url or asset_file must be provided.” | リクエストにアセットパラメーターが指定されていません。 |
| 400 | “Both asset_url and asset_file cannot be provided. Please provide only one.” | 両方のアセットパラメーターが指定されましたが、許可されているのは1つだけです。 |
| 403 | “Media Library Public APIs are not enabled for this company.” | このワークスペースではメディアライブラリ機能が有効になっていません。 |
処理エラー
処理エラーはエラーコード付きの異なる応答を返します。
1
2
3
4
5
{
"message": (String) Human-readable error description,
"error_code": (String) error code,
"meta": { }
}
以下の表は、発生する可能性のある処理エラーの一覧です。
| エラーコード | HTTPステータス | 説明 |
|---|---|---|
UNSUPPORTED_FILE_TYPE |
400 | アップロードされたファイル形式はサポートされていません。metaオブジェクトには、拒否されたfile_typeが含まれています。 |
ASSET_SIZE_EXCEEDS_LIMIT |
400 | ファイルが最大許容サイズを超えています。画像には5 MBの制限があります。 |
MEDIA_LIBRARY_LIMIT_REACHED |
400 | ワークスペースがアセットの最大数に達しました(無料トライアル企業ではデフォルトで200、それ以外は無制限)。metaオブジェクトには現在のlimitが含まれています。 |
ASSET_UPLOAD_FAILED |
400 | 処理の問題により、アセットのアップロードに失敗しました。 |
ZIP_UPLOAD_ERROR |
400 | ZIPファイルが破損しているか、開くことができません。metaオブジェクトにはoriginal_errorメッセージが含まれています。 |
ZIP_FILE_TOO_LARGE |
400 | ZIPファイルの非圧縮時の合計サイズが5 MBの制限を超えています。metaオブジェクトにはzip_file_nameとzip_file_sizeが含まれています。 |
ZIPPED_ENTITY_HAS_NO_NAME |
400 | ZIP内のファイルエントリに名前がありません。ZIPファイルが破損していないことを確認し、名前のないファイルエントリに名前を追加してください。 |
ZIPPED_ENTITY_CANNOT_HAVE_NESTED_DIRECTORY |
400 | ZIPファイルにネストされたディレクトリが含まれていますが、これはサポートされていません。すべてのファイルはZIPのルートレベルに配置する必要があります。 |
GENERIC_ERROR |
500 | アップロード中に予期しないエラーが発生しました。metaオブジェクトにはデバッグ用のoriginal_errorメッセージが含まれています。再試行するか、サポートにお問い合わせください。 |
応答
このエンドポイントには5つのステータスコード応答があります:200、400、403、429、および500。
以下のJSONは、応答の想定される形式を示しています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"new_assets": [
{
"name": (String) the name of the asset,
"size": (Integer) the byte size of the asset,
"url": (String) the URL to access the asset,
"ext": (String) the file extension (e.g., "png", "jpg", "gif")
}
],
"errors": [
{
"name": (String) the name of the asset,
"size": (Integer) the byte size of the asset,
"ext": (String) the file extension (e.g., "png", "jpg", "gif"),
"error": (String) the error that occurred
}
],
"dashboard_url": (String) the URL to view this asset in the Braze dashboard
}