*REST API › Errors*

# `contact_in_use`

> HTTP HTTP 409.

HTTP status: `409` · Problem type: `https://docs.filmo.io/errors/contact_in_use`

## When it happens

409. [`DELETE /api/v1/contacts/{contactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/delete-a-contact) refused because something still uses the contact (orders, projects, quotes, invoices, and other documents). Nothing is deleted. `errors` has one entry per type of record that uses it: `path` names the type and `count` says how many.

## What to do

Read `errors[]`, then move or remove those records first. If you only want the contact out of sight, archive it instead by updating it with `status: archived`; the delete cannot be undone.

## Retry

| Condition | What to do | Note |
| --- | --- | --- |
| 409 contact_in_use · address_in_use · insufficient_stock | Fix and resend | Do not retry. `errors[]` says what blocks the operation: fix that first. |

## Fields of errors[]

| Name | Type | Description |
| --- | --- | --- |
| `errors[].path` | string | Path of the offending field in dot and bracket notation (`lines[0].itemId`); empty for the whole body. On `contact_in_use`, `address_in_use` and `insufficient_stock` it is one of a closed set, listed by code in `x-path-values`: the type of record that uses the contact or the address, or the kind of resource that is short (`items` or `spaces`). `orders`, `projects`, `quotes`, `invoices`, `proformas`, `creditNotes`, `simpleCreditNotes`, `salesReceipts`, `supplierInvoices`, `contracts`, `subrents`, `purchaseOrders`, `sepaMandates`, `receipts`, `consignments` |
| `errors[].count` | integer | On `contact_in_use` and `address_in_use`: how many records of the type named by `path` use it. |

## Example

*contact_in_use*

```json
{
  "type": "https://docs.filmo.io/errors/contact_in_use",
  "title": "Contact in use",
  "status": 409,
  "code": "contact_in_use",
  "detail": "The contact is used by orders, projects, documents or payments and cannot be deleted: archive it instead (status: archived). The count per type is in errors",
  "requestId": "req_0b9f6c1d2e3a4f5a8b7c6d5e4f3a2b1c",
  "errors": [
    {
      "path": "orders",
      "code": "in_use",
      "message": "Used by 3 records of this type",
      "count": 3
    },
    {
      "path": "quotes",
      "code": "in_use",
      "message": "Used by 1 record of this type",
      "count": 1
    }
  ]
}
```

## Returned by

- [`DELETE /api/v1/contacts/{contactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/delete-a-contact) — Delete a contact

## Through MCP

A tool call that fails comes back with `isError` set and the problem as structured content, with the same `code`.

---

Canonical URL: https://docs.filmo.io/rest-api/errors/contact_in_use  
Last updated: 2026-10-25