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

# A request is rejected for an unknown field

> A 400 with Unknown field(s) or Received unknown parameter: a misspelled field, the wrong case or bucket, or another endpoint's field; how to read the path.

`decide`, `declare` and `identify` reject fields they do not know, so a typo can never become a silent no-op. The message names the field, with its path for nested ones.

```json theme={null}
{ "error": "invalid_request", "message": "Unknown field(s): segment. Allowed: element, user_id, control, arms, rewards, constraints, requirements, instructions, identifiers, attributes, context, idempotency_key, element_type, format, variables, parameters, options" }
```

```json theme={null}
{ "error": "invalid_request", "message": "Received unknown parameter: rewards[0].window_second" }
```

## Causes

* **A misspelling**: `window_second` for `window_seconds`, `hypothesi` for `hypothesis`. Fix the name; the allowed list in the message is the contract.
* **camelCase on the wire**: `userId`, `windowSeconds`. The API takes `snake_case`. The server SDK accepts camelCase and converts; a hand-written request must not.
* **The wrong bucket**: `traits` or `properties` on `decide` or `identify`. User facts go in `identifiers`, `attributes` or `context`; event facts go in `properties` on `events`. See [Users, identifiers and attributes](https://docs.trycurious.ai/concepts/users.md).
* **A field from another endpoint**: `user_id` on `declare` (`Declare configures an element without a user: user_id belong on decide, not here`), or `name` on `decide`.
* **A declaration field under a publishable key**: `control`, `rewards` and the rest are a `400` for a publishable key, which may send only `element`, `user_id`, `identifiers`, `attributes`, `context` and `idempotency_key`.
* **A reserved content key**: a content object with a field named `type` (`contains a field named 'type', which the format…`). The format grammar uses `type`; rename the field.

## Events are the exception

`events` ignores unknown fields, so an integration can forward a richer record. Two names are rejected rather than ignored: `created_at` (system-owned) and the retired `as_of`; both messages say to send the time as `timestamp`.

## In a batch

A bad item is reported inside the `200` at its index with the same message, and never fails its siblings. Walk `results` for `"status": "error"`. See [Batch calls](https://docs.trycurious.ai/guides/batch.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.