API reference
Enquiries
21 requests. Each shows the permission a key needs, what to send and what comes back.
On this page
Enquiries by stage, with counts, how many next actions are due, and the address to forward enquiries to
GET/v1/enquiries
- Permission
enquiry.view- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
status | query | enum | One of new, contacted, quoted, won, lost, open, all · Default "open" |
view | query | enum | One of list, board · Default "list" |
stageId | query | uuid | |
source | query | enum | One of email, manual, phone, website |
clientId | query | uuid | |
projectId | query | uuid | |
quiet | query | enum | One of 1 |
q | query | string | |
assignedUserId | query | uuid | |
due | query | enum | One of 1 |
Response object
enquiriesarray of objectrequirediduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullstatusenumrequiredOne of
"new","contacted","quoted","won","lost"sourceenumrequiredOne of
"email","manual","phone","website"lostReasonenumrequiredcan be nullOne of
"price","timing","no_reply","not_a_fit","other"clientIduuidrequiredclientNamestringrequiredassignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredlastActivityAtstringrequiredlastActivitystringrequiredcan be nullunreadbooleanrequiredcreatedAtstringrequiredstageIduuidrequiredstageNamestringrequiredstageKeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"stageKindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
stageEnteredAtstringrequireddaysInStageintegerrequired-9007199254740991 to 9007199254740991
valuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
valueFromenumrequiredcan be nullOne of
"quote","typed"valueOneOffPenceintegerrequired-9007199254740991 to 9007199254740991
valueYearlyPenceintegerrequired-9007199254740991 to 9007199254740991
manualValuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
weightedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
expectedCloseOndaterequiredcan be nullYYYY-MM-DD
closedAtstringrequiredcan be nullgoneQuietbooleanrequiredfollowUpenumrequiredcan be nullOne of
"not_viewed","expiring","declined"quoteIduuidrequiredcan be nullquoteReferencestringrequiredcan be nullquoteStatusstringrequiredcan be null
stagesarray of objectrequirediduuidrequirednamestringrequiredkeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"kindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
positionintegerrequired-9007199254740991 to 9007199254740991
quietintegerrequired-9007199254740991 to 9007199254740991
goneQuietDaysintegerrequired-9007199254740991 to 9007199254740991
countsobjectrequireddueintegerrequired-9007199254740991 to 9007199254740991
inboundAddressstringrequired
curl "https://app.workscope.co.uk/v1/enquiries" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"enquiries": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"status": "new",
"source": "email",
"lostReason": "price",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"unread": false,
"createdAt": "2026-11-06T09:30:00.000Z",
"stageId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"stageName": "Harbourside Dental",
"stageKey": "new",
"stageKind": "open",
"probability": -9007199254740991,
"stageEnteredAt": "2026-11-06T09:30:00.000Z",
"daysInStage": -9007199254740991,
"valuePence": 4500,
"valueFrom": "quote",
"valueOneOffPence": 4500,
"valueYearlyPence": 4500,
"manualValuePence": 4500,
"weightedPence": 4500,
"expectedCloseOn": "2026-11-06",
"closedAt": "2026-11-06T09:30:00.000Z",
"goneQuiet": false,
"followUp": "not_viewed",
"quoteId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"quoteReference": "INV-0042",
"quoteStatus": "text"
}
],
"stages": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental",
"key": "new",
"kind": "open",
"probability": -9007199254740991,
"position": -9007199254740991
}
],
"quiet": -9007199254740991,
"goneQuietDays": -9007199254740991,
"counts": {},
"due": -9007199254740991,
"inboundAddress": "1 Harbour Road, Bristol"
}Add an enquiry by hand (a phone call, a pasted email)
POST/v1/enquiries
- Permission
enquiry.manage- Module
quotes- Answers
201
Request body JSON
namestringrequired1–200 characters
emailconstant or stringoptionalcan be nullphonestringoptionalcan be nullUp to 50 characters
companystringoptionalcan be nullUp to 200 characters
addressstringoptionalcan be nullUp to 500 characters
subjectstringoptionalcan be nullUp to 300 characters
messagestringoptionalcan be nullUp to 20000 characters
clientIduuidoptionalcan be nullassignedUserIduuidoptionalcan be nullnextActionOndateoptionalcan be nullYYYY-MM-DD
nextActionstringoptionalcan be nullUp to 300 characters
sourceenumoptionalOne of
"email","manual","phone","website"· Default"manual"stageIduuidoptionalvaluePenceintegeroptionalcan be null0 to 1000000000
expectedCloseOndateoptionalcan be nullYYYY-MM-DD
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullstatusenumrequiredOne of
"new","contacted","quoted","won","lost"sourceenumrequiredOne of
"email","manual","phone","website"lostReasonenumrequiredcan be nullOne of
"price","timing","no_reply","not_a_fit","other"clientIduuidrequiredclientNamestringrequiredassignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredlastActivityAtstringrequiredlastActivitystringrequiredcan be nullunreadbooleanrequiredcreatedAtstringrequiredstageIduuidrequiredstageNamestringrequiredstageKeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"stageKindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
stageEnteredAtstringrequireddaysInStageintegerrequired-9007199254740991 to 9007199254740991
valuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
valueFromenumrequiredcan be nullOne of
"quote","typed"valueOneOffPenceintegerrequired-9007199254740991 to 9007199254740991
valueYearlyPenceintegerrequired-9007199254740991 to 9007199254740991
manualValuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
weightedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
expectedCloseOndaterequiredcan be nullYYYY-MM-DD
closedAtstringrequiredcan be nullgoneQuietbooleanrequiredfollowUpenumrequiredcan be nullOne of
"not_viewed","expiring","declined"quoteIduuidrequiredcan be nullquoteReferencestringrequiredcan be nullquoteStatusstringrequiredcan be nulladdressstringrequiredcan be nullmessagestringrequiredcan be nulllostNotestringrequiredcan be nullcontactIduuidrequiredcan be nullinboundAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","email_in","email_out","note","call","status","assigned","quote_sent","quote_viewed","quote_accepted","quote_declined","converted","stage","site_visit","value","email_moved","merged"bodystringrequiredcan be nullsubjectstringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
curl -X POST "https://app.workscope.co.uk/v1/enquiries" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"email": "",
"phone": "0117 496 0123",
"company": "text",
"address": "1 Harbour Road, Bristol",
"subject": "text",
"message": "text",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"assignedUserId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"source": "manual",
"stageId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"valuePence": 4500,
"expectedCloseOn": "2026-11-06"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"status": "new",
"source": "email",
"lostReason": "price",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"unread": false,
"createdAt": "2026-11-06T09:30:00.000Z",
"stageId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"stageName": "Harbourside Dental",
"stageKey": "new",
"stageKind": "open",
"probability": -9007199254740991,
"stageEnteredAt": "2026-11-06T09:30:00.000Z",
"daysInStage": -9007199254740991,
"valuePence": 4500,
"valueFrom": "quote",
"valueOneOffPence": 4500,
"valueYearlyPence": 4500,
"manualValuePence": 4500,
"weightedPence": 4500,
"expectedCloseOn": "2026-11-06",
"closedAt": "2026-11-06T09:30:00.000Z",
"goneQuiet": false,
"followUp": "not_viewed",
"quoteId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"quoteReference": "INV-0042",
"quoteStatus": "text",
"address": "1 Harbour Road, Bristol",
"message": "text",
"lostNote": "Side gate code is on the key safe.",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"inboundAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"body": "Side gate code is on the key safe.",
"subject": "text",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]
}One enquiry and its timeline (marks its emails as read)
GET/v1/enquiries/{id}
- Permission
enquiry.view- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullstatusenumrequiredOne of
"new","contacted","quoted","won","lost"sourceenumrequiredOne of
"email","manual","phone","website"lostReasonenumrequiredcan be nullOne of
"price","timing","no_reply","not_a_fit","other"clientIduuidrequiredclientNamestringrequiredassignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredlastActivityAtstringrequiredlastActivitystringrequiredcan be nullunreadbooleanrequiredcreatedAtstringrequiredstageIduuidrequiredstageNamestringrequiredstageKeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"stageKindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
stageEnteredAtstringrequireddaysInStageintegerrequired-9007199254740991 to 9007199254740991
valuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
valueFromenumrequiredcan be nullOne of
"quote","typed"valueOneOffPenceintegerrequired-9007199254740991 to 9007199254740991
valueYearlyPenceintegerrequired-9007199254740991 to 9007199254740991
manualValuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
weightedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
expectedCloseOndaterequiredcan be nullYYYY-MM-DD
closedAtstringrequiredcan be nullgoneQuietbooleanrequiredfollowUpenumrequiredcan be nullOne of
"not_viewed","expiring","declined"quoteIduuidrequiredcan be nullquoteReferencestringrequiredcan be nullquoteStatusstringrequiredcan be nulladdressstringrequiredcan be nullmessagestringrequiredcan be nulllostNotestringrequiredcan be nullcontactIduuidrequiredcan be nullinboundAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","email_in","email_out","note","call","status","assigned","quote_sent","quote_viewed","quote_accepted","quote_declined","converted","stage","site_visit","value","email_moved","merged"bodystringrequiredcan be nullsubjectstringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
curl "https://app.workscope.co.uk/v1/enquiries/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"status": "new",
"source": "email",
"lostReason": "price",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"unread": false,
"createdAt": "2026-11-06T09:30:00.000Z",
"stageId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"stageName": "Harbourside Dental",
"stageKey": "new",
"stageKind": "open",
"probability": -9007199254740991,
"stageEnteredAt": "2026-11-06T09:30:00.000Z",
"daysInStage": -9007199254740991,
"valuePence": 4500,
"valueFrom": "quote",
"valueOneOffPence": 4500,
"valueYearlyPence": 4500,
"manualValuePence": 4500,
"weightedPence": 4500,
"expectedCloseOn": "2026-11-06",
"closedAt": "2026-11-06T09:30:00.000Z",
"goneQuiet": false,
"followUp": "not_viewed",
"quoteId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"quoteReference": "INV-0042",
"quoteStatus": "text",
"address": "1 Harbour Road, Bristol",
"message": "text",
"lostNote": "Side gate code is on the key safe.",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"inboundAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"body": "Side gate code is on the key safe.",
"subject": "text",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]
}Change an enquiry: details, stage (Lost needs a reason), who has it, its next action
PATCH/v1/enquiries/{id}
- Permission
enquiry.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
namestringoptional1–200 characters
emailconstant or stringoptionalcan be nullphonestringoptionalcan be nullUp to 50 characters
companystringoptionalcan be nullUp to 200 characters
addressstringoptionalcan be nullUp to 500 characters
subjectstringoptionalcan be nullUp to 300 characters
messagestringoptionalcan be nullUp to 20000 characters
clientIduuidoptionalassignedUserIduuidoptionalcan be nullnextActionOndateoptionalcan be nullYYYY-MM-DD
nextActionstringoptionalcan be nullUp to 300 characters
sourceenumoptionalOne of
"email","manual","phone","website"statusenumoptionalOne of
"new","contacted","quoted","won","lost"stageIduuidoptionalvaluePenceintegeroptionalcan be null0 to 1000000000
expectedCloseOndateoptionalcan be nullYYYY-MM-DD
lostReasonenumoptionalcan be nullOne of
"price","timing","no_reply","not_a_fit","other"lostNotestringoptionalcan be nullUp to 1000 characters
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullstatusenumrequiredOne of
"new","contacted","quoted","won","lost"sourceenumrequiredOne of
"email","manual","phone","website"lostReasonenumrequiredcan be nullOne of
"price","timing","no_reply","not_a_fit","other"clientIduuidrequiredclientNamestringrequiredassignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredlastActivityAtstringrequiredlastActivitystringrequiredcan be nullunreadbooleanrequiredcreatedAtstringrequiredstageIduuidrequiredstageNamestringrequiredstageKeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"stageKindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
stageEnteredAtstringrequireddaysInStageintegerrequired-9007199254740991 to 9007199254740991
valuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
valueFromenumrequiredcan be nullOne of
"quote","typed"valueOneOffPenceintegerrequired-9007199254740991 to 9007199254740991
valueYearlyPenceintegerrequired-9007199254740991 to 9007199254740991
manualValuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
weightedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
expectedCloseOndaterequiredcan be nullYYYY-MM-DD
closedAtstringrequiredcan be nullgoneQuietbooleanrequiredfollowUpenumrequiredcan be nullOne of
"not_viewed","expiring","declined"quoteIduuidrequiredcan be nullquoteReferencestringrequiredcan be nullquoteStatusstringrequiredcan be nulladdressstringrequiredcan be nullmessagestringrequiredcan be nulllostNotestringrequiredcan be nullcontactIduuidrequiredcan be nullinboundAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","email_in","email_out","note","call","status","assigned","quote_sent","quote_viewed","quote_accepted","quote_declined","converted","stage","site_visit","value","email_moved","merged"bodystringrequiredcan be nullsubjectstringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
curl -X PATCH "https://app.workscope.co.uk/v1/enquiries/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"email": "",
"phone": "0117 496 0123",
"company": "text",
"address": "1 Harbour Road, Bristol",
"subject": "text",
"message": "text",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"assignedUserId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"source": "email",
"status": "new",
"stageId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"valuePence": 4500,
"expectedCloseOn": "2026-11-06",
"lostReason": "price",
"lostNote": "Side gate code is on the key safe."
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"status": "new",
"source": "email",
"lostReason": "price",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"unread": false,
"createdAt": "2026-11-06T09:30:00.000Z",
"stageId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"stageName": "Harbourside Dental",
"stageKey": "new",
"stageKind": "open",
"probability": -9007199254740991,
"stageEnteredAt": "2026-11-06T09:30:00.000Z",
"daysInStage": -9007199254740991,
"valuePence": 4500,
"valueFrom": "quote",
"valueOneOffPence": 4500,
"valueYearlyPence": 4500,
"manualValuePence": 4500,
"weightedPence": 4500,
"expectedCloseOn": "2026-11-06",
"closedAt": "2026-11-06T09:30:00.000Z",
"goneQuiet": false,
"followUp": "not_viewed",
"quoteId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"quoteReference": "INV-0042",
"quoteStatus": "text",
"address": "1 Harbour Road, Bristol",
"message": "text",
"lostNote": "Side gate code is on the key safe.",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"inboundAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"body": "Side gate code is on the key safe.",
"subject": "text",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]
}Delete an enquiry (spam, a mistake) and its timeline
DELETE/v1/enquiries/{id}
- Permission
enquiry.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
okconstantrequiredAlways
true
curl -X DELETE "https://app.workscope.co.uk/v1/enquiries/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"ok": true
}A file that came with an email
GET/v1/enquiries/{id}/events/{eventId}/attachments/{index}
- Permission
enquiry.view- Module
quotes- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
eventId | path | uuidrequired | |
index | path | integerrequired |
curl "https://app.workscope.co.uk/v1/enquiries/ID/events/ID/attachments/INDEX" \
-H "Authorization: Bearer wsk_your_key_here"Move an email (and its files) to another deal. Both timelines say so.
POST/v1/enquiries/{id}/events/{eventId}/move
- Permission
enquiry.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
eventId | path | uuidrequired |
Request body JSON
toEnquiryIduuidrequired
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullstatusenumrequiredOne of
"new","contacted","quoted","won","lost"sourceenumrequiredOne of
"email","manual","phone","website"lostReasonenumrequiredcan be nullOne of
"price","timing","no_reply","not_a_fit","other"clientIduuidrequiredclientNamestringrequiredassignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredlastActivityAtstringrequiredlastActivitystringrequiredcan be nullunreadbooleanrequiredcreatedAtstringrequiredstageIduuidrequiredstageNamestringrequiredstageKeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"stageKindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
stageEnteredAtstringrequireddaysInStageintegerrequired-9007199254740991 to 9007199254740991
valuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
valueFromenumrequiredcan be nullOne of
"quote","typed"valueOneOffPenceintegerrequired-9007199254740991 to 9007199254740991
valueYearlyPenceintegerrequired-9007199254740991 to 9007199254740991
manualValuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
weightedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
expectedCloseOndaterequiredcan be nullYYYY-MM-DD
closedAtstringrequiredcan be nullgoneQuietbooleanrequiredfollowUpenumrequiredcan be nullOne of
"not_viewed","expiring","declined"quoteIduuidrequiredcan be nullquoteReferencestringrequiredcan be nullquoteStatusstringrequiredcan be nulladdressstringrequiredcan be nullmessagestringrequiredcan be nulllostNotestringrequiredcan be nullcontactIduuidrequiredcan be nullinboundAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","email_in","email_out","note","call","status","assigned","quote_sent","quote_viewed","quote_accepted","quote_declined","converted","stage","site_visit","value","email_moved","merged"bodystringrequiredcan be nullsubjectstringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
curl -X POST "https://app.workscope.co.uk/v1/enquiries/ID/events/ID/move" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"toEnquiryId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"status": "new",
"source": "email",
"lostReason": "price",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"unread": false,
"createdAt": "2026-11-06T09:30:00.000Z",
"stageId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"stageName": "Harbourside Dental",
"stageKey": "new",
"stageKind": "open",
"probability": -9007199254740991,
"stageEnteredAt": "2026-11-06T09:30:00.000Z",
"daysInStage": -9007199254740991,
"valuePence": 4500,
"valueFrom": "quote",
"valueOneOffPence": 4500,
"valueYearlyPence": 4500,
"manualValuePence": 4500,
"weightedPence": 4500,
"expectedCloseOn": "2026-11-06",
"closedAt": "2026-11-06T09:30:00.000Z",
"goneQuiet": false,
"followUp": "not_viewed",
"quoteId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"quoteReference": "INV-0042",
"quoteStatus": "text",
"address": "1 Harbour Road, Bristol",
"message": "text",
"lostNote": "Side gate code is on the key safe.",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"inboundAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"body": "Side gate code is on the key safe.",
"subject": "text",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]
}What merging this deal into another would move, and whether its client could be archived
GET/v1/enquiries/{id}/merge
- Permission
enquiry.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
intoId | query | uuidrequired |
Response object
intoIduuidrequiredintoTitlestringrequiredclientChangesbooleanrequiredfromClientNamestringrequiredintoClientNamestringrequiredcanArchiveClientbooleanrequiredmovesobjectrequiredeventsintegerrequired-9007199254740991 to 9007199254740991
quotesintegerrequired-9007199254740991 to 9007199254740991
bookingsintegerrequired-9007199254740991 to 9007199254740991
curl "https://app.workscope.co.uk/v1/enquiries/ID/merge?intoId=3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"intoId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"intoTitle": "text",
"clientChanges": false,
"fromClientName": "Harbourside Dental",
"intoClientName": "Harbourside Dental",
"canArchiveClient": false,
"moves": {
"events": -9007199254740991,
"quotes": -9007199254740991,
"bookings": -9007199254740991
}
}Merge this deal into another: its timeline, quotes and site visits move, replies to its emails still arrive, and it goes. The other deal's client and stage stay.
POST/v1/enquiries/{id}/merge
- Permission
enquiry.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
intoIduuidrequiredarchiveClientbooleanoptionalDefault
false
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullstatusenumrequiredOne of
"new","contacted","quoted","won","lost"sourceenumrequiredOne of
"email","manual","phone","website"lostReasonenumrequiredcan be nullOne of
"price","timing","no_reply","not_a_fit","other"clientIduuidrequiredclientNamestringrequiredassignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredlastActivityAtstringrequiredlastActivitystringrequiredcan be nullunreadbooleanrequiredcreatedAtstringrequiredstageIduuidrequiredstageNamestringrequiredstageKeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"stageKindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
stageEnteredAtstringrequireddaysInStageintegerrequired-9007199254740991 to 9007199254740991
valuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
valueFromenumrequiredcan be nullOne of
"quote","typed"valueOneOffPenceintegerrequired-9007199254740991 to 9007199254740991
valueYearlyPenceintegerrequired-9007199254740991 to 9007199254740991
manualValuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
weightedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
expectedCloseOndaterequiredcan be nullYYYY-MM-DD
closedAtstringrequiredcan be nullgoneQuietbooleanrequiredfollowUpenumrequiredcan be nullOne of
"not_viewed","expiring","declined"quoteIduuidrequiredcan be nullquoteReferencestringrequiredcan be nullquoteStatusstringrequiredcan be nulladdressstringrequiredcan be nullmessagestringrequiredcan be nulllostNotestringrequiredcan be nullcontactIduuidrequiredcan be nullinboundAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","email_in","email_out","note","call","status","assigned","quote_sent","quote_viewed","quote_accepted","quote_declined","converted","stage","site_visit","value","email_moved","merged"bodystringrequiredcan be nullsubjectstringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
curl -X POST "https://app.workscope.co.uk/v1/enquiries/ID/merge" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"intoId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"archiveClient": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"status": "new",
"source": "email",
"lostReason": "price",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"unread": false,
"createdAt": "2026-11-06T09:30:00.000Z",
"stageId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"stageName": "Harbourside Dental",
"stageKey": "new",
"stageKind": "open",
"probability": -9007199254740991,
"stageEnteredAt": "2026-11-06T09:30:00.000Z",
"daysInStage": -9007199254740991,
"valuePence": 4500,
"valueFrom": "quote",
"valueOneOffPence": 4500,
"valueYearlyPence": 4500,
"manualValuePence": 4500,
"weightedPence": 4500,
"expectedCloseOn": "2026-11-06",
"closedAt": "2026-11-06T09:30:00.000Z",
"goneQuiet": false,
"followUp": "not_viewed",
"quoteId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"quoteReference": "INV-0042",
"quoteStatus": "text",
"address": "1 Harbour Road, Bristol",
"message": "text",
"lostNote": "Side gate code is on the key safe.",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"inboundAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"body": "Side gate code is on the key safe.",
"subject": "text",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]
}Add a note or a call to the timeline
POST/v1/enquiries/{id}/notes
- Permission
enquiry.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
kindenumoptionalOne of
"note","call"· Default"note"bodystringrequired1–10000 characters
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullstatusenumrequiredOne of
"new","contacted","quoted","won","lost"sourceenumrequiredOne of
"email","manual","phone","website"lostReasonenumrequiredcan be nullOne of
"price","timing","no_reply","not_a_fit","other"clientIduuidrequiredclientNamestringrequiredassignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredlastActivityAtstringrequiredlastActivitystringrequiredcan be nullunreadbooleanrequiredcreatedAtstringrequiredstageIduuidrequiredstageNamestringrequiredstageKeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"stageKindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
stageEnteredAtstringrequireddaysInStageintegerrequired-9007199254740991 to 9007199254740991
valuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
valueFromenumrequiredcan be nullOne of
"quote","typed"valueOneOffPenceintegerrequired-9007199254740991 to 9007199254740991
valueYearlyPenceintegerrequired-9007199254740991 to 9007199254740991
manualValuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
weightedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
expectedCloseOndaterequiredcan be nullYYYY-MM-DD
closedAtstringrequiredcan be nullgoneQuietbooleanrequiredfollowUpenumrequiredcan be nullOne of
"not_viewed","expiring","declined"quoteIduuidrequiredcan be nullquoteReferencestringrequiredcan be nullquoteStatusstringrequiredcan be nulladdressstringrequiredcan be nullmessagestringrequiredcan be nulllostNotestringrequiredcan be nullcontactIduuidrequiredcan be nullinboundAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","email_in","email_out","note","call","status","assigned","quote_sent","quote_viewed","quote_accepted","quote_declined","converted","stage","site_visit","value","email_moved","merged"bodystringrequiredcan be nullsubjectstringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
curl -X POST "https://app.workscope.co.uk/v1/enquiries/ID/notes" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"kind": "note",
"body": "Side gate code is on the key safe."
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"status": "new",
"source": "email",
"lostReason": "price",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"unread": false,
"createdAt": "2026-11-06T09:30:00.000Z",
"stageId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"stageName": "Harbourside Dental",
"stageKey": "new",
"stageKind": "open",
"probability": -9007199254740991,
"stageEnteredAt": "2026-11-06T09:30:00.000Z",
"daysInStage": -9007199254740991,
"valuePence": 4500,
"valueFrom": "quote",
"valueOneOffPence": 4500,
"valueYearlyPence": 4500,
"manualValuePence": 4500,
"weightedPence": 4500,
"expectedCloseOn": "2026-11-06",
"closedAt": "2026-11-06T09:30:00.000Z",
"goneQuiet": false,
"followUp": "not_viewed",
"quoteId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"quoteReference": "INV-0042",
"quoteStatus": "text",
"address": "1 Harbour Road, Bristol",
"message": "text",
"lostNote": "Side gate code is on the key safe.",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"inboundAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"body": "Side gate code is on the key safe.",
"subject": "text",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]
}Mark a deal read (or unread again). Opening a deal marks it read for everyone.
POST/v1/enquiries/{id}/read
- Permission
enquiry.view- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
unreadbooleanoptionalDefault
false
Response object
okconstantrequiredAlways
true
curl -X POST "https://app.workscope.co.uk/v1/enquiries/ID/read" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"unread": false
}'Example response
{
"ok": true
}Email the enquirer. Their answer comes back to this enquiry. Links may only be to Workscope.
POST/v1/enquiries/{id}/reply
- Permission
enquiry.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
subjectstringrequired1–300 characters
bodystringrequired1–20000 characters
Response object
iduuidrequirednamestringrequiredemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullstatusenumrequiredOne of
"new","contacted","quoted","won","lost"sourceenumrequiredOne of
"email","manual","phone","website"lostReasonenumrequiredcan be nullOne of
"price","timing","no_reply","not_a_fit","other"clientIduuidrequiredclientNamestringrequiredassignedUserIduuidrequiredcan be nullassignedNamestringrequiredcan be nullnextActionOndaterequiredcan be nullYYYY-MM-DD
nextActionstringrequiredcan be nulloverduebooleanrequiredlastActivityAtstringrequiredlastActivitystringrequiredcan be nullunreadbooleanrequiredcreatedAtstringrequiredstageIduuidrequiredstageNamestringrequiredstageKeyenumrequiredcan be nullOne of
"new","contacted","site_visit","quoted","won","lost"stageKindenumrequiredOne of
"open","won","lost"probabilityintegerrequired-9007199254740991 to 9007199254740991
stageEnteredAtstringrequireddaysInStageintegerrequired-9007199254740991 to 9007199254740991
valuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
valueFromenumrequiredcan be nullOne of
"quote","typed"valueOneOffPenceintegerrequired-9007199254740991 to 9007199254740991
valueYearlyPenceintegerrequired-9007199254740991 to 9007199254740991
manualValuePenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
weightedPenceintegerrequiredcan be null-9007199254740991 to 9007199254740991
expectedCloseOndaterequiredcan be nullYYYY-MM-DD
closedAtstringrequiredcan be nullgoneQuietbooleanrequiredfollowUpenumrequiredcan be nullOne of
"not_viewed","expiring","declined"quoteIduuidrequiredcan be nullquoteReferencestringrequiredcan be nullquoteStatusstringrequiredcan be nulladdressstringrequiredcan be nullmessagestringrequiredcan be nulllostNotestringrequiredcan be nullcontactIduuidrequiredcan be nullinboundAddressstringrequiredeventsarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","email_in","email_out","note","call","status","assigned","quote_sent","quote_viewed","quote_accepted","quote_declined","converted","stage","site_visit","value","email_moved","merged"bodystringrequiredcan be nullsubjectstringrequiredcan be nullfromAddressstringrequiredcan be nulltoAddressstringrequiredcan be nullattachmentsarray of objectrequiredindexintegerrequired-9007199254740991 to 9007199254740991
filenamestringrequiredcontentTypestringrequiredbytesintegerrequired-9007199254740991 to 9007199254740991
urlstringrequired
metaobjectrequireddeliveryobjectrequiredcan be nullstatusenumrequiredOne of
"queued","sent","not_sent","delivered","bounced","complained","failed"detailstringrequiredcan be null
userNamestringrequiredcan be nullcreatedAtstringrequired
curl -X POST "https://app.workscope.co.uk/v1/enquiries/ID/reply" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"subject": "text",
"body": "Side gate code is on the key safe."
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"status": "new",
"source": "email",
"lostReason": "price",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientName": "Harbourside Dental",
"assignedUserId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"assignedName": "Harbourside Dental",
"nextActionOn": "2026-11-06",
"nextAction": "text",
"overdue": false,
"lastActivityAt": "2026-11-06T09:30:00.000Z",
"lastActivity": "text",
"unread": false,
"createdAt": "2026-11-06T09:30:00.000Z",
"stageId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"stageName": "Harbourside Dental",
"stageKey": "new",
"stageKind": "open",
"probability": -9007199254740991,
"stageEnteredAt": "2026-11-06T09:30:00.000Z",
"daysInStage": -9007199254740991,
"valuePence": 4500,
"valueFrom": "quote",
"valueOneOffPence": 4500,
"valueYearlyPence": 4500,
"manualValuePence": 4500,
"weightedPence": 4500,
"expectedCloseOn": "2026-11-06",
"closedAt": "2026-11-06T09:30:00.000Z",
"goneQuiet": false,
"followUp": "not_viewed",
"quoteId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"quoteReference": "INV-0042",
"quoteStatus": "text",
"address": "1 Harbour Road, Bristol",
"message": "text",
"lostNote": "Side gate code is on the key safe.",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"inboundAddress": "1 Harbour Road, Bristol",
"events": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"kind": "created",
"body": "Side gate code is on the key safe.",
"subject": "text",
"fromAddress": "1 Harbour Road, Bristol",
"toAddress": "1 Harbour Road, Bristol",
"attachments": [
{
"index": -9007199254740991,
"filename": "Harbourside Dental",
"contentType": "text",
"bytes": -9007199254740991,
"url": "https://example.co.uk"
}
],
"meta": {},
"delivery": {
"status": "queued",
"detail": "text"
},
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
]
}The enquiry page settings, and what the website forms need
GET/v1/enquiries/page
- Permission
enquiry.manage- Module
quotes- Answers
200
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullintrostringrequiredcan be nullthanksstringrequiredcan be nullservicesarray of stringrequiredrequiredarray of enumrequiredlogoUrlstringrequiredcan be nullcoverUrlstringrequiredcan be nullcompanyNamestringrequiredsuggestedServicesarray of stringrequiredoriginstringrequiredcareersobjectrequiredcan be nullenabledbooleanrequiredrolesarray of objectrequiredslugstringrequiredtitlestringrequired
curl "https://app.workscope.co.uk/v1/enquiries/page" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"intro": "text",
"thanks": "text",
"services": [
"text"
],
"required": [
"phone"
],
"logoUrl": "https://example.co.uk",
"coverUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"suggestedServices": [
"text"
],
"origin": "text",
"careers": {
"enabled": false,
"roles": [
{
"slug": "example-slug",
"title": "text"
}
]
}
}Change the enquiry page: switch it on, its address (shared with the careers page), colour, words, services and which questions must be answered
PATCH/v1/enquiries/page
- Permission
enquiry.manage- Module
quotes- Answers
200
Request body JSON
enabledbooleanoptionalslugstringoptionalMatches
^[a-z0-9]+(?:-[a-z0-9]+)*$· 2–60 characterscolourstringoptionalMatches
^#[0-9a-fA-F]{6}$headlinestringoptionalcan be nullUp to 160 characters
introstringoptionalcan be nullUp to 5000 characters
thanksstringoptionalcan be nullUp to 1000 characters
servicesarray of stringoptionalUp to 20 items
requiredarray of enumoptional
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullintrostringrequiredcan be nullthanksstringrequiredcan be nullservicesarray of stringrequiredrequiredarray of enumrequiredlogoUrlstringrequiredcan be nullcoverUrlstringrequiredcan be nullcompanyNamestringrequiredsuggestedServicesarray of stringrequiredoriginstringrequiredcareersobjectrequiredcan be nullenabledbooleanrequiredrolesarray of objectrequiredslugstringrequiredtitlestringrequired
curl -X PATCH "https://app.workscope.co.uk/v1/enquiries/page" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"enabled": false,
"slug": "example-slug",
"colour": "#2563eb",
"headline": "text",
"intro": "text",
"thanks": "text",
"services": [
"text"
],
"required": [
"phone"
]
}'Example response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"intro": "text",
"thanks": "text",
"services": [
"text"
],
"required": [
"phone"
],
"logoUrl": "https://example.co.uk",
"coverUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"suggestedServices": [
"text"
],
"origin": "text",
"careers": {
"enabled": false,
"roles": [
{
"slug": "example-slug",
"title": "text"
}
]
}
}Set the cover picture (shared with the careers page): send the image itself (JPEG, PNG or WebP)
POST/v1/enquiries/page/cover
- Permission
enquiry.manage- Module
quotes- Answers
200
Request body the file itself
Send the file as the body, with Content-Type one of image/jpeg, image/png, image/webp, image/heic, image/heif. See Files and photos.
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullintrostringrequiredcan be nullthanksstringrequiredcan be nullservicesarray of stringrequiredrequiredarray of enumrequiredlogoUrlstringrequiredcan be nullcoverUrlstringrequiredcan be nullcompanyNamestringrequiredsuggestedServicesarray of stringrequiredoriginstringrequiredcareersobjectrequiredcan be nullenabledbooleanrequiredrolesarray of objectrequiredslugstringrequiredtitlestringrequired
curl -X POST "https://app.workscope.co.uk/v1/enquiries/page/cover" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: image/jpeg" \
--data-binary @photo.jpgExample response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"intro": "text",
"thanks": "text",
"services": [
"text"
],
"required": [
"phone"
],
"logoUrl": "https://example.co.uk",
"coverUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"suggestedServices": [
"text"
],
"origin": "text",
"careers": {
"enabled": false,
"roles": [
{
"slug": "example-slug",
"title": "text"
}
]
}
}Take the cover picture off
DELETE/v1/enquiries/page/cover
- Permission
enquiry.manage- Module
quotes- Answers
200
Response object
enabledbooleanrequiredslugstringrequiredurlstringrequiredcolourstringrequiredheadlinestringrequiredcan be nullintrostringrequiredcan be nullthanksstringrequiredcan be nullservicesarray of stringrequiredrequiredarray of enumrequiredlogoUrlstringrequiredcan be nullcoverUrlstringrequiredcan be nullcompanyNamestringrequiredsuggestedServicesarray of stringrequiredoriginstringrequiredcareersobjectrequiredcan be nullenabledbooleanrequiredrolesarray of objectrequiredslugstringrequiredtitlestringrequired
curl -X DELETE "https://app.workscope.co.uk/v1/enquiries/page/cover" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"enabled": false,
"slug": "example-slug",
"url": "https://example.co.uk",
"colour": "text",
"headline": "text",
"intro": "text",
"thanks": "text",
"services": [
"text"
],
"required": [
"phone"
],
"logoUrl": "https://example.co.uk",
"coverUrl": "https://example.co.uk",
"companyName": "Harbourside Dental",
"suggestedServices": [
"text"
],
"origin": "text",
"careers": {
"enabled": false,
"roles": [
{
"slug": "example-slug",
"title": "text"
}
]
}
}The logo or cover on the enquiry page, for the preview
GET/v1/enquiries/page/images/{id}
- Permission
enquiry.manage- Module
quotes- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | enumrequired | One of logo, cover |
curl "https://app.workscope.co.uk/v1/enquiries/page/images/ID" \
-H "Authorization: Bearer wsk_your_key_here"The enquiry page as it will look, before it is switched on
GET/v1/enquiries/page/preview
- Permission
enquiry.manage- Module
quotes- Answers
200
Response object
slugstringrequiredcompanyNamestringrequiredwebsitestringrequiredcan be nullphonestringrequiredcan be nulllogoUrlstringrequiredcan be nullcoverUrlstringrequiredcan be nullcolourstringrequiredheadlinestringrequiredcan be nullintrostringrequiredcan be nullservicesarray of stringrequiredrequiredarray of enumrequiredthanksstringrequiredprivacystringrequiredpreviewbooleanrequired
curl "https://app.workscope.co.uk/v1/enquiries/page/preview" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"slug": "example-slug",
"companyName": "Harbourside Dental",
"website": "https://example.co.uk",
"phone": "0117 496 0123",
"logoUrl": "https://example.co.uk",
"coverUrl": "https://example.co.uk",
"colour": "text",
"headline": "text",
"intro": "text",
"services": [
"text"
],
"required": [
"phone"
],
"thanks": "text",
"privacy": "text",
"preview": false
}Read a pasted email: who sent it, their phone, the subject and their words, and any client they already are
POST/v1/enquiries/parse
- Permission
enquiry.manage- Module
quotes- Answers
200
Request body JSON
textstringrequired1–100000 characters
Response object
namestringrequiredcan be nullemailstringrequiredcan be nullphonestringrequiredcan be nullcompanystringrequiredcan be nullsubjectstringrequiredcan be nullmessagestringrequiredclientIduuidrequiredcan be nullclientNamestringrequiredcan be null
curl -X POST "https://app.workscope.co.uk/v1/enquiries/parse" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"text": "text"
}'Example response
{
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"phone": "0117 496 0123",
"company": "text",
"subject": "text",
"message": "text",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientName": "Harbourside Dental"
}The address this company forwards enquiries to
GET/v1/enquiries/settings
- Permission
enquiry.view- Module
quotes- Answers
200
Response object
inboundAddressstringrequiredinboundCodestringrequiredsignaturestringrequiredDefault
""
curl "https://app.workscope.co.uk/v1/enquiries/settings" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"inboundAddress": "1 Harbour Road, Bristol",
"inboundCode": "text",
"signature": ""
}Make a new forwarding address (the old one stops working, as do replies to emails already sent)
POST/v1/enquiries/settings/new-address
- Permission
enquiry.manage- Module
quotes- Answers
200
Response object
inboundAddressstringrequiredinboundCodestringrequiredsignaturestringrequiredDefault
""
curl -X POST "https://app.workscope.co.uk/v1/enquiries/settings/new-address" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"inboundAddress": "1 Harbour Road, Bristol",
"inboundCode": "text",
"signature": ""
}