メインコンテンツへスキップ
POST
参照素材をアップロードすると、公開 URL が直接返ります。ポーリングは不要です。保存期間は 3・7・15・30 日です。3 日プランはアカウントの無料枠内で無料、超過分と長期保存には有料アップロードの有効化が必要です。実際の無料枠と利用可能なプランはコンソールで確認してください。
ドキュメントの Playground はファイルアップロードに対応していません。以下の cURL・Python・JavaScript 例を使用してください。JavaScript 例には、ファイルを選択済みの <input type="file"> が必要です。

認証

string
必須
有効で、無効化・期限切れでない APIMart API Key を Bearer <token> として指定します。アカウントが停止されておらず、残高が正である必要があります。有料アップロードには、今回の料金を支払えるアカウント残高と API Key の残り利用額も必要です。無料ファイル枠と Key の利用額上限は別の制限です。Key は API Key 管理 で取得できます。

リクエストパラメータ

integer
任意。3・7・15・30 日を指定できます。指定するとアカウントの既定値を上書きします。省略するとコンソールで現在有効な既定値が適用され、必ずしも 3 日ではありません。URL クエリパラメータのみ有効で、同名のフォーム項目は無視されます。利用可能なプランはコンソールで確認してください。
file
必須
multipart/form-data の file フィールドに、ファイル名付きで 1 ファイルを送信します。JSON、base64 文字列、ファイル URL で置き換えないでください。他のフォームフィールドは無視され、複数の file を送信した場合は最初の 1 件のみ処理されます。対応形式: JPEG (.jpg, .jpeg), PNG (.png), GIF (.gif), WebP (.webp)既定のファイルサイズ上限: 30MB。サイズ上限は設定により変更されます。実際の設定と上限超過エラーの値を確認してください。
cURL の --form、Python の files、JavaScript の FormData では、boundary を含む Content-Type をクライアントに生成させてください。手動で指定しないでください。

ファイル検証

形式は拡張子やクライアント指定の MIME 型ではなく、内容から判定します。内容は送信先 API の種類と一致する必要があります。拡張子の変更は形式変換にはならず、不一致は HTTP 400 になります。 画像全体をデコードできる必要があります。総画素数は 40MP 以下、各辺は 32768 ピクセル以下、GIF は最大 500 フレームです。

保存期間と有料アップロードの設定

コンソールの概要で無料枠と現行価格を確認し、有料アップロードを有効化して価格に同意した後、既定の保存期間を選択します。料金はコンソールの単価と実際のファイルサイズに基づきます(1 GB = 1024³ バイト)。アップロード失敗時は返金されます。値上げされたプランは再確認が必要ですが、値下げ時は不要です。 有料アップロードを無効にすると、新たなアップロード料金は発生せず、既定の保存期間は 3 日に戻ります。再度有効にする際は現行価格の確認が必要です。設定した長期保存プランが利用不可の場合も、有効な既定値は 3 日に戻ります。コンソールの表示を確認してください。
既定値を 7・15・30 日にすると、retention_days を省略したアップロードも、無料枠が残っていても毎回課金されます。今回だけ 3 日プランを使うには retention_days=3 を指定してください。上記のリクエスト例はすべて 3 日を明示しています。
以下は 7 日保存の例です。有料アップロードの有効化と、このプランの価格確認が必要です。

成功レスポンス

HTTP 200 でファイル情報を返します。url は JSON の最上位にあり、data によるラップや生成タスク ID はありません。 レスポンス例はファイル情報のみを示し、任意の quota と overage は省略しています。返却条件は以下を参照してください。
string
ファイルの公開 URL。生成 API の対応する参照素材パラメータに渡します。モデルごとに形式・サイズ・数量・時間の制限があるため、アップロード成功だけでは利用できる保証はありません。
string
元のファイル名。
string
ファイル内容からサーバーが検出した MIME 型。クライアントの申告値ではありません。
string
ファイル種別。この API は image を返します。
integer
実際のファイルサイズ(バイト)。
integer
アップロード時刻(Unix 秒)。
integer
今回適用された保存プランの日数。3・7・15・30 のいずれかです。
integer
ファイルの有効期限(Unix 秒)。URL の有効期限はこの値で判断してください。
object
課金された場合のみ返ります。3 日プランの超過分、または 7 / 15 / 30 日プランが対象です。charged は課金の有無、bytes は課金対象のバイト数、cost_usd は今回の料金(USD)、price_per_gb_usd は GB 単価、retention_days は課金プランです。無料アップロードでは返りません。
object
アカウント共通の無料枠情報(任意)。3 日プランで返ります。長期保存は無料枠を使わないため、このオブジェクトは返りません。無制限や統計取得不可の場合は下記を参照してください。

共有枠とリクエスト制限

画像・動画・音声は同一アカウントの無料枠を共有します。API Key を増やしても枠は増えません。毎正時に期間が移動し、通常は直近約 71–72 時間の 3 日プランの成功分を集計します。長期保存、形式不正、サイズ超過、保存失敗は無料枠を消費しません。上限はコンソールまたは実際の quota.limit を参照してください。 3 日プランの通常の制限付きレスポンスには X-Upload-Quota-Limit、X-Upload-Quota-Remaining、X-Upload-Quota-Reset が付き、それぞれ limit、remaining、reset_at に対応します。Reset は Unix 秒です。無制限アカウントは quota: {"unlimited": true} を返し、この 3 ヘッダーは付きません。 統計が一時取得できない場合、成功レスポンスでも quota を省略することがあります。長期保存でも省略されます。欠落を 0 や無制限と解釈したり、それだけを理由に再アップロードしたりしないでください。 3 日プランの無料枠を使い切った後も、有料アップロードが有効で価格確認済みなら有料で続行できます。それ以外は下記の 429 処理に従ってください。別途、Key ごとに 60 秒間 1000 リクエストの制限があり、rate_limit_error を返します。無料ファイル枠とは独立しています。

エラー処理

エラーは最上位の error に入ります。HTTP ステータス、error.type / error.code、最上位の overage で判断し、言語で変化する error.message だけに依存しないでください。エラー時の overage は成功時の課金情報とは異なり、available、enabled、needs_reconfirm、retention_days、price_per_gb_usd、任意の settings_url と reason を含みます。有効化や価格再確認はコンソールで行います。

URL とファイルの保存

無料枠の 72 時間の集計期間とファイル保存期間は別です。選択したプランで期限が決まり、実際の日時は expires_at に従います。期限後の URL は 404 を返します。元ファイルを保管し、URL が恒久的に有効だと想定しないでください。 大量のアップロードには、ご自身のオブジェクトストレージ(OSS)の利用を推奨します。モデルが公開ファイル URL を受け付ける場合は、保存先 URL を直接渡すことで重複アップロードや保存コストを減らせます。

他のアップロード API