ファイルアップロードAPI

音声・ビデオ・画像をGraphQL APIから直接アップロードできます。小さいファイルは単一PUT、大容量ファイルはS3互換のマルチパートアップロードを使います。

対応形式と上限

  • ビデオ: MP4、MOV、WebM
  • 単一PUT: 5GB未満
  • マルチパート: 1バイト以上100GB以下
  • 署名付きURL: 発行から12時間
  • マルチパートセッション: 開始から48時間

単一PUT

createPresignedUploadUrlでURLを発行し、返されたuploadUrlへファイルをPUTします。アップロード後、pathをエピソード作成APIやビデオストックAPIへ渡します。

mutation {
  createPresignedUploadUrl(
    fileName: "episode.mp4"
    type: VIDEO
    contentType: "video/mp4"
  ) {
    uploadUrl
    path
  }
}

大容量マルチパート

  1. createMultipartUploadでアップロードを開始します。
  2. createMultipartUploadPartUrlsで最大100パートずつPUT先を取得します。
  3. 各パートをPUTし、レスポンスのETagを保存します。
  4. 全パートをcompleteMultipartUploadへ渡します。
  5. 返されたpathをビデオストックAPIなどへ渡します。
mutation Start($fileSize: BigInt!) {
  createMultipartUpload(
    fileName: "large-episode.mp4"
    type: VIDEO
    contentType: "video/mp4"
    fileSize: $fileSize
  ) {
    uploadId
    path
    partSize
    partCount
  }
}

未完了のpathは後続APIでは利用できません。失敗・キャンセル時はabortMultipartUploadを呼び出してください。