Uploads

Start a signed upload

Reserve room in a project for up to 25 photos and get one signed URL per file. PUT each file's raw bytes to its upload_url with exactly the returned headers, then call POST /uploads/{id}/complete with the storage_path, filename, size and content_type of every file that uploaded. Files must be JPEG, PNG, WebP, HEIC or HEIF, at most 25 MB each; a project holds at most 100 photos. The reservation expires at expires_at (about 15 minutes); complete before then. Files are stored exactly as sent, except HEIC/HEIF, which is converted to JPEG on completion. Downscale large images yourself (the web app uses a 2048px long edge).

Requires a connection with edit access.

post/uploads

Request

  • Base URL: https://api.propertypixel.app/v1
  • URL: https://api.propertypixel.app/v1/uploads
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://llflgtovnkrsjqydycyu.supabase.co/auth/v1/oauth/authorize, token URL https://llflgtovnkrsjqydycyu.supabase.co/auth/v1/oauth/token)

Headers

Idempotency-Keystring

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.

Request body

project_idstring uuid required

The project the photos go into.

Response

Start a signed upload

object'upload' required
idstring uuid required

Pass to POST /uploads/{id}/complete.

expires_atstring date-time required

Changes

No recorded changes to this operation across all 1 revision of this API.