WorkscopeAPI Open Workscope

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

NameInKind
entityqueryenumrequiredOne of client, project, booking, team_member
idqueryuuidrequired

Response array of object

  • iduuidrequired
  • entityenumrequired

    One of "client", "project", "booking", "team_member"

  • recordIduuidrequired
  • filenamestringrequired
  • contentTypestringrequired
  • bytesintegerrequired

    -9007199254740991 to 9007199254740991

  • visibleToTeambooleanrequired
  • visibleToClientsbooleanrequired
  • uploadedByNamestringrequiredcan be null
  • createdAtstringrequired
  • urlstringrequired
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

NameInKind
entityqueryenumrequiredOne of client, project, booking, team_member
idqueryuuidrequired
namequerystringrequired
typequerystring
visibleToTeamqueryenumOne of true, false · Default "true"
visibleToClientsqueryenumOne 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

  • iduuidrequired
  • entityenumrequired

    One of "client", "project", "booking", "team_member"

  • recordIduuidrequired
  • filenamestringrequired
  • contentTypestringrequired
  • bytesintegerrequired

    -9007199254740991 to 9007199254740991

  • visibleToTeambooleanrequired
  • visibleToClientsbooleanrequired
  • uploadedByNamestringrequiredcan be null
  • createdAtstringrequired
  • urlstringrequired
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.pdf

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

Rename a document, or change who can see it (team member, client)

PATCH/v1/documents/{id}

Permission
document.manage
Answers
200

Parameters

NameInKind
idpathuuidrequired

Request body JSON

  • filenamestringoptional

    1–255 characters

  • visibleToTeambooleanoptional
  • visibleToClientsbooleanoptional

Response object

  • iduuidrequired
  • entityenumrequired

    One of "client", "project", "booking", "team_member"

  • recordIduuidrequired
  • filenamestringrequired
  • contentTypestringrequired
  • bytesintegerrequired

    -9007199254740991 to 9007199254740991

  • visibleToTeambooleanrequired
  • visibleToClientsbooleanrequired
  • uploadedByNamestringrequiredcan be null
  • createdAtstringrequired
  • urlstringrequired
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

NameInKind
idpathuuidrequired

Response object

  • okconstantrequired

    Always 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
200 with a file (image/jpeg)

Parameters

NameInKind
idpathuuidrequired
curl "https://app.workscope.co.uk/v1/documents/ID/file" \
  -H "Authorization: Bearer wsk_your_key_here"