# DELETE Delete a form

Removes the form and returns a deletion receipt: a snapshot of exactly what was removed, so the caller can verify and report the change. A form the customiser's settings still point at — its quote form or its AI designer fallback form — is refused with a 409 `resource_in_use` listing the referencing rows, and references are never silently cleared. Past submissions are historical records and are neither deleted nor counted as references. Requires `customisers:write` and an `Idempotency-Key`; retrying the same request and key replays the original receipt after the row is gone. The delete clears the customiser's cached storefront configuration and runs the advisory language sync, and never regenerates Shopify products, product images, or the product cache.

- Source URL: https://www.signcustomiser.com/help/api/v3-delete-delete-a-form/
- Markdown URL: https://www.signcustomiser.com/help/api/v3-delete-delete-a-form.md
- Group: Customiser forms
- Method: DELETE
- Path: /api/v3/customisers/{customiser_id}/forms/{form_id}
- Auth: Bearer token
- Required scopes: `customisers:write`

## Path parameters

- customiser_id (string, required): The customiser id. Example: 1
- form_id (string, required): The form id. Example: 7

## cURL example

```bash
curl https://web.signcustomiser.com/api/v3/customisers/1/forms/7 \
  --request DELETE \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN'
```

## Response examples

### 200 DELETE 200 example 1

```json
{
  "data": {
    "object": "form_deletion_receipt",
    "id": 7,
    "customiser_id": 42,
    "deleted": true,
    "resource": {
      "object": "form",
      "id": 7,
      "customiser_id": 42,
      "name": "Request a quote",
      "description": null,
      "form_type": "quote",
      "button_label": null,
      "subject": null,
      "recipient_emails": [],
      "save_customer_details": false,
      "post_submission_action": "default",
      "redirect_url": null,
      "emails_enabled": true,
      "suppressed_emails": [],
      "fields": [],
      "sort_order": 1,
      "created_at": "2026-08-14T00:00:00Z",
      "updated_at": "2026-08-14T00:00:00Z"
    }
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/forms/7",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}
```

### 400 Missing idempotency key

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/missing_idempotency_key",
  "title": "Missing idempotency key",
  "status": 400,
  "code": "missing_idempotency_key",
  "detail": "Provide an Idempotency-Key header for this write.",
  "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 customisers:write scope.",
  "required_scopes": [
    "customisers:write"
  ],
  "granted_scopes": [
    "customisers:read"
  ],
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 404 Unknown form

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/resource_not_found",
  "title": "Resource not found",
  "status": 404,
  "code": "resource_not_found",
  "detail": "The requested resource does not exist or does not belong to the authenticated store.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 409 Form still referenced

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/resource_in_use",
  "title": "Resource in use",
  "status": 409,
  "code": "resource_in_use",
  "detail": "This form is still referenced by settings records.",
  "errors": [
    {
      "pointer": "",
      "code": "resource_in_use",
      "detail": "The form is referenced by other records."
    }
  ],
  "referenced_by": [
    {
      "type": "settings",
      "id": 12
    }
  ],
  "referenced_by_count": 1,
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 422 Stored type outside the catalogue

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/form_type_not_supported",
  "title": "Form type not supported",
  "status": 422,
  "code": "form_type_not_supported",
  "detail": "This form's stored type is not one this API publishes, so it predates the current catalogue and no write can safely round-trip it.",
  "errors": [
    {
      "pointer": "/form_type",
      "code": "form_type_not_supported",
      "detail": "This form's stored type is outside the published catalogue."
    }
  ],
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 422 Unknown parameter

```json
{
  "type": "https://www.signcustomiser.com/help/api/problems/unknown_parameter",
  "title": "Unknown query parameter",
  "status": 422,
  "code": "unknown_parameter",
  "detail": "This endpoint accepts no query parameters.",
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```

### 429 Option write budget exhausted

```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": 37,
  "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
```
