Confirm Upload
curl --request POST \
--url https://api.dreep.cloud/api/v1/upload/{id}/confirm \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"transform": {},
"presetKey": "<string>"
}
'import requests
url = "https://api.dreep.cloud/api/v1/upload/{id}/confirm"
payload = {
"transform": {},
"presetKey": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({transform: {}, presetKey: '<string>'})
};
fetch('https://api.dreep.cloud/api/v1/upload/{id}/confirm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dreep.cloud/api/v1/upload/{id}/confirm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'transform' => [
],
'presetKey' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dreep.cloud/api/v1/upload/{id}/confirm"
payload := strings.NewReader("{\n \"transform\": {},\n \"presetKey\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dreep.cloud/api/v1/upload/{id}/confirm")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"transform\": {},\n \"presetKey\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dreep.cloud/api/v1/upload/{id}/confirm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transform\": {},\n \"presetKey\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"error": true,
"message": "Invalid request parameters",
"code": "invalid_request"
}Upload
Confirm Upload
Finalize a presigned upload once the file bytes have reached storage.
POST
/
api
/
v1
/
upload
/
{id}
/
confirm
Confirm Upload
curl --request POST \
--url https://api.dreep.cloud/api/v1/upload/{id}/confirm \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"transform": {},
"presetKey": "<string>"
}
'import requests
url = "https://api.dreep.cloud/api/v1/upload/{id}/confirm"
payload = {
"transform": {},
"presetKey": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({transform: {}, presetKey: '<string>'})
};
fetch('https://api.dreep.cloud/api/v1/upload/{id}/confirm', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dreep.cloud/api/v1/upload/{id}/confirm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'transform' => [
],
'presetKey' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dreep.cloud/api/v1/upload/{id}/confirm"
payload := strings.NewReader("{\n \"transform\": {},\n \"presetKey\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dreep.cloud/api/v1/upload/{id}/confirm")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"transform\": {},\n \"presetKey\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dreep.cloud/api/v1/upload/{id}/confirm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transform\": {},\n \"presetKey\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"error": true,
"message": "Invalid request parameters",
"code": "invalid_request"
}The last step of the
presigned upload flow. Call it
with the
id returned by the presign request, after the PUT to uploadUrl
has succeeded.
Dreep verifies the object actually landed in storage, reads its metadata
(dimensions, format, size), applies any transform you pass, and flips the asset
to ready.
An asset that is never confirmed stays
pending forever. Pending assets are
excluded from List Media and are swept up by
background reconciliation, so an abandoned upload won’t show up as a broken
asset.Transforming on confirm
Passtransform (or presetKey) to re-encode the file as part of finalizing
it — the same parameters Upload Media
accepts.
curl -X POST https://api.dreep.cloud/api/v1/upload/2f928a3f-1d2a-4a2b-8a8b-123456789abc/confirm \
-H "Authorization: Bearer drp_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{ "transform": { "format": "webp", "width": 800 } }'
Responses
| Status | Meaning |
|---|---|
200 | Asset confirmed and ready. Calling again is safe — an already-ready asset is returned as-is. |
404 | No pending upload with that id in this project. |
409 | The file hasn’t finished uploading to storage yet. Retry after the PUT completes. |
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The id returned by the presign call.
Body
application/json
Response
Upload confirmed