# GET 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. 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 `form: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.

- Source URL: https://www.signcustomiser.com/help/api/v3-get-list-quotes/
- Markdown URL: https://www.signcustomiser.com/help/api/v3-get-list-quotes.md
- Group: Quotes
- Method: GET
- Path: /api/v3/quotes
- Auth: Bearer token
- Required scopes: `quotes:read`

## Query parameters

- limit (string, optional): Page size from 1 to 100. Defaults to 20. Example: 20
- filter%5Btype%5D (string, optional): Restrict to one kind of submission. One of quote, custom_design. Example: quote
- filter%5Bcustomiser_id%5D (string, optional): Restrict to submissions collected by one customiser. Example: 42
- filter%5Bform_id%5D (string, optional): Restrict to submissions of one form. Example: 7
- filter%5Bcreated_from%5D (string, optional): Earliest UTC day to include, inclusive, as YYYY-MM-DD. Example: 2026-07-01
- filter%5Bcreated_to%5D (string, optional): Latest UTC day to include, inclusive, as YYYY-MM-DD. Must not be earlier than filter[created_from]. Example: 2026-07-31

## cURL example

```bash
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'
```

## Response examples

### 200 GET 200 example 1

```json
{
  "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"
  }
}
```

### 401 Missing API key

```json
{
  "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"
}
```

### 403 Insufficient scope

```json
{
  "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"
}
```

### 422 Unsupported filter value

```json
{
  "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"
}
```

### 429 Rate limited

```json
{
  "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"
}
```
