Skip to main content
POST
Get Part URLs for a Multipart Upload
Returns a signed upload URL for each part you ask for. Send each part’s bytes with a PUT to its url, using exactly the headers returned. Part sizes are the part_size of the upload, except that the last part can be smaller. Part limits are in limits of usage and limits. Scope: blob:write. Accepts an upload token. Upload token: this route also accepts an upload token (Authorization: Bearer vcup_...) instead of an API key.
string
required
The multipart upload ID.
number[]
required
Part numbers to get URLs for, starting at 1. Up to 100 per call.
string
The workspace ID, when the blob belongs to a workspace. The call acts on the blob of the workspace owner and needs the blob:read workspace permission (blob:manage on routes that change data). Leave it out to act on your own blob.

Example request

Response

object[]
One URL per requested part.

Error Responses

string
The error code indicating the reason for failure. Possible values:
  • AUTH_TOKEN_MISSING (401): No Authorization header was sent.
  • API_KEY_INVALID (401): The API key doesn’t exist, was revoked, or its secret doesn’t match.
  • API_KEY_SCOPE_DENIED (403): The key lacks the scope this route needs (blob:read or blob:write); details.required names it.
  • WORKSPACE_PERMISSION_DENIED (403): Only with workspace_id: you’re not a member, or your role lacks the blob permission.
  • WORKSPACE_NOT_FOUND (404): Only with workspace_id: no workspace with that ID, or you’re not a member.
  • BLOB_UPLOAD_TOKEN_INVALID (401): The upload token doesn’t exist, has expired or was revoked (only with an upload token).
  • VALIDATION_ERROR (400): A parameter or body field failed validation. details.path names the field.
  • BLOB_UPLOAD_NOT_FOUND (404): No upload with that ID in this account, or it was already completed or aborted.
  • BLOB_UPLOAD_EXPIRED (410): The upload’s time limit has passed.