API reference
Quotes
26 requests. Each shows the permission a key needs, what to send and what comes back.
On this page
Saved quote items in their order (archived ones with archived=true)
GET/v1/quote-items
- Permission
quote.view- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
archived | query | enum | One of true, false |
Response array of object
iduuidrequirednamestringrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequiredarchivedbooleanrequiredusedintegerrequired-9007199254740991 to 9007199254740991
curl "https://app.workscope.co.uk/v1/quote-items" \
-H "Authorization: Bearer wsk_your_key_here"Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"archived": false,
"used": -9007199254740991
}
]Save an item (added at the end of the list)
POST/v1/quote-items
- Permission
quote.manage- Module
quotes- Answers
201
Request body JSON
namestringrequired1–200 characters
descriptionstringrequired1–2000 characters
quantityX100integeroptional1 to 10000000 · Default
100unitPenceintegerrequired-100000000 to 100000000
periodenumoptionalcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanoptionalDefault
false
Response object
iduuidrequirednamestringrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequiredarchivedbooleanrequiredusedintegerrequired-9007199254740991 to 9007199254740991
curl -X POST "https://app.workscope.co.uk/v1/quote-items" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"description": "Side gate code is on the key safe.",
"quantityX100": 100,
"unitPence": 4500,
"period": "weekly",
"optional": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"archived": false,
"used": -9007199254740991
}Change or archive a saved item (quotes already made keep their copy)
PATCH/v1/quote-items/{id}
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
namestringoptional1–200 characters
descriptionstringoptional1–2000 characters
quantityX100integeroptional1 to 10000000
unitPenceintegeroptional-100000000 to 100000000
periodenumoptionalcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanoptionalarchivedbooleanoptional
Response object
iduuidrequirednamestringrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequiredarchivedbooleanrequiredusedintegerrequired-9007199254740991 to 9007199254740991
curl -X PATCH "https://app.workscope.co.uk/v1/quote-items/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"description": "Side gate code is on the key safe.",
"quantityX100": 1,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"archived": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"archived": false,
"used": -9007199254740991
}Delete a saved item no quote has used (archive it otherwise)
DELETE/v1/quote-items/{id}
- Permission
quote.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/quote-items/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"ok": true
}Put the saved items in this order
PUT/v1/quote-items/order
- Permission
quote.manage- Module
quotes- Answers
200
Request body JSON
idsarray of uuidrequired1–500 items
Response array of object
iduuidrequirednamestringrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequiredarchivedbooleanrequiredusedintegerrequired-9007199254740991 to 9007199254740991
curl -X PUT "https://app.workscope.co.uk/v1/quote-items/order" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"ids": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
]
}'Example response
[
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"archived": false,
"used": -9007199254740991
}
]Quotes, newest first, with counts by status (expired ones shown as expired)
GET/v1/quotes
- Permission
quote.view- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
status | query | enum | One of draft, sent, viewed, accepted, declined, expired, withdrawn, all, waiting · Default "all" |
enquiryId | query | uuid | |
clientId | query | uuid | |
q | query | string | |
projectId | query | uuid |
Response object
quotesarray of objectrequirediduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequired
countsobjectrequired
curl "https://app.workscope.co.uk/v1/quotes" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"quotes": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"counts": {}
}Start a quote for an enquiry or a client (a draft, no number yet); can copy another quote
POST/v1/quotes
- Permission
quote.manage- Module
quotes- Answers
201
Request body JSON
enquiryIduuidoptionalcan be nullclientIduuidoptionalcan be nullcontactIduuidoptionalcan be nulltitlestringrequired1–200 characters
copyFromQuoteIduuidoptional
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X POST "https://app.workscope.co.uk/v1/quotes" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"enquiryId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"clientId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"title": "text",
"copyFromQuoteId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}One quote: the working copy, its totals, versions sent, the acceptance and history
GET/v1/quotes/{id}
- Permission
quote.view- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl "https://app.workscope.co.uk/v1/quotes/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}Change the working copy (lines are replaced as a whole). A sent quote changes only when sent again, as a new version.
PATCH/v1/quotes/{id}
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
titlestringoptional1–200 characters
scopestringoptionalcan be nullUp to 50000 characters
termsstringoptionalcan be nullUp to 20000 characters
notesstringoptionalcan be nullUp to 20000 characters
validUntildateoptionalcan be nullYYYY-MM-DD
clientIduuidoptionalcontactIduuidoptionalcan be nullrecipientNamestringoptionalcan be nullUp to 200 characters
recipientEmailconstant or stringoptionalcan be nullrecipientCompanystringoptionalcan be nullUp to 200 characters
recipientAddressstringoptionalcan be nullUp to 500 characters
linesarray of objectoptionalUp to 200 items
iduuidoptionaldescriptionstringrequired1–2000 characters
quantityX100integeroptional1 to 10000000 · Default
100unitPenceintegerrequired-100000000 to 100000000
periodenumoptionalcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanoptionalDefault
falseitemIduuidoptionalcan be null
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X PATCH "https://app.workscope.co.uk/v1/quotes/ID" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"title": "text",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"validUntil": "2026-11-06",
"clientId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"contactId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"recipientName": "Harbourside Dental",
"recipientEmail": "",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"quantityX100": 100,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"itemId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}
]
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}Delete a draft that was never sent
DELETE/v1/quotes/{id}
- Permission
quote.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/quotes/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"ok": true
}A ready-to-send email for a quote (sending it, or a nudge) in the company's wording
GET/v1/quotes/{id}/email
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
kind | query | enum | One of quote, quote_nudge · Default "quote" |
Response object
toarray of objectrequiredemailstringrequirednamestringrequiredcan be null
subjectstringrequiredmessagestringrequiredpdfbooleanrequiredlinkstringrequiredcan be null
curl "https://app.workscope.co.uk/v1/quotes/ID/email" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"to": [
{
"email": "office@example.co.uk",
"name": "Harbourside Dental"
}
],
"subject": "text",
"message": "text",
"pdf": false,
"link": "text"
}Add a picture to the scope
POST/v1/quotes/{id}/images
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
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
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X POST "https://app.workscope.co.uk/v1/quotes/ID/images" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: image/jpeg" \
--data-binary @photo.jpgExample response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}Take a picture out of the working copy (versions already sent keep it)
DELETE/v1/quotes/{id}/images/{imageId}
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
imageId | path | uuidrequired |
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X DELETE "https://app.workscope.co.uk/v1/quotes/ID/images/ID" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}A picture in the scope
GET/v1/quotes/{id}/images/{imageId}/{size}
- Permission
quote.view- Module
quotes- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
imageId | path | uuidrequired | |
size | path | enumrequired | One of thumb, full |
curl "https://app.workscope.co.uk/v1/quotes/ID/images/ID/SIZE" \
-H "Authorization: Bearer wsk_your_key_here"Email the client a nudge about a quote that is out, with its link
POST/v1/quotes/{id}/nudge
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
toarray of emailrequired1–5 items
subjectstringrequired1–300 characters
messagestringrequired1–10000 characters
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X POST "https://app.workscope.co.uk/v1/quotes/ID/nudge" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"to": [
"office@example.co.uk"
],
"subject": "text",
"message": "text"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}The latest version sent as a PDF (signed, once accepted)
GET/v1/quotes/{id}/pdf
- Permission
quote.view- Module
quotes- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
curl "https://app.workscope.co.uk/v1/quotes/ID/pdf" \
-H "Authorization: Bearer wsk_your_key_here"The working copy as the client would see it if it were sent now
GET/v1/quotes/{id}/preview
- Permission
quote.view- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
referencestringrequiredversionintegerrequired-9007199254740991 to 9007199254740991
statusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"titlestringrequiredissuedOndaterequiredYYYY-MM-DD
validUntildaterequiredcan be nullYYYY-MM-DD
fromobjectrequirednamestringrequiredaddressstringrequiredcan be nullphonestringrequiredcan be nullemailstringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nulllogoUrlstringrequiredcan be null
toobjectrequirednamestringrequiredcan be nullcompanystringrequiredcan be nulladdressstringrequiredcan be nullemailstringrequiredcan be null
scopestringrequiredcan be nullimagesarray of objectrequirediduuidrequiredthumbUrlstringrequiredfullUrlstringrequired
linesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullfingerprintstringrequiredacceptedobjectrequiredcan be nullnamestringrequiredatstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringoptionalcan be null
pdfUrlstringoptionalcan be nulldeclinedAtstringrequiredcan be null
curl "https://app.workscope.co.uk/v1/quotes/ID/preview" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"reference": "INV-0042",
"version": -9007199254740991,
"status": "draft",
"title": "text",
"issuedOn": "2026-11-06",
"validUntil": "2026-11-06",
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"phone": "0117 496 0123",
"email": "office@example.co.uk",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"logoUrl": "https://example.co.uk"
},
"to": {
"name": "Harbourside Dental",
"company": "text",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk"
},
"scope": "text",
"images": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"lines": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"itemId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"vatRegistered": false,
"terms": "text",
"fingerprint": "text",
"accepted": {
"name": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"pdfUrl": "https://example.co.uk",
"declinedAt": "2026-11-06T09:30:00.000Z"
}Add a project (property) for an accepted quote's client, for its address, and link the quote to it
POST/v1/quotes/{id}/project
- Permission
quote.manage or project.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
namestringrequired1–200 characters
addressstringoptionalcan be nullUp to 500 characters
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X POST "https://app.workscope.co.uk/v1/quotes/ID/project" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}Choose what an accepted quote's work is booked against: the client only, or one of its existing projects (until work has been made from it)
PUT/v1/quotes/{id}/project
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
projectIduuidrequiredcan be null
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X PUT "https://app.workscope.co.uk/v1/quotes/ID/project" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}Send the working copy as the next version (numbered on first send), by email or just to share the link
POST/v1/quotes/{id}/send
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
emailbooleanoptionalDefault
truetoarray of emailoptional1–5 items
subjectstringoptionalUp to 300 characters
messagestringoptionalUp to 10000 characters
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X POST "https://app.workscope.co.uk/v1/quotes/ID/send" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"email": true,
"to": [
"office@example.co.uk"
],
"subject": "text",
"message": "text"
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}The signature an accepted quote was signed with
GET/v1/quotes/{id}/signature
- Permission
quote.view- Module
quotes- Answers
200with a file (image/jpeg)
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
curl "https://app.workscope.co.uk/v1/quotes/ID/signature" \
-H "Authorization: Bearer wsk_your_key_here"A version exactly as it was sent (as the client sees it)
GET/v1/quotes/{id}/versions/{version}
- Permission
quote.view- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired | |
version | path | integerrequired |
Response object
referencestringrequiredversionintegerrequired-9007199254740991 to 9007199254740991
statusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"titlestringrequiredissuedOndaterequiredYYYY-MM-DD
validUntildaterequiredcan be nullYYYY-MM-DD
fromobjectrequirednamestringrequiredaddressstringrequiredcan be nullphonestringrequiredcan be nullemailstringrequiredcan be nullwebsitestringrequiredcan be nullcompanyNumberstringrequiredcan be nullvatNumberstringrequiredcan be nulllogoUrlstringrequiredcan be null
toobjectrequirednamestringrequiredcan be nullcompanystringrequiredcan be nulladdressstringrequiredcan be nullemailstringrequiredcan be null
scopestringrequiredcan be nullimagesarray of objectrequirediduuidrequiredthumbUrlstringrequiredfullUrlstringrequired
linesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
vatRegisteredbooleanrequiredtermsstringrequiredcan be nullfingerprintstringrequiredacceptedobjectrequiredcan be nullnamestringrequiredatstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringoptionalcan be null
pdfUrlstringoptionalcan be nulldeclinedAtstringrequiredcan be null
curl "https://app.workscope.co.uk/v1/quotes/ID/versions/VERSION" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"reference": "INV-0042",
"version": -9007199254740991,
"status": "draft",
"title": "text",
"issuedOn": "2026-11-06",
"validUntil": "2026-11-06",
"from": {
"name": "Harbourside Dental",
"address": "1 Harbour Road, Bristol",
"phone": "0117 496 0123",
"email": "office@example.co.uk",
"website": "https://example.co.uk",
"companyNumber": "text",
"vatNumber": "text",
"logoUrl": "https://example.co.uk"
},
"to": {
"name": "Harbourside Dental",
"company": "text",
"address": "1 Harbour Road, Bristol",
"email": "office@example.co.uk"
},
"scope": "text",
"images": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"lines": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"itemId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"vatRegistered": false,
"terms": "text",
"fingerprint": "text",
"accepted": {
"name": "Harbourside Dental",
"at": "2026-11-06T09:30:00.000Z",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"pdfUrl": "https://example.co.uk",
"declinedAt": "2026-11-06T09:30:00.000Z"
}Withdraw a quote that is out (its link then says so)
POST/v1/quotes/{id}/withdraw
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X POST "https://app.workscope.co.uk/v1/quotes/ID/withdraw" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}Mark an accepted line as not needed as work (or take that back). Jobs and bookings made with fromQuote link themselves.
POST/v1/quotes/{id}/work
- Permission
quote.manage- Module
quotes- Answers
200
Parameters
| Name | In | Kind | |
|---|---|---|---|
id | path | uuidrequired |
Request body JSON
lineIduuidrequirednotNeededbooleanrequired
Response object
iduuidrequirednumberintegerrequiredcan be null-9007199254740991 to 9007199254740991
referencestringrequiredcan be nulltitlestringrequiredstatusenumrequiredOne of
"draft","sent","viewed","accepted","declined","expired","withdrawn"versionintegerrequired-9007199254740991 to 9007199254740991
enquiryIduuidrequiredcan be nullclientIduuidrequiredforNamestringrequiredrecipientEmailstringrequiredcan be nullvalidUntildaterequiredcan be nullYYYY-MM-DD
oneOffNetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
sentAtstringrequiredcan be nullansweredAtstringrequiredcan be nullcreatedAtstringrequiredscopestringrequiredcan be nulltermsstringrequiredcan be nullnotesstringrequiredcan be nullrecipientNamestringrequiredcan be nullrecipientCompanystringrequiredcan be nullrecipientAddressstringrequiredcan be nulllinesarray of objectrequirediduuidrequireditemIduuidoptionalcan be nulldescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"optionalbooleanrequirednetPenceintegerrequired-9007199254740991 to 9007199254740991
totalsobjectrequiredoneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
recurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
optionalOneOffobjectrequirednetintegerrequired-9007199254740991 to 9007199254740991
optionalRecurringarray of objectrequirednetintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"
imagesarray of objectrequirediduuidrequiredwidthintegerrequired-9007199254740991 to 9007199254740991
heightintegerrequired-9007199254740991 to 9007199254740991
thumbUrlstringrequiredfullUrlstringrequired
vatRegisteredbooleanrequiredpublicUrlstringrequiredcan be nullunsentChangesbooleanrequiredversionsarray of objectrequiredversionintegerrequired-9007199254740991 to 9007199254740991
sentAtstringrequiredsentByNamestringrequiredcan be nullfingerprintstringrequiredoneOffNetintegerrequired-9007199254740991 to 9007199254740991
acceptanceobjectrequiredcan be nullversionintegerrequired-9007199254740991 to 9007199254740991
namestringrequiredemailstringrequiredcan be nullatstringrequiredipstringrequiredcan be nulluserAgentstringrequiredcan be nullfingerprintstringrequiredoptionalLineIdsarray of uuidrequiredsignatureUrlstringrequired
declineReasonstringrequiredcan be nullchangesarray of objectrequirediduuidrequiredkindenumrequiredOne of
"created","edited","sent","viewed","accepted","declined","withdrawn","reopened","converted"summarystringrequiredcan be nulluserNamestringrequiredcan be nullcreatedAtstringrequired
enquiryNamestringrequiredcan be nullclientNamestringrequiredcontactIduuidrequiredcan be nullclientAddressstringrequiredcan be nullprojectIduuidrequiredcan be nullprojectNamestringrequiredcan be nullworkarray of objectrequiredcan be nulllineIduuidrequireddescriptionstringrequiredquantityX100integerrequired-9007199254740991 to 9007199254740991
unitPenceintegerrequired-9007199254740991 to 9007199254740991
periodenumrequiredcan be nullOne of
"weekly","fortnightly","four_weekly","monthly","quarterly","yearly"notNeededbooleanrequiredjobsarray of objectrequirediduuidrequirednamestringrequired
bookingsarray of objectrequirediduuidrequirednamestringrequireddatedaterequiredcan be nullYYYY-MM-DD
curl -X POST "https://app.workscope.co.uk/v1/quotes/ID/work" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"lineId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"notNeeded": false
}'Example response
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"number": -9007199254740991,
"reference": "INV-0042",
"title": "text",
"status": "draft",
"version": -9007199254740991,
"enquiryId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"clientId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"forName": "Harbourside Dental",
"recipientEmail": "office@example.co.uk",
"validUntil": "2026-11-06",
"oneOffNet": -9007199254740991,
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"sentAt": "2026-11-06T09:30:00.000Z",
"answeredAt": "2026-11-06T09:30:00.000Z",
"createdAt": "2026-11-06T09:30:00.000Z",
"scope": "text",
"terms": "text",
"notes": "Side gate code is on the key safe.",
"recipientName": "Harbourside Dental",
"recipientCompany": "text",
"recipientAddress": "1 Harbour Road, Bristol",
"lines": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"itemId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"optional": false,
"netPence": 4500
}
],
"totals": {
"oneOff": {
"net": -9007199254740991
},
"recurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
],
"optionalOneOff": {
"net": -9007199254740991
},
"optionalRecurring": [
{
"net": -9007199254740991,
"period": "weekly"
}
]
},
"images": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"width": -9007199254740991,
"height": -9007199254740991,
"thumbUrl": "https://example.co.uk",
"fullUrl": "https://example.co.uk"
}
],
"vatRegistered": false,
"publicUrl": "https://example.co.uk",
"unsentChanges": false,
"versions": [
{
"version": -9007199254740991,
"sentAt": "2026-11-06T09:30:00.000Z",
"sentByName": "Harbourside Dental",
"fingerprint": "text",
"oneOffNet": -9007199254740991
}
],
"acceptance": {
"version": -9007199254740991,
"name": "Harbourside Dental",
"email": "office@example.co.uk",
"at": "2026-11-06T09:30:00.000Z",
"ip": "text",
"userAgent": "text",
"fingerprint": "text",
"optionalLineIds": [
"3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41"
],
"signatureUrl": "https://example.co.uk"
},
"declineReason": "text",
"changes": [
{
"id": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"kind": "created",
"summary": "text",
"userName": "Harbourside Dental",
"createdAt": "2026-11-06T09:30:00.000Z"
}
],
"enquiryName": "Harbourside Dental",
"clientName": "Harbourside Dental",
"contactId": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"clientAddress": "1 Harbour Road, Bristol",
"projectId": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"projectName": "1 Harbour Road",
"work": [
{
"lineId": "8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"description": "Side gate code is on the key safe.",
"quantityX100": -9007199254740991,
"unitPence": 4500,
"period": "weekly",
"notNeeded": false,
"jobs": [
{
"id": "b7e6d5c4-3b2a-4190-8f7e-6d5c4b3a2918",
"name": "Harbourside Dental"
}
],
"bookings": [
{
"id": "3f2a9c1e-6b4d-4e8a-9f1c-2d7b5a0e8c41",
"name": "Harbourside Dental",
"date": "2026-11-06"
}
]
}
]
}Quote numbering, how long a quote stands, and the terms new quotes start with
GET/v1/quotes/settings
- Permission
quote.view- Module
quotes- Answers
200
Response object
quotePrefixstringrequirednextQuoteNumberintegerrequired-9007199254740991 to 9007199254740991
quoteValidityDaysintegerrequired-9007199254740991 to 9007199254740991
quoteTermsstringrequired
curl "https://app.workscope.co.uk/v1/quotes/settings" \
-H "Authorization: Bearer wsk_your_key_here"Example response
{
"quotePrefix": "text",
"nextQuoteNumber": -9007199254740991,
"quoteValidityDays": -9007199254740991,
"quoteTerms": "text"
}Change the quote settings
PATCH/v1/quotes/settings
- Permission
quote.manage- Module
quotes- Answers
200
Request body JSON
quotePrefixstringoptionalUp to 10 characters
nextQuoteNumberintegeroptional1 to 9999999
quoteValidityDaysintegeroptional1 to 365
quoteTermsstringoptionalUp to 20000 characters
Response object
quotePrefixstringrequirednextQuoteNumberintegerrequired-9007199254740991 to 9007199254740991
quoteValidityDaysintegerrequired-9007199254740991 to 9007199254740991
quoteTermsstringrequired
curl -X PATCH "https://app.workscope.co.uk/v1/quotes/settings" \
-H "Authorization: Bearer wsk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"quotePrefix": "text",
"nextQuoteNumber": 1,
"quoteValidityDays": 1,
"quoteTerms": "text"
}'Example response
{
"quotePrefix": "text",
"nextQuoteNumber": -9007199254740991,
"quoteValidityDays": -9007199254740991,
"quoteTerms": "text"
}