本文へ移動
Bounty Developer

POST/api/me/portfolio/upload

「自分」の分類の、新しく作る、または操作を実行するために内容を送る API。ログインした本人として呼ぶ。

要約

カバー 1 ファイル(画像 / 15 秒以内の動画 / 動画の表紙)を上げる許可と、ブラウザが直接上げる先

呼び方と印

ログイン・レート制限

短い時間に呼びすぎると断られる API(レート制限)。断られたら Retry-After の秒数を待って呼び直す。

送るもの(本文)application/json

送る本文の欄。「必須」の印がある欄は省けない。

  • purpose必須"media" | "poster" | "document"
  • kind必須"image" | "video" | "pdf"
  • contentType必須string
    長さ 1–100
  • sizeBytes必須integer
  • durationSec任意number
  • fileName任意string
    長さ ≤200

返るもの(応答)200 · application/json

成功したときに返る形。入れ子の欄は、その行を押すと開く・閉じる。「任意」の印がある欄は返らないことがある。

  • targetobject
    • kind"vercel-blob" | "fixture"
    • pathnamestring
    • contentTypestring
    • maximumSizeInBytesinteger
    • validUntilstring
    • clientToken任意string
    • url任意string
    • access任意"public" | "private"

失敗したとき(エラー)

失敗したときの状態コードと、その意味。本文の error の値で、プログラムが失敗の種類を見分けられる。

  • 400入力の誤り(error = invalid_input など)
  • 401未ログイン(unauthorized)/ Bearer が無効(invalid_token。WWW-Authenticate 付き)
  • 403権限が無い
  • 429レート制限(Retry-After 付き)
  • invalid_media
  • video_too_long
  • poster_must_be_image
  • link_requires_spikes_login
  • account_conflict
  • not_linked
  • deleted
  • portfolio_unavailable
  • portfolio_not_configured
  • rate_limited

呼び出しの見本

そのまま試せる呼び出しの例。curl と fetch をタブで切り替える。ID やトークンは自分の値に置き換える。

curl -X POST "https://bounty.spikes.4s.link/api/me/portfolio/upload" \
  -H "Authorization: Bearer $BEARER_AUTH" \
  -H "Content-Type: application/json" \
  -d '{
    "purpose": "media",
    "kind": "image",
    "contentType": "string",
    "sizeBytes": 0
  }'
POST /api/me/portfolio/upload | Bounty Developer