> ## Documentation Index
> Fetch the complete documentation index at: https://docs.get-exo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Invalid request

> The request was malformed in a way that is not a field-level validation failure.

This page is the resolution target of the RFC 9457 `type` URI on every `invalid_request` problem body: `https://docs.get-exo.com/errors/invalid_request`.

**HTTP status: `400` Bad Request**.

```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "type": "https://docs.get-exo.com/errors/invalid_request",
  "title": "Invalid request",
  "status": 400,
  "detail": "Malformed request.",
  "code": "invalid_request",
  "requestId": "req_9f2c41ab7d0e5c18"
}
```

## Why it happens

This is the default code for a 400 that a route did not name more specifically. The common named ones are `invalid_cursor` on a tampered pagination cursor and `pagination_unsupported` on a recall view that is not a list.

A 400 means Exo could not act on the request as sent. A body that parsed but failed validation is 422 `validation_error` instead.

## How to fix it

* Check the request line and headers before the body: a 400 here usually means a query parameter or a header, not a field.
* Quote the `requestId` from the response if you need to ask about a specific call.

## Related

* [`invalid_cursor`](/errors/invalid_cursor)
* [`pagination_unsupported`](/errors/pagination_unsupported)
* [`subject_not_supported`](/errors/subject_not_supported)
* [Errors](/platform/errors) for the envelope and the full catalogue
