API reference
Documents
5 requests. Each shows the permission a key needs, what to send and what comes back.
On this page
A client's, project's, booking's or team member's documents (as the caller may see them)
GET/v1/documents
- Permission
document.view- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
entity | query | enumrequired | One of client, project, booking, team_member |
id | query | uuidrequired |
Response array of object
iduuidrequiredentityenumrequiredOne of
"client","project","booking","team_member"recordIduuidrequiredfilenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
visibleToTeambooleanrequiredvisibleToClientsbooleanrequireduploadedByNamestringrequiredcan be nullcreatedAtstringrequiredurlstringrequired
curl "https://app.workscope.co.uk/v1/documents?entity=client&id=3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41" \
-H "Authorization: Bearer wsk_your_key_here"Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"entity": "client",
"recordId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"visibleToTeam": false,
"visibleToClients": false,
"uploadedByName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z",
"url": "https://example.co.uk"
}
]Upload a document: send the file itself as application/octet-stream (any kind, up to 50 MB), with its name in the query. Team members may upload to their own record only.
POST/v1/documents
- Permission
document.manage or document.uploadOwn- Answers
201
Parameters
| Name | In | Kind | |
|---|---|---|---|
entity | query | enumrequired | One of client, project, booking, team_member |
id | query | uuidrequired | |
name | query | stringrequired | |
type | query | string | |
visibleToTeam | query | enum | One of true, false · Default "true" |
visibleToClients | query | enum | One of true, false · Default "false" |
Request body the file itself
Send the file as the body, with Content-Type one of application/octet-stream. See Files and photos.
Response object
iduuidrequiredentityenumrequiredOne of
"client","project","booking","team_member"recordIduuidrequiredfilenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
visibleToTeambooleanrequiredvisibleToClientsbooleanrequireduploadedByNamestringrequiredcan be nullcreatedAtstringrequiredurlstringrequired
curl -X POST "https://app.workscope.co.uk/v1/documents?entity=client&id=3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41&name=Harbourside%20Dental" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/octet-stream" \
--data-binary @file.pdfExample response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"entity": "client",
"recordId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"visibleToTeam": false,
"visibleToClients": false,
"uploadedByName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z",
"url": "https://example.co.uk"
}Rename a document, or change who can see it (team member, client)
PATCH/v1/documents/{id}
- Permission
document.manage- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
filenamestringoptional1–255 characters
visibleToTeambooleanoptionalvisibleToClientsbooleanoptional
Response object
iduuidrequiredentityenumrequiredOne of
"client","project","booking","team_member"recordIduuidrequiredfilenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
visibleToTeambooleanrequiredvisibleToClientsbooleanrequireduploadedByNamestringrequiredcan be nullcreatedAtstringrequiredurlstringrequired
curl -X PATCH "https://app.workscope.co.uk/v1/documents/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"filename": "Harbourside Dental",
"visibleToTeam": false,
"visibleToClients": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"entity": "client",
"recordId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"visibleToTeam": false,
"visibleToClients": false,
"uploadedByName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z",
"url": "https://example.co.uk"
}Delete a document (team members: only ones they added to their own record)
DELETE/v1/documents/{id}
- Permission
document.manage or document.uploadOwn- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
okconstantrequiredAlways
true
curl -X DELETE "https://app.workscope.co.uk/v1/documents/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"ok": true
}Download a document
GET/v1/documents/{id}/file
- Permission
document.view- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
curl "https://app.workscope.co.uk/v1/documents/ID/file" \
-H "Authorization: Bearer wsk_your_key_here"