# Attributes

Source: https://kirora.io/docs/api/reference/attributes

Attributes are the custom fields your contacts carry, such as `plan` or `orders`, discovered from the values you send. These operations list the keys and their values for rule builders and merge tags; you set attributes on the contact itself, through `identify` or `updateContact`.

## Endpoints

- [List contact attribute keys](https://kirora.io/docs/api/reference/listAttributes): `GET /v1/attributes`
- [List the values of an attribute](https://kirora.io/docs/api/reference/listAttributeValues): `GET /v1/attributes/{key}/values`
- [Describe an attribute key](https://kirora.io/docs/api/reference/describeAttribute): `PUT /v1/attributes/{key}`

## The Attribute object

```json
{
  "key": "key_example",
  "type": "string",
  "contactCount": 0,
  "masked": true,
  "description": "description_example"
}
```

- `key` (string, required) — The attribute key, as written on contacts.
- `type` (string, required, one of `string`, `number`, `boolean`, `date`, `list`, `mixed`) — Inferred from the values held. `list`: every value is an array (`["running", "yoga"]`, a form's checkboxes); `mixed`: more than one type.
- `contactCount` (integer, required, min 0) — Contacts that have this key.
- `masked` (boolean, required) — Masked in workspace settings: members see the key, not its values.
- `description` (string | null, required) — What the key means, as an admin described it; null when none.
