*REST API › Errors*

# `validation_error`

> 400. The query or the body is malformed, or it refers to an identifier that does not exist or does not belong to the account (the message is the same in both cases, so it cannot be used to probe other accounts). `errors` lists every offending field, not only the first, and nothing is written. HTTP 400.

HTTP status: `400` · Problem type: `https://docs.filmo.io/errors/validation_error`

## When it happens

400. The query or the body is malformed, or it refers to an identifier that does not exist or does not belong to the account (the message is the same in both cases, so it cannot be used to probe other accounts). `errors` lists every offending field, not only the first, and nothing is written.

## What to do

Read every entry of `errors`: `path` says which field and `code` says what is wrong. Correct all of them, then send the request again. Branch on `code`, never on `message` or `detail`, which are written for people and change with the language.

## Retry

| Condition | What to do | Note |
| --- | --- | --- |
| Any validation 4xx | Fix and resend | Fix the request and resend it; never in a loop. |

## 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`). |
| `errors[].code` | string | Stable code of the field error (`required`, `must_not_be_null`, `invalid_type`, `invalid_value`, `too_small`, `too_big`, `unknown_field`, `invalid_format`, `not_found`, `must_be_after`…). On a 409 `conflict` it says the cause: `in_progress` (another request with the same `Idempotency-Key` is still running), `lock_timeout` (another conditional write held the resource for more than five seconds) or `invalid_state` (the state of the resource forbids the operation). |
| `errors[].message` | string | Localized explanation, in the negotiated language. |

## Example

*validation_error*

```json
{
  "type": "https://docs.filmo.io/errors/validation_error",
  "title": "Validation error",
  "status": 400,
  "code": "validation_error",
  "detail": "2 validation errors",
  "requestId": "req_0b9f6c1d2e3a4f5a8b7c6d5e4f3a2b1c",
  "errors": [
    {
      "path": "name",
      "code": "too_small",
      "message": "Must be at least 1 characters long"
    },
    {
      "path": "contactType",
      "code": "invalid_value",
      "message": "Value not allowed; expected company, person"
    }
  ]
}
```

## Returned by

- [`GET /api/v1/contacts`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/list-contacts) — List contacts
- [`POST /api/v1/contacts`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/create-a-contact) — Create a contact
- [`PATCH /api/v1/contacts/{contactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/update-a-contact) — Update a contact
- [`PATCH /api/v1/contacts/{contactId}/preferences`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/update-the-commercial-terms-of-a-contact) — Update the commercial terms of a contact
- [`POST /api/v1/contacts/{contactId}/addresses`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/add-an-address-to-a-contact) — Add an address to a contact
- [`PATCH /api/v1/contacts/{contactId}/addresses/{addressId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/update-an-address-of-a-contact) — Update an address of a contact
- [`POST /api/v1/contacts/{contactId}/related-contacts`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/relate-two-contacts) — Relate two contacts
- [`PATCH /api/v1/contacts/{contactId}/related-contacts/{relatedContactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/change-the-role-of-a-relationship) — Change the role of a relationship
- [`GET /api/v1/items`](https://docs.filmo.io/rest-api/endpoint-reference/items/list-items) — List items
- [`POST /api/v1/items`](https://docs.filmo.io/rest-api/endpoint-reference/items/create-an-item) — Create an item
- [`PATCH /api/v1/items/{itemId}`](https://docs.filmo.io/rest-api/endpoint-reference/items/update-an-item) — Update an item
- [`PATCH /api/v1/items/{itemId}/physical-properties`](https://docs.filmo.io/rest-api/endpoint-reference/items/update-weight-and-dimensions) — Update weight and dimensions
- [`PATCH /api/v1/items/{itemId}/pricing`](https://docs.filmo.io/rest-api/endpoint-reference/items/update-the-pricing-of-an-item) — Update the pricing of an item
- [`POST /api/v1/availability/check`](https://docs.filmo.io/rest-api/endpoint-reference/availability/check-item-availability) — Check item availability
- [`GET /api/v1/orders`](https://docs.filmo.io/rest-api/endpoint-reference/orders/list-orders) — List orders
- [`POST /api/v1/orders`](https://docs.filmo.io/rest-api/endpoint-reference/orders/create-an-order) — Create an order
- [`PATCH /api/v1/orders/{orderId}`](https://docs.filmo.io/rest-api/endpoint-reference/orders/update-the-header-of-an-order) — Update the header of an order
- [`GET /api/v1/orders/{orderId}/lines`](https://docs.filmo.io/rest-api/endpoint-reference/orders/list-the-lines-of-an-order) — List the lines of an order
- [`GET /api/v1/invoices`](https://docs.filmo.io/rest-api/endpoint-reference/invoices/list-invoices) — List invoices
- [`GET /api/v1/quotes`](https://docs.filmo.io/rest-api/endpoint-reference/quotes/list-quotes) — List quotes
- [`GET /api/v1/projects`](https://docs.filmo.io/rest-api/endpoint-reference/projects/list-projects) — List projects
- [`POST /api/v1/projects`](https://docs.filmo.io/rest-api/endpoint-reference/projects/create-a-project) — Create a project
- [`PUT /api/v1/projects/{projectId}/archive`](https://docs.filmo.io/rest-api/endpoint-reference/projects/archive-or-restore-a-project) — Archive or restore a project
- [`PATCH /api/v1/projects/{projectId}`](https://docs.filmo.io/rest-api/endpoint-reference/projects/update-a-project) — Update a project
- [`GET /api/v1/invoices/{invoiceId}/payments`](https://docs.filmo.io/rest-api/endpoint-reference/invoices/list-the-payments-of-an-invoice) — List the payments of an invoice
- [`GET /api/v1/invoices/{invoiceId}/lines`](https://docs.filmo.io/rest-api/endpoint-reference/invoices/list-the-lines-of-an-invoice) — List the lines of an invoice
- [`GET /api/v1/quotes/{quoteId}/lines`](https://docs.filmo.io/rest-api/endpoint-reference/quotes/list-the-lines-of-a-quote) — List the lines of a quote
- [`GET /api/v1/serialized-items`](https://docs.filmo.io/rest-api/endpoint-reference/items/list-serialized-items) — List serialized items
- [`PATCH /api/v1/serialized-items/{serializedItemId}`](https://docs.filmo.io/rest-api/endpoint-reference/items/update-a-serialized-item) — Update a serialized item
- [`GET /api/v1/spaces`](https://docs.filmo.io/rest-api/endpoint-reference/spaces/list-warehouses-and-spaces) — List warehouses and spaces
- [`PATCH /api/v1/spaces/{spaceId}`](https://docs.filmo.io/rest-api/endpoint-reference/spaces/update-a-warehouse-or-space) — Update a warehouse or space
- [`PUT /api/v1/spaces/{spaceId}/amenities`](https://docs.filmo.io/rest-api/endpoint-reference/spaces/replace-the-amenities-and-equipment) — Replace the amenities and equipment
- [`PATCH /api/v1/spaces/{spaceId}/pricing`](https://docs.filmo.io/rest-api/endpoint-reference/spaces/update-the-pricing-of-a-space) — Update the pricing of a space
- [`GET /api/v1/repair-tickets`](https://docs.filmo.io/rest-api/endpoint-reference/repair-tickets/list-repair-tickets) — List repair tickets
- [`POST /api/v1/repair-tickets`](https://docs.filmo.io/rest-api/endpoint-reference/repair-tickets/create-a-repair-ticket) — Create a repair ticket
- [`PATCH /api/v1/repair-tickets/{ticketId}`](https://docs.filmo.io/rest-api/endpoint-reference/repair-tickets/update-a-repair-ticket) — Update a repair ticket
- [`GET /api/v1/vehicles`](https://docs.filmo.io/rest-api/endpoint-reference/vehicles/list-vehicles) — List vehicles
- [`POST /api/v1/vehicles`](https://docs.filmo.io/rest-api/endpoint-reference/vehicles/create-a-vehicle) — Create a vehicle
- [`PATCH /api/v1/vehicles/{vehicleId}`](https://docs.filmo.io/rest-api/endpoint-reference/vehicles/update-a-vehicle) — Update a vehicle
- [`GET /api/v1/staff`](https://docs.filmo.io/rest-api/endpoint-reference/staff/list-staff) — List staff
- [`POST /api/v1/staff`](https://docs.filmo.io/rest-api/endpoint-reference/staff/create-a-staff-member) — Create a staff member
- [`PATCH /api/v1/staff/{staffId}`](https://docs.filmo.io/rest-api/endpoint-reference/staff/update-a-staff-member) — Update a staff member
- [`GET /api/v1/subrents`](https://docs.filmo.io/rest-api/endpoint-reference/subrents/list-subrents) — List subrents
- [`PATCH /api/v1/subrents/{subrentId}`](https://docs.filmo.io/rest-api/endpoint-reference/subrents/update-a-subrent) — Update a subrent
- [`GET /api/v1/purchase-orders`](https://docs.filmo.io/rest-api/endpoint-reference/purchase-orders/list-purchase-orders) — List purchase orders
- [`PATCH /api/v1/purchase-orders/{purchaseOrderId}`](https://docs.filmo.io/rest-api/endpoint-reference/purchase-orders/update-a-purchase-order) — Update a purchase order
- [`GET /api/v1/contracts`](https://docs.filmo.io/rest-api/endpoint-reference/contracts/list-contracts) — List contracts
- [`GET /api/v1/project-types`](https://docs.filmo.io/rest-api/endpoint-reference/projects/list-project-types) — List project types
- [`POST /api/v1/staff/availability`](https://docs.filmo.io/rest-api/endpoint-reference/staff/check-staff-availability) — Check staff availability
- [`POST /api/v1/vehicles/availability`](https://docs.filmo.io/rest-api/endpoint-reference/vehicles/check-fleet-availability) — Check fleet availability
- [`GET /api/v1/custom-fields`](https://docs.filmo.io/rest-api/endpoint-reference/custom-fields/list-custom-field-definitions) — List custom field definitions
- [`GET /api/v1/tags`](https://docs.filmo.io/rest-api/endpoint-reference/tags/list-tags) — List tags
- [`POST /api/v1/tags`](https://docs.filmo.io/rest-api/endpoint-reference/tags/create-a-tag) — Create a tag
- [`POST /api/v1/tags/{tagId}/assignments`](https://docs.filmo.io/rest-api/endpoint-reference/tags/assign-a-tag-to-an-entity) — Assign a tag to an entity
- [`DELETE /api/v1/tags/{tagId}/assignments`](https://docs.filmo.io/rest-api/endpoint-reference/tags/remove-a-tag-from-an-entity) — Remove a tag from an entity
- [`GET /api/v1/kits`](https://docs.filmo.io/rest-api/endpoint-reference/kits/list-kits) — List kits
- [`POST /api/v1/kits`](https://docs.filmo.io/rest-api/endpoint-reference/kits/create-a-kit) — Create a kit
- [`PATCH /api/v1/kits/{kitId}`](https://docs.filmo.io/rest-api/endpoint-reference/kits/update-a-kit) — Update a kit
- [`GET /api/v1/collections`](https://docs.filmo.io/rest-api/endpoint-reference/collections/list-collections) — List collections
- [`POST /api/v1/collections`](https://docs.filmo.io/rest-api/endpoint-reference/collections/create-a-collection) — Create a collection
- [`PATCH /api/v1/collections/{collectionId}`](https://docs.filmo.io/rest-api/endpoint-reference/collections/update-a-collection) — Update a collection
- [`GET /api/v1/services`](https://docs.filmo.io/rest-api/endpoint-reference/services/list-services) — List services
- [`POST /api/v1/services`](https://docs.filmo.io/rest-api/endpoint-reference/services/create-a-service) — Create a service
- [`PATCH /api/v1/services/{serviceId}`](https://docs.filmo.io/rest-api/endpoint-reference/services/update-a-service) — Update a service
- [`GET /api/v1/internal-services`](https://docs.filmo.io/rest-api/endpoint-reference/internal-services/list-internal-services) — List internal services
- [`POST /api/v1/internal-services`](https://docs.filmo.io/rest-api/endpoint-reference/internal-services/create-an-internal-service) — Create an internal service
- [`PATCH /api/v1/internal-services/{internalServiceId}`](https://docs.filmo.io/rest-api/endpoint-reference/internal-services/update-an-internal-service) — Update an internal service
- [`GET /api/v1/planner/services`](https://docs.filmo.io/rest-api/endpoint-reference/planner/list-the-services-to-cover) — List the services to cover
- [`POST /api/v1/planner/assignments`](https://docs.filmo.io/rest-api/endpoint-reference/planner/assign-a-resource-to-a-service) — Assign a resource to a service
- [`POST /api/v1/planner/assignments/remove`](https://docs.filmo.io/rest-api/endpoint-reference/planner/remove-a-resource-from-a-service) — Remove a resource from a service
- [`GET /api/v1/schedule`](https://docs.filmo.io/rest-api/endpoint-reference/schedule/get-the-schedule-for-a-range) — Get the schedule for a range
- [`GET /api/v1/availability/unavailabilities`](https://docs.filmo.io/rest-api/endpoint-reference/availability/list-the-unavailabilities-of-a-resource) — List the unavailabilities of a resource
- [`POST /api/v1/availability/unavailabilities`](https://docs.filmo.io/rest-api/endpoint-reference/availability/declare-an-unavailability) — Declare an unavailability
- [`PATCH /api/v1/availability/unavailabilities/{unavailabilityId}`](https://docs.filmo.io/rest-api/endpoint-reference/availability/correct-or-close-an-unavailability) — Correct or close an unavailability
- [`GET /api/v1/incidents`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/list-incidents) — List incidents
- [`POST /api/v1/incidents`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/open-an-incident) — Open an incident
- [`PATCH /api/v1/incidents/{incidentId}`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/update-an-incident) — Update an incident
- [`GET /api/v1/incidents/status-counts`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/count-incidents-by-status) — Count incidents by status
- [`POST /api/v1/incidents/{incidentId}/comments`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/comment-on-an-incident) — Comment on an incident
- [`GET /api/v1/notes`](https://docs.filmo.io/rest-api/endpoint-reference/notes/list-the-notes-of-an-entity) — List the notes of an entity
- [`POST /api/v1/notes`](https://docs.filmo.io/rest-api/endpoint-reference/notes/write-a-note-on-an-entity) — Write a note on an entity
- [`GET /api/v1/tasks`](https://docs.filmo.io/rest-api/endpoint-reference/tasks/list-tasks) — List tasks
- [`POST /api/v1/tasks`](https://docs.filmo.io/rest-api/endpoint-reference/tasks/create-a-task) — Create a task
- [`PATCH /api/v1/tasks/{taskId}`](https://docs.filmo.io/rest-api/endpoint-reference/tasks/update-a-task) — Update a task
- [`GET /api/v1/task-types`](https://docs.filmo.io/rest-api/endpoint-reference/task-types/list-task-types) — List task types
- [`GET /api/v1/crm/opportunities`](https://docs.filmo.io/rest-api/endpoint-reference/crm/list-opportunities) — List opportunities
- [`POST /api/v1/crm/opportunities`](https://docs.filmo.io/rest-api/endpoint-reference/crm/create-an-opportunity) — Create an opportunity
- [`PATCH /api/v1/crm/opportunities/{opportunityId}`](https://docs.filmo.io/rest-api/endpoint-reference/crm/update-an-opportunity) — Update an opportunity
- [`PATCH /api/v1/crm/opportunities/{opportunityId}/stage`](https://docs.filmo.io/rest-api/endpoint-reference/crm/move-an-opportunity-to-another-stage) — Move an opportunity to another stage
- [`POST /api/v1/crm/opportunities/{opportunityId}/close`](https://docs.filmo.io/rest-api/endpoint-reference/crm/close-an-opportunity) — Close an opportunity
- [`POST /api/v1/crm/opportunities/{opportunityId}/links`](https://docs.filmo.io/rest-api/endpoint-reference/crm/link-a-document-to-an-opportunity) — Link a document to an opportunity
- [`GET /api/v1/crm/pipelines`](https://docs.filmo.io/rest-api/endpoint-reference/crm/list-pipelines) — List pipelines
- [`POST /api/v1/purchase-orders/{purchaseOrderId}/receive`](https://docs.filmo.io/rest-api/endpoint-reference/purchase-orders/receive-material-from-a-purchase-order) — Receive material from a purchase order
- [`GET /api/v1/supplier-invoices`](https://docs.filmo.io/rest-api/endpoint-reference/supplier-invoices/list-supplier-invoices) — List supplier invoices
- [`GET /api/v1/treasury/accounts`](https://docs.filmo.io/rest-api/endpoint-reference/treasury/list-treasury-accounts) — List treasury accounts
- [`GET /api/v1/treasury/payments`](https://docs.filmo.io/rest-api/endpoint-reference/treasury/list-treasury-payments) — List treasury payments
- [`POST /api/v1/treasury/payments`](https://docs.filmo.io/rest-api/endpoint-reference/treasury/record-an-incoming-or-outgoing-payment) — Record an incoming or outgoing payment
- [`PATCH /api/v1/treasury/payments/{paymentId}`](https://docs.filmo.io/rest-api/endpoint-reference/treasury/update-a-payment) — Update a payment
- [`POST /api/v1/treasury/payments/{paymentId}/links`](https://docs.filmo.io/rest-api/endpoint-reference/treasury/link-a-payment-to-a-document) — Link a payment to a document
- [`PUT /api/v1/orders/{orderId}/archive`](https://docs.filmo.io/rest-api/endpoint-reference/orders/archive-or-restore-an-order) — Archive or restore an order
- [`PUT /api/v1/items/{itemId}/accessories`](https://docs.filmo.io/rest-api/endpoint-reference/items/update-the-accessories-of-an-item) — Update the accessories of an item
- [`PUT /api/v1/items/{itemId}/alternatives`](https://docs.filmo.io/rest-api/endpoint-reference/items/update-the-alternatives-of-an-item) — Update the alternatives of an item
- [`PATCH /api/v1/items/{itemId}/variants/{variantId}`](https://docs.filmo.io/rest-api/endpoint-reference/items/update-a-variant-of-an-item) — Update a variant of an item
- [`GET /api/v1/planner/resources`](https://docs.filmo.io/rest-api/endpoint-reference/planner/list-the-assignable-resources) — List the assignable resources
- [`GET /api/v1/credit-notes`](https://docs.filmo.io/rest-api/endpoint-reference/credit-notes/list-credit-notes) — List credit notes
- [`GET /api/v1/proformas`](https://docs.filmo.io/rest-api/endpoint-reference/proformas/list-proformas) — List proformas
- [`POST /api/v1/contacts/lookup`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/look-up-contacts-by-external-reference) — Look up contacts by external reference
- [`POST /api/v1/orders/line-items/returns`](https://docs.filmo.io/rest-api/endpoint-reference/orders/return-order-lines) — Return order lines
- [`POST /api/v1/ai/ask`](https://docs.filmo.io/rest-api/endpoint-reference/ai/ask-the-ai-about-your-data) — Ask the AI about your data
- [`GET /api/v1/workflows`](https://docs.filmo.io/rest-api/endpoint-reference/workflows/list-workflows) — List workflows
- [`POST /api/v1/workflows/{workflowId}/runs`](https://docs.filmo.io/rest-api/endpoint-reference/workflows/run-a-workflow) — Run a workflow
- [`POST /api/v1/invoices/{invoiceId}/void`](https://docs.filmo.io/rest-api/endpoint-reference/invoices/void-an-invoice) — Void an invoice
- [`PUT /api/v1/invoices/external/{originSystem}/{originExternalId}`](https://docs.filmo.io/rest-api/endpoint-reference/invoices/create-or-update-the-mirror-of-an-externally-issued-invoice) — Create or update the mirror of an externally issued invoice
- [`POST /api/v1/credit-notes/{creditNoteId}/void`](https://docs.filmo.io/rest-api/endpoint-reference/credit-notes/void-a-credit-note) — Void a credit note
- [`PATCH /api/v1/proformas/{proformaId}/status`](https://docs.filmo.io/rest-api/endpoint-reference/proformas/change-the-commercial-status-of-a-proforma) — Change the commercial status of a proforma
- [`PATCH /api/v1/quotes/{quoteId}/status`](https://docs.filmo.io/rest-api/endpoint-reference/quotes/change-the-commercial-status-of-a-quote) — Change the commercial status of a quote
- [`POST /api/v1/contracts/{contractId}/sign`](https://docs.filmo.io/rest-api/endpoint-reference/contracts/record-the-signature-of-a-contract) — Record the signature of a contract
- [`POST /api/v1/contracts/{contractId}/void`](https://docs.filmo.io/rest-api/endpoint-reference/contracts/void-a-contract) — Void a contract
- [`POST /api/v1/contracts/{contractId}/cancel`](https://docs.filmo.io/rest-api/endpoint-reference/contracts/cancel-a-contract-operatively) — Cancel a contract operatively
- [`POST /api/v1/supplier-invoices/{supplierInvoiceId}/void`](https://docs.filmo.io/rest-api/endpoint-reference/supplier-invoices/void-a-supplier-invoice) — Void a supplier invoice
- [`GET /api/v1/payment-methods`](https://docs.filmo.io/rest-api/endpoint-reference/treasury/list-payment-methods) — List payment methods
- [`GET /api/v1/users`](https://docs.filmo.io/rest-api/endpoint-reference/users/list-users) — List users

## 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/validation_error  
Last updated: 2026-10-25