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}