Quotes
List quotes
Lists the authenticated Store's quote requests and custom-design form
submissions, newest first. Requires quotes:read, which is granted
separately from customisers:read because submissions carry end-customer
personal data.
Overview
Follow links.next while pagination.has_more is true,
sending each cursor back unchanged; changing any filter invalidates an
outstanding cursor with a 422 invalid_cursor problem, so restart the
walk from the first page after a filter change. The operation is read-only
and always safe to retry.
Deduplicate on id, which is the submission's immutable identifier and
stable across reads. Never deduplicate on submission_number: it counts
submissions within one form, so every form has its own submission 1 and
the number repeats across a store. The WEBHOOKform:submitted webhook does not
carry id, so a delivery cannot yet be matched to a row here by
identifier.
Submissions whose owning store could not be proven are excluded. That is
expected, not an error: it covers rows whose form was hard-deleted before
the platform began recording deletion snapshots, and no read can recover
them.
Authorisation
Bearer token required. Include it in theAuthorization header.
Required scope: quotes:read
Query parameters
Page size from 1 to 100. Defaults to 20.
Example: 20
Restrict to one kind of submission. One of quote, custom_design.
Example: quote
Restrict to submissions collected by one customiser.
Example: 42
Restrict to submissions of one form.
Example: 7
Earliest UTC day to include, inclusive, as YYYY-MM-DD.
Example: 2026-07-01
Latest UTC day to include, inclusive, as YYYY-MM-DD. Must not be earlier than filter[created_from].
Example: 2026-07-31
curl https://web.signcustomiser.com/api/v3/quotes?limit=20&cursor=&filter%5Btype%5D=quote&filter%5Bcustomiser_id%5D=42&filter%5Bform_id%5D=7&filter%5Bcreated_from%5D=2026-07-01&filter%5Bcreated_to%5D=2026-07-31 \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"data": [
{
"object": "quote",
"id": 8123,
"type": "quote",
"submission_number": 14,
"customiser_id": 42,
"form_id": 7,
"responses": [
{
"field_id": "3f2a9c1e-5d6b-4a7c-8e9f-0a1b2c3d4e5f",
"label": "Email",
"input_type": "email",
"value": "ada@example.com"
},
{
"field_id": "7c1d4b2a-9e8f-4c3d-b5a6-1f2e3d4c5b6a",
"label": "Anything else?",
"input_type": "textarea",
"value": "Wall mounted, please."
}
],
"files": [
{
"field_id": "productImage",
"file_index": 0,
"kind": "product_preview",
"original_filename": "preview.png",
"url": "https://assets.signcustomiser.com/form-files/8Kq2wZ.png"
}
],
"design": {
"text": "OPEN",
"text_align": "Centre",
"text_orientation": "Horizontal",
"font": "Brush Script",
"colour": "Warm White",
"backlight": null,
"material": "Acrylic",
"letter_type": "Front lit",
"support": "Clear acrylic",
"support_finish": "Frosted",
"jacket": null,
"mounting": "Wall screws",
"mounting_colour": null,
"size_display": "Medium / 80cm X 30cm",
"final_dimensions": "80cm X 30cm / 31.5in X 11.8in",
"quoted_price_amount": 29900,
"quoted_price_display": "$299.00",
"currency": "AUD"
},
"ad_click_ids": {
"gclid": "CjwKCAjw7p6aBhAoBhAAEiwA"
},
"utm_params": {
"utm_source": "google",
"utm_medium": "cpc"
},
"created_at": "2026-07-19T01:00:00Z"
}
],
"pagination": {
"has_more": false,
"next_cursor": null
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/quotes",
"documentation": "https://www.signcustomiser.com/help/api/",
"next": null
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"type": "https://www.signcustomiser.com/help/api/problems/missing_api_key",
"title": "Missing API key",
"status": 401,
"code": "missing_api_key",
"detail": "Provide a store API key as a bearer token.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/insufficient_scope",
"title": "Insufficient scope",
"status": 403,
"code": "insufficient_scope",
"detail": "This operation requires the quotes:read scope.",
"required_scopes": [
"quotes:read"
],
"granted_scopes": [
"customisers:read"
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/invalid_parameter",
"title": "Invalid query parameter",
"status": 422,
"code": "invalid_parameter",
"detail": "The filter[type] value is not a supported quote type.",
"errors": [
{
"parameter": "filter[type]",
"code": "unsupported_value",
"detail": "The filter[type] value is not a supported quote type.",
"allowed_values": [
"quote",
"custom_design"
]
}
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"detail": "You have exceeded the request limit for this API key.",
"retry_after": 60,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}