Complete a signed upload
POST
Finish a signed upload: verifies each stored file (size, type and content) and adds it to the project as a photo. List every file that uploaded; files left out are discarded and their reserved room released. HEIC/HEIF files are converted to JPEG. Returns the new photos and a failed list with a reason per file.
Requires a connection with edit access.
header
AuthorizationBearer <token>An API key from Settings → Developers (pp_live_…), or an OAuth access token.
id*stringThe upload id from POST /uploads.
Match
^([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)$Format
uuidIdempotency-Key?stringA unique key (for example a UUID) that makes retries safe. A retry with the same key and body returns the stored response; the same key with a different body returns 422. Keys last 24 hours.
Length
length <= 255application/json- body
project_id*stringThe same project_id used to create the upload.
Match
^([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)$Format
uuidfiles*array<>Items
items <= 25Complete a signed upload
application/json- response
object*stringphotos*array<>failed*array<>curl -X POST "https://example.com/uploads/497f6eca-6276-4993-bfeb-53cbbbba6f08/complete" \ -H "Content-Type: application/json" \ -d '{ "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9", "files": [ { "storage_path": "string", "filename": "string", "size": 1, "content_type": "string" } ] }'{ "object": "photo_list", "photos": [ { "object": "photo", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9", "filename": "string", "room_type": "string", "width": 0, "height": 0, "original": { "url": "http://example.com", "expires_at": "2019-08-24T14:15:22Z" }, "thumbnail": { "url": "http://example.com", "expires_at": "2019-08-24T14:15:22Z" }, "created_at": "2019-08-24T14:15:22Z" } ], "failed": [ { "filename": "string", "error": "string" } ]}