Request a signed upload for a custom thumbnail. Use ajax for a browser form POST or curl for a signed PUT. Then upload the file to the returned bucket.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Request a signed upload for a custom thumbnail on an existing VOD, live channel, or playlist. This endpoint does not accept the image bytes. Init returns storage credentials; you then upload the file to the bucket.
The same two-step flow is used for splashscreens. Step-by-step: Splash Screen/Thumbnail.
Authenticate withX-Api-Keyand sendX-Format: default. JSON bodies needContent-Type: application/json. Init returns 200. The storage POST typically returns 201.
POST /v2/{resource_type}/{id}/thumbnail
| Path | Value |
|---|---|
resource_type | vod, channel, or playlist (singular). |
id | UUID of that VOD, channel, or playlist. |
upload_type is required: ajax (browser form POST) or curl (signed PUT).
After a successful storage upload, look the resource back up. pictures.thumbnail is an array of CDN URLs (for example https://universe-files.dacast.com/{uuid}). Use that array to confirm the image is attached.
Ajax
Init returns form fields. POST them to https://{bucket} (do not send bucket as a form field). Append file last. Include x-amz-algorithm.
curl -X POST "https://developer.dacast.com/v2/vod/{id}/thumbnail" \
-H "X-Api-Key: insertYourApiKeyHere" \
-H "X-Format: default" \
-H "Content-Type: application/json" \
-d "{\"upload_type\":\"ajax\"}"{
"acl": "private",
"bucket": "upload.dacast.com",
"key": "vod-target-image/{id}/thumbnail",
"policy": "…",
"success_action_status": "201",
"x-amz-algorithm": "AWS4-HMAC-SHA256",
"x-amz-credential": "AKIA…/20260824/us-east-1/s3/aws4_request",
"x-amz-date": "20260824T123402Z",
"x-amz-signature": "…"
}Channel keys use live-target-image/{id}/thumbnail. Playlist keys use playlist-target-image/{id}/thumbnail.
curl -X POST "https://upload.dacast.com" \
--form "key=vod-target-image/{id}/thumbnail" \
--form "acl=private" \
--form "success_action_status=201" \
--form "policy=…" \
--form "x-amz-algorithm=AWS4-HMAC-SHA256" \
--form "x-amz-credential=AKIA…/20260824/us-east-1/s3/aws4_request" \
--form "x-amz-date=20260824T123402Z" \
--form "x-amz-signature=…" \
--form "[email protected];type=image/png"A successful storage POST returns 201 with an XML PostResponse (Location, Bucket, Key, ETag).
cURL
Init with "upload_type": "curl". Optional source is only the filename used in the generated curl-command (-T thumb.png). If you omit it, the command uses /path/to/file. PUT the file to url (or run curl-command).
curl -X POST "https://developer.dacast.com/v2/vod/{id}/thumbnail" \
-H "X-Api-Key: insertYourApiKeyHere" \
-H "X-Format: default" \
-H "Content-Type: application/json" \
-d "{\"upload_type\":\"curl\",\"source\":\"thumb.png\"}"{
"curl-command": "curl -T thumb.png 'https://upload.dacast.com/vod-target-image/{id}/thumbnail?AWSAccessKeyId=AKIA…&Expires=1787661435&Signature=…'",
"url": "https://upload.dacast.com/vod-target-image/{id}/thumbnail?AWSAccessKeyId=AKIA…&Expires=1787661435&Signature=…"
}