> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ada.cx/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ada.cx/_mcp/server.

# Consistent validation error details

Validation errors from the v2 API now return [`details`](/reference/introduction/errors) in a single, predictable shape. Previously this field could appear as an index-keyed object, a list of error objects, a bare string, or `null`, which made it hard to parse reliably.

For validation errors, `details` is now always a list of error objects (each with `parameter`, `location`, and `message`), or `null` when there is no field-level detail:

```json
{
  "errors": [
    {
      "type": "validation_error",
      "message": "invalid articles data",
      "details": [
        {
          "parameter": "$[0].knowledge_source_id",
          "location": "body",
          "message": "Knowledge source with id 'bogus_id' does not exist."
        }
      ]
    }
  ]
}
```

If your integration parses `details`, update it to expect this list-of-error-objects shape.