# invalid_request

**The request is invalid.**

| | |
|---|---|
| HTTP status | `400` |
| `code` | `invalid_request` |
| Retry? | No, fix the request first |

## What it means

The body or a parameter does not match the schema: a required field is missing, an unknown field was sent, a type is wrong, a text is too long, a time or rule is invalid. Malformed JSON ends up here too. `errors` lists **every** problem at once, each with `field`, `code` and `message`.

## How to fix it

Read `errors[].field` and `errors[].code`. Domain codes such as `invalid_timezone`, `end_before_start` or `unsupported_rrule` are explained under [Events: validation errors](https://docs.kalender-sync.de/en/api/events/#validation-errors). Schema violations carry the validator's code, for example `invalid_type`, `too_big` or `unrecognized_keys` (an unknown field, often a typo).

## Example

```json
{
  "type": "https://docs.kalender-sync.de/en/api/errors/invalid_request",
  "title": "The request is invalid",
  "status": 400,
  "code": "invalid_request",
  "request_id": "req_…",
  "errors": [
    {
      "field": "end",
      "code": "end_before_start",
      "message": "end must not be before start."
    },
    {
      "field": "recurrence.rules[0]",
      "code": "unsupported_rrule",
      "message": "BYHOUR is not supported."
    }
  ]
}
```

→ [All error codes](https://docs.kalender-sync.de/en/api/errors/)