Requests API
REST endpoints for requests in SKUFlow: 9 operations with parameters, request and response fields, permissions and curl examples.
Base URL: https://app.skuflow.ai/api. Every call needs Authorization: Bearer skf_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.
| Operation | Endpoint | Risk |
|---|---|---|
| List requests | GET /organizations/{organizationId}/requests | read |
| Create a request | POST /organizations/{organizationId}/requests | write |
| Get a request with its customer and quotes | GET /organizations/{organizationId}/requests/{requestId} | read |
| Update a request | PATCH /organizations/{organizationId}/requests/{requestId} | write |
| Delete a request | DELETE /organizations/{organizationId}/requests/{requestId} | sensitive |
| Make the request's contact a customer | POST /organizations/{organizationId}/requests/{requestId}/customer | write |
| Convert a request to a draft quote | POST /organizations/{organizationId}/requests/{requestId}/quote | write |
| Online request form and portal settings | GET /organizations/{organizationId}/booking-settings | read |
| Turn the online request form or customer sign-in on or off | PATCH /organizations/{organizationId}/booking-settings | sensitive |
List requests
GET /organizations/{organizationId}/requests
Requests (REQ-n, leads) newest first: from the online request form, the website, the customer portal or entered by staff. Filter by text, status, source or customer; paged with a total. Read-only.
| Permission | requests.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | requests_list (toolset sales, in the default set) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
query | query | string | No | Free-text search over the list's names, numbers and contact details. Up to 200 characters. |
status | query | enum | No | One of NEW, QUOTED, CONVERTED, ARCHIVED. |
source | query | enum | No | Manual: entered by staff; ONLINE_BOOKING: the public request form (/book/{slug}), the website or a widget; PORTAL: sent from the customer portal. One of MANUAL, ONLINE_BOOKING, PORTAL, DESIGN_STUDIO. |
customerId | query | string | No | |
businessUnitId | query | string | No | Only this business unit (GET /business-units), or "none" for records without one. Up to 100 characters. |
limit | query | integer | No | Page size, 1–200. Default 50. |
offset | query | integer | No | Rows to skip; the answer's total counts every match. Default 0. |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/requests" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
items | array of object | |
items[].id | string | Request id. |
items[].organizationId | string | |
items[].identifier | string | REQ-n, unique per organization. |
items[].customerId | string or null | Null while the request is from a new contact. |
items[].contactName | string or null | |
items[].contactCompany | string or null | |
items[].contactPhone | string or null | |
items[].contactEmail | string or null | |
items[].propertyId | string or null | |
items[].address | string or null | |
items[].description | string | What the customer asked for. |
items[].preferredDate | string or null | When they need it (in-hands date), YYYY-MM-DD. |
items[].alternateDate | string or null | YYYY-MM-DD |
items[].source | enum | Where it came from: MANUAL (staff), ONLINE_BOOKING (the online request form, website or a widget) or PORTAL (the customer portal). One of MANUAL, ONLINE_BOOKING, PORTAL, DESIGN_STUDIO. |
items[].status | enum | NEW → QUOTED → CONVERTED (its quote was invoiced), or ARCHIVED. One of NEW, QUOTED, CONVERTED, ARCHIVED. |
items[].internalNotes | string or null | |
items[].convertedAt | string (date-time) or null | |
items[].archivedAt | string (date-time) or null | |
items[].businessUnitId | string or null | |
items[].adCampaignId | string or null | The ad campaign that brought it; null when not from an ad. |
items[].createdAt | string (date-time) | |
items[].updatedAt | string (date-time) | |
items[].customer | object or null | |
items[].customer.id | string | |
items[].customer.name | string | |
items[].property | object or null | |
items[].property.id | string | Property id. |
items[].property.name | string or null | |
items[].property.address | string or null | |
items[].property.city | string or null | |
items[].businessUnit | object or null | The business unit. |
items[].businessUnit.id | string | |
items[].businessUnit.name | string | |
total | integer | How many match the filters, across all pages. |
Create a request
POST /organizations/{organizationId}/requests
Records a NEW request (REQ-n). Name an existing customerId (search GET /customers first), or give contactName (and phone/email) for a new contact; no customer is created until POST /requests/{requestId}/customer. Nothing is sent to anyone.
| Permission | requests.write (Owner, Admin, Staff) |
| Risk | write, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it. |
| MCP tool | requests_create (toolset sales, in the default set) |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
customerId | string or null | No | |
contactName | string or null | No | Up to 200 characters. |
contactCompany | string or null | No | Up to 200 characters. |
contactPhone | string or null | No | Up to 50 characters. |
contactEmail | empty string or string (email) or null | No | |
propertyId | string or null | No | |
address | string or null | No | Up to 500 characters. |
description | string | Yes | |
preferredDate | empty string or string or null | No | When the customer would like it (an in-hands date). |
alternateDate | empty string or string or null | No | |
source | enum | No | Manual: entered by staff; ONLINE_BOOKING: the public request form (/book/{slug}), the website or a widget; PORTAL: sent from the customer portal. One of MANUAL, ONLINE_BOOKING, PORTAL, DESIGN_STUDIO. |
internalNotes | string or null | No | |
businessUnitId | string or null | No | Business unit (GET /business-units); null = none. Omitted on create: the business's default unit, if any. Up to 100 characters. |
Example
curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/requests" \
-H "Authorization: Bearer $SKUFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description":"string"}'Response
201: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | Request id. |
organizationId | string | |
identifier | string | REQ-n, unique per organization. |
customerId | string or null | Null while the request is from a new contact. |
contactName | string or null | |
contactCompany | string or null | |
contactPhone | string or null | |
contactEmail | string or null | |
propertyId | string or null | |
address | string or null | |
description | string | What the customer asked for. |
preferredDate | string or null | When they need it (in-hands date), YYYY-MM-DD. |
alternateDate | string or null | YYYY-MM-DD |
source | enum | Where it came from: MANUAL (staff), ONLINE_BOOKING (the online request form, website or a widget) or PORTAL (the customer portal). One of MANUAL, ONLINE_BOOKING, PORTAL, DESIGN_STUDIO. |
status | enum | NEW → QUOTED → CONVERTED (its quote was invoiced), or ARCHIVED. One of NEW, QUOTED, CONVERTED, ARCHIVED. |
internalNotes | string or null | |
convertedAt | string (date-time) or null | |
archivedAt | string (date-time) or null | |
businessUnitId | string or null | |
adCampaignId | string or null | The ad campaign that brought it; null when not from an ad. |
createdAt | string (date-time) | |
updatedAt | string (date-time) | |
customer | object or null | |
customer.id | string | |
customer.name | string | |
property | object or null | |
property.id | string | Property id. |
property.name | string or null | |
property.address | string or null | |
property.city | string or null | |
businessUnit | object or null | The business unit. |
businessUnit.id | string | |
businessUnit.name | string |
Get a request with its customer and quotes
GET /organizations/{organizationId}/requests/{requestId}
One request with its customer, address and quotes. matchingCustomers lists existing customers with the contact's email or phone, when no customer is linked: link one with PATCH (customerId) rather than creating a duplicate. Read-only.
| Permission | requests.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | requests_get (toolset sales, in the default set) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
requestId | path | string | Yes |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/requests/{requestId}" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | Request id. |
organizationId | string | |
identifier | string | REQ-n, unique per organization. |
customerId | string or null | Null while the request is from a new contact. |
contactName | string or null | |
contactCompany | string or null | |
contactPhone | string or null | |
contactEmail | string or null | |
propertyId | string or null | |
address | string or null | |
description | string | What the customer asked for. |
preferredDate | string or null | When they need it (in-hands date), YYYY-MM-DD. |
alternateDate | string or null | YYYY-MM-DD |
source | enum | Where it came from: MANUAL (staff), ONLINE_BOOKING (the online request form, website or a widget) or PORTAL (the customer portal). One of MANUAL, ONLINE_BOOKING, PORTAL, DESIGN_STUDIO. |
status | enum | NEW → QUOTED → CONVERTED (its quote was invoiced), or ARCHIVED. One of NEW, QUOTED, CONVERTED, ARCHIVED. |
internalNotes | string or null | |
convertedAt | string (date-time) or null | |
archivedAt | string (date-time) or null | |
businessUnitId | string or null | |
adCampaignId | string or null | The ad campaign that brought it; null when not from an ad. |
createdAt | string (date-time) | |
updatedAt | string (date-time) | |
customer | object or null | |
customer.id | string | |
customer.name | string | |
customer.email | string or null | |
customer.phone | string or null | |
customer.status | enum | LEAD until the first sale, then ACTIVE; ARCHIVED customers leave the lists. One of LEAD, ACTIVE, INACTIVE, ARCHIVED. |
property | object or null | |
property.id | string | Property id. |
property.name | string or null | |
property.address | string or null | |
property.city | string or null | |
property.state | string or null | |
property.zip | string or null | |
businessUnit | object or null | The business unit. |
businessUnit.id | string | |
businessUnit.name | string | |
quotes | array of object | |
quotes[].id | string | |
quotes[].identifier | string | Q-n |
quotes[].status | enum | DRAFT → SENT (customer can answer at /q/{publicToken}) → APPROVED / CHANGES_REQUESTED / DECLINED; APPROVED → CONVERTED (invoice made). SENT past validUntil becomes EXPIRED. One of DRAFT, SENT, APPROVED, CHANGES_REQUESTED, DECLINED, CONVERTED, EXPIRED, ARCHIVED. |
quotes[].title | string | |
matchingCustomers | array of object | Existing customers with the contact's email or phone (up to 3) while the request has no customer. |
matchingCustomers[].id | string | |
matchingCustomers[].name | string | |
matchingCustomers[].email | string or null | |
matchingCustomers[].phone | string or null | |
designs | array of object | The design sent with it from the online designer; converting the request quotes it. |
designs[].id | string | The design (GET /designs/{designId}). |
designs[].name | string | |
designs[].productId | string | |
designs[].productName | string | |
designs[].colorNames | array of string | |
designs[].submittedAt | string (date-time) or null | |
designs[].mockups | array of object | |
designs[].mockups[].view | string | |
designs[].mockups[].url | string or null |
Update a request
PATCH /organizations/{organizationId}/requests/{requestId}
Changes the fields sent. status: ARCHIVED archives it; NEW reopens an archived request. To quote it use POST /requests/{requestId}/quote.
| Permission | requests.write (Owner, Admin, Staff) |
| Risk | write, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it. |
| MCP tool | requests_update (toolset sales) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
requestId | path | string | Yes |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
customerId | string or null | No | |
contactName | string or null | No | Up to 200 characters. |
contactCompany | string or null | No | Up to 200 characters. |
contactPhone | string or null | No | Up to 50 characters. |
contactEmail | empty string or string (email) or null | No | |
propertyId | string or null | No | |
address | string or null | No | Up to 500 characters. |
description | string | No | |
preferredDate | empty string or string or null | No | When the customer would like it (an in-hands date). |
alternateDate | empty string or string or null | No | |
source | enum | No | Manual: entered by staff; ONLINE_BOOKING: the public request form (/book/{slug}), the website or a widget; PORTAL: sent from the customer portal. One of MANUAL, ONLINE_BOOKING, PORTAL, DESIGN_STUDIO. |
internalNotes | string or null | No | |
businessUnitId | string or null | No | Business unit (GET /business-units); null = none. Omitted on create: the business's default unit, if any. Up to 100 characters. |
status | enum | No | One of NEW, QUOTED, CONVERTED, ARCHIVED. |
Example
curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/requests/{requestId}" \
-H "Authorization: Bearer $SKUFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"customerId":"customer_id","contactName":"string","contactCompany":"string"}'Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | Request id. |
organizationId | string | |
identifier | string | REQ-n, unique per organization. |
customerId | string or null | Null while the request is from a new contact. |
contactName | string or null | |
contactCompany | string or null | |
contactPhone | string or null | |
contactEmail | string or null | |
propertyId | string or null | |
address | string or null | |
description | string | What the customer asked for. |
preferredDate | string or null | When they need it (in-hands date), YYYY-MM-DD. |
alternateDate | string or null | YYYY-MM-DD |
source | enum | Where it came from: MANUAL (staff), ONLINE_BOOKING (the online request form, website or a widget) or PORTAL (the customer portal). One of MANUAL, ONLINE_BOOKING, PORTAL, DESIGN_STUDIO. |
status | enum | NEW → QUOTED → CONVERTED (its quote was invoiced), or ARCHIVED. One of NEW, QUOTED, CONVERTED, ARCHIVED. |
internalNotes | string or null | |
convertedAt | string (date-time) or null | |
archivedAt | string (date-time) or null | |
businessUnitId | string or null | |
adCampaignId | string or null | The ad campaign that brought it; null when not from an ad. |
createdAt | string (date-time) | |
updatedAt | string (date-time) | |
customer | object or null | |
customer.id | string | |
customer.name | string | |
property | object or null | |
property.id | string | Property id. |
property.name | string or null | |
property.address | string or null | |
property.city | string or null | |
businessUnit | object or null | The business unit. |
businessUnit.id | string | |
businessUnit.name | string |
Delete a request
DELETE /organizations/{organizationId}/requests/{requestId}
Destructive: deletes the request. Quotes made from it stay. Prefer archiving (PATCH status: ARCHIVED).
| Permission | requests.delete (Owner, Admin, Staff) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | requests_delete (toolset sales) |
| Approval | Over MCP, this tool always waits for your approval in SKUFlow. See Approvals. |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
requestId | path | string | Yes |
Example
curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/requests/{requestId}" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
ok | true |
Make the request's contact a customer
POST /organizations/{organizationId}/requests/{requestId}/customer
Creates a LEAD customer (and an address record from the address) from the request's contact when the request has none, and links it; returns the request. Check matchingCustomers on GET /requests/{requestId} first to avoid duplicates.
| Permission | requests.write (Owner, Admin, Staff) |
| Risk | write, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it. |
| MCP tool | requests_ensureCustomer (toolset sales) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
requestId | path | string | Yes |
Example
curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/requests/{requestId}/customer" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | Request id. |
organizationId | string | |
identifier | string | REQ-n, unique per organization. |
customerId | string or null | Null while the request is from a new contact. |
contactName | string or null | |
contactCompany | string or null | |
contactPhone | string or null | |
contactEmail | string or null | |
propertyId | string or null | |
address | string or null | |
description | string | What the customer asked for. |
preferredDate | string or null | When they need it (in-hands date), YYYY-MM-DD. |
alternateDate | string or null | YYYY-MM-DD |
source | enum | Where it came from: MANUAL (staff), ONLINE_BOOKING (the online request form, website or a widget) or PORTAL (the customer portal). One of MANUAL, ONLINE_BOOKING, PORTAL, DESIGN_STUDIO. |
status | enum | NEW → QUOTED → CONVERTED (its quote was invoiced), or ARCHIVED. One of NEW, QUOTED, CONVERTED, ARCHIVED. |
internalNotes | string or null | |
convertedAt | string (date-time) or null | |
archivedAt | string (date-time) or null | |
businessUnitId | string or null | |
adCampaignId | string or null | The ad campaign that brought it; null when not from an ad. |
createdAt | string (date-time) | |
updatedAt | string (date-time) | |
customer | object or null | |
customer.id | string | |
customer.name | string | |
customer.email | string or null | |
customer.phone | string or null | |
customer.status | enum | LEAD until the first sale, then ACTIVE; ARCHIVED customers leave the lists. One of LEAD, ACTIVE, INACTIVE, ARCHIVED. |
property | object or null | |
property.id | string | Property id. |
property.name | string or null | |
property.address | string or null | |
property.city | string or null | |
property.state | string or null | |
property.zip | string or null | |
businessUnit | object or null | The business unit. |
businessUnit.id | string | |
businessUnit.name | string | |
quotes | array of object | |
quotes[].id | string | |
quotes[].identifier | string | Q-n |
quotes[].status | enum | DRAFT → SENT (customer can answer at /q/{publicToken}) → APPROVED / CHANGES_REQUESTED / DECLINED; APPROVED → CONVERTED (invoice made). SENT past validUntil becomes EXPIRED. One of DRAFT, SENT, APPROVED, CHANGES_REQUESTED, DECLINED, CONVERTED, EXPIRED, ARCHIVED. |
quotes[].title | string | |
matchingCustomers | array of object | Existing customers with the contact's email or phone (up to 3) while the request has no customer. |
matchingCustomers[].id | string | |
matchingCustomers[].name | string | |
matchingCustomers[].email | string or null | |
matchingCustomers[].phone | string or null | |
designs | array of object | The design sent with it from the online designer; converting the request quotes it. |
designs[].id | string | The design (GET /designs/{designId}). |
designs[].name | string | |
designs[].productId | string | |
designs[].productName | string | |
designs[].colorNames | array of string | |
designs[].submittedAt | string (date-time) or null | |
designs[].mockups | array of object | |
designs[].mockups[].view | string | |
designs[].mockups[].url | string or null |
Convert a request to a draft quote
POST /organizations/{organizationId}/requests/{requestId}/quote
Creates a DRAFT quote for the request (and the customer, if the request is from a new contact); the request becomes QUOTED. Fill the quote with PATCH /quotes/{quoteId}; nothing is sent.
| Permission | requests.write (Owner, Admin, Staff) |
| Risk | write, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it. |
| MCP tool | requests_convertToQuote (toolset sales, in the default set) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
requestId | path | string | Yes |
Example
curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/requests/{requestId}/quote" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
201: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | Quote id. |
organizationId | string | |
identifier | string | Q-n, unique per organization. |
customerId | string | |
propertyId | string or null | |
requestId | string or null | The request it was made from. |
title | string | |
message | string or null | Shown to the customer. |
validUntil | string or null | YYYY-MM-DD; a sent quote expires after it. |
status | enum | DRAFT → SENT (customer can answer at /q/{publicToken}) → APPROVED / CHANGES_REQUESTED / DECLINED; APPROVED → CONVERTED (invoice made). SENT past validUntil becomes EXPIRED. One of DRAFT, SENT, APPROVED, CHANGES_REQUESTED, DECLINED, CONVERTED, EXPIRED, ARCHIVED. |
taxRate | number | Tax rate in percent. |
taxClothingRate | number or null | Percent on CLOTHING lines; null = taxRate (some states tax apparel less). |
taxShippingRate | number or null | Percent on SHIPPING lines; null = taxRate (0 where shipping is not taxed). |
taxDetails | any | How the rate was decided: source EXEMPT (tax-exempt customer), MANUAL (typed), ADDRESS (the address's own rate), RULES (the business's tax rules for the ship-to address; rules lists them), UNIT, DEFAULT or NONE. Null on older records. |
depositPercent | number or null | Deposit asked, as a percent of the total. |
depositCents | integer or null | Deposit asked, as a fixed amount in cents. |
internalNotes | string or null | |
publicToken | string | The customer link token: the quote page is /q/{publicToken}. |
sentAt | string (date-time) or null | |
approvedAt | string (date-time) or null | |
approvedOptionId | string or null | |
approvedLineIds | array of string | The optional lines the customer kept. |
approvedTotalCents | integer or null | Approved total in cents, with tax. |
approvedDepositCents | integer or null | Approved deposit in cents. |
signatureName | string or null | |
approvedByStaff | boolean | Staff recorded the approval for the customer. |
changesRequestedAt | string (date-time) or null | |
changesRequestedNote | string or null | |
declinedAt | string (date-time) or null | |
declineReason | string or null | |
invoiceId | string or null | The invoice it was converted to. |
convertedAt | string (date-time) or null | |
soldByUserId | string or null | The team member who sold it. |
financingDisabled | boolean | |
businessUnitId | string or null | |
customFields | any | Custom field values by key (definitions: GET /custom-fields?entity=QUOTE). |
createdAt | string (date-time) | |
updatedAt | string (date-time) |
Online request form and portal settings
GET /organizations/{organizationId}/booking-settings
Whether the public request form (/book/{slug}) takes requests and whether customers can sign in to their portal (/c/{slug}). Read-only.
| Permission | settings.read (Owner, Admin, Staff) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | bookingSettings_get (toolset settings) |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/booking-settings" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
slug | string | The request form is at /book/{slug}. |
bookingEnabled | boolean | Whether the online request form takes requests. |
customerSignInEnabled | boolean | Whether customers can sign in to their portal at /c/{slug} with a code sent to their email or phone (default on). |
Turn the online request form or customer sign-in on or off
PATCH /organizations/{organizationId}/booking-settings
customerSignInEnabled off REVOKES ACCESS: every customer is signed out of their portal at once and /c/{slug} stops offering sign-in (portal links keep working). bookingEnabled off: the public request form and /api/public/book/{slug} answer 404 and take no requests; on: anyone with the link can send a request. Send either or both. Needs settings.manage (owners and admins).
| Permission | settings.manage (Owner, Admin) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | bookingSettings_update (toolset settings) |
| Approval | Over MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
bookingEnabled | boolean | No | |
customerSignInEnabled | boolean | No | Let customers sign in to their portal with a code (on by default). Off signs every customer out at once. |
Example
curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/booking-settings" \
-H "Authorization: Bearer $SKUFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"bookingEnabled":true,"customerSignInEnabled":true}'Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
slug | string | The request form is at /book/{slug}. |
bookingEnabled | boolean | Whether the online request form takes requests. |
customerSignInEnabled | boolean | Whether customers can sign in to their portal at /c/{slug} with a code sent to their email or phone (default on). |