Add photos to a project
Add photos to a project from public https image URLs (image_urls) or from files the user attached in ChatGPT (files). Up to 25 photos per call; a project holds at most 100. Each file must be JPEG, PNG, WebP, HEIC or HEIF and at most 25 MB. Dropbox and Google Drive share links work if they are shared publicly. HEIC is converted to JPEG and large photos are downscaled to a 2048px long edge, like the web app. Returns the new photos (use their IDs with enhance_photos, stage_photos or create_video) and a failed list with a reason per source; report failures to the user rather than retrying blindly. If the user has photos on their phone or computer and no links, call create_upload_link instead.
Requires a connection with edit access.
AuthorizationBearer <token>An API key from Settings → Developers (pp_live_…), or an OAuth access token.
project_id*stringThe project to add photos to.
^([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)$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 <= 255application/json- body
image_urls?array<>Public https image URLs (max 25).
items <= 25files?array<>Files the user attached in ChatGPT.
items <= 25Add photos to a project
application/json- response
object*stringphotos*array<>failed*array<>project_photo_count*integerPhotos now in the project (max 100).
curl -X POST "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/photos" \ -H "Content-Type: application/json" \ -d '{}'{ "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": [ { "source": "string", "error": "string" } ], "project_photo_count": 0}Show results GET
Show a project's edited results: what is still processing, the newest finished version of each photo and each video, and the versions the user picked. Use this when the user wants to see or review their results. Result URLs are signed for 1 hour. Works with view-only access.
Delete photos POST
Delete photos from a project, together with every edit, staging and video made from them. Only do this when the user explicitly asks to remove those photos; confirm which ones first. All IDs must belong to the project, otherwise nothing is deleted. Returns the deleted IDs; call get_project to see what remains. Requires a connection with edit access.