Skip to content

Create a presigned upload

POST
/api/v1/uploads
curl --request POST \
--url http://localhost:3000/api/v1/uploads \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "filename": "example", "mime": "example", "size": 1 }'

PUT the bytes to uploadUrl, then promote with POST /api/v1/assets.

Scope: propose.

Media typeapplication/json
object
filename
required
string
>= 1 characters <= 512 characters
mime
required
string
>= 1 characters <= 255 characters
size
required
integer
> 0 <= 536870912
Examplegenerated
{
"filename": "example",
"mime": "example",
"size": 1
}

An upload ticket

Media typeapplication/json
object
token
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
uploadUrl
required

PUT the bytes here, with the same Content-Type

string format: uri
expiresIn
required
integer
>= -9007199254740991 <= 9007199254740991
Examplegenerated
{
"token": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"uploadUrl": "https://example.com",
"expiresIn": 1
}

An error

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
detail
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": "example"
}
}