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

Example

{
  "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"
    }
  ]
}

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

  • Fix and resendAny validation 4xx

    Fix the request and resend it; never in a loop.

Fields of errors[]

errors[].pathstring

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[].codestring

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[].messagestring

Localized explanation, in the negotiated language.

Returned by

122 operations

Through MCP

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

Status