Files and photos
Files are sent as themselves, not wrapped in JSON. The request body is the file, and the Content-Type header says what kind it is.
Photos
Photos on bookings, issues, quotes and project briefs take JPEG, PNG, WebP or HEIC, up to 15 MB. Location and other hidden details in the file are removed when it arrives.
curl https://app.workscope.co.uk/v1/bookings/BOOKING_ID/photos \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: image/jpeg" \
--data-binary @kitchen-after.jpg
The answer is the new photo's record. Change its caption, or who can see it, with PATCH /v1/bookings/{id}/photos/{photoId}.
Logos
Company, client and project logos take JPEG, PNG or WebP, up to 5 MB.
Documents
Documents can be any kind of file, up to 50 MB. Send the file as application/octet-stream, with its name and what it belongs to in the query:
curl "https://app.workscope.co.uk/v1/documents?entity=client&id=CLIENT_ID&name=Contract.pdf" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/octet-stream" \
--data-binary @Contract.pdf
Check Documents for the exact query fields.
Downloading
Requests that give back a file (a photo, a document, an invoice as a PDF) answer with the file itself, not JSON. Save the body as it comes.
curl https://app.workscope.co.uk/v1/invoices/INVOICE_ID/pdf \
-H "Authorization: Bearer wsk_your_key_here" \
-o invoice.pdf