Get a download link
Get download links for finished results. Pass job_ids (1–100 completed versions from one project), or project_id to download that project's picks (picks_only defaults to true; false downloads every finished version, up to 100). One version returns a signed link immediately. Several photos start a zip: status is processing, so call get_download with the returned id after poll_after_ms. If any videos are included you get one signed link per file in files instead of a zip. Links last 1 hour; trial accounts get watermarked files.
Works with view-only access.
AuthorizationBearer <token>An API key from Settings → Developers (pp_live_…), or an OAuth access token.
Idempotency-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 <= 255application/json- body
job_ids?array<>Completed job IDs from one project (max 100).
1 <= items <= 100project_id?stringDownload from this project instead of listing job_ids.
^([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)$uuidpicks_only?booleanWith project_id: only the picked versions (default true).
trueGet a download link
application/json- response
object*stringid*|Zip download ID to poll with get_download while status is processing. Null when the links are ready immediately.
status*string"processing""ready""failed"url*|The file to download: the single version, or the zip once ready. Null while processing, and when files lists per-file links instead.
filename*string|nullexpires_at*|When url stops working.
files*array<>One signed link per file. Used instead of a zip whenever videos are included (videos are too large to zip server-side).
file_count*integer|nullunavailable_job_ids*array<string>Requested versions left out because they were deleted, unfinished or failed to package.
poll_after_ms*integer0 unless status is processing.
curl -X POST "https://example.com/downloads" \ -H "Content-Type: application/json" \ -d '{}'{ "object": "download", "id": "string", "status": "processing", "url": "http://example.com", "filename": "string", "expires_at": "2019-08-24T14:15:22Z", "files": [ { "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f", "kind": "photo", "filename": "string", "url": "http://example.com", "expires_at": "2019-08-24T14:15:22Z" } ], "file_count": 0, "unavailable_job_ids": [ "string" ], "poll_after_ms": 0}Pick a result PATCH
Mark a finished photo or video version as a pick (picked: true) or remove the mark (picked: false). Picks are the versions the user wants to keep; get_download_link with picks_only downloads them together. Picks are shared by the workspace and never change or delete the versions themselves. Only completed enhancement, staging and video jobs can be picked. Works with view-only access.
Check a zip download GET
Check a zip started by get_download_link. While status is processing, wait poll_after_ms and call again; when ready, url is the zip (valid for 1 hour). If it failed, call get_download_link again. Works with view-only access.