PropertyPixel Docs

Get a download link

POST
/downloads

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.

Authorization

headerAuthorizationBearer <token>

An API key from Settings → Developers (pp_live_…), or an OAuth access token.

Header Parameters

Idempotency-Key?string

A 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.

Lengthlength <= 255

Request Body

application/json
  1. body
job_ids?array<>

Completed job IDs from one project (max 100).

Items1 <= items <= 100
project_id?string

Download from this project instead of listing job_ids.

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)$
Formatuuid
picks_only?boolean

With project_id: only the picked versions (default true).

Defaulttrue

Response Body

Get a download link

application/json
  1. response
object*string
id*|

Zip download ID to poll with get_download while status is processing. Null when the links are ready immediately.

status*string
Value in"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|null
expires_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|null
unavailable_job_ids*array<string>

Requested versions left out because they were deleted, unfinished or failed to package.

poll_after_ms*integer

0 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}