> For the complete documentation index, see [llms.txt](https://docs.cekat.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cekat.ai/api-documentation/crm/contact/update-contact-properties.md).

# Update contact properties

Sets custom property values on a contact. Send one entry per property; each `type` must match the property's type, and each `value` is an object whose key depends on the type:

| Type                                                                       | `value`                                                |
| -------------------------------------------------------------------------- | ------------------------------------------------------ |
| `text`, `long_text`, `email`, `phone`                                      | `{"text": "..."}`                                      |
| `number`                                                                   | `{"number": 10}`                                       |
| `checkbox`                                                                 | `{"checked": true}`                                    |
| `date`                                                                     | `{"date": "2026-10-20T09:00:00+07:00"}`                |
| `timeline`                                                                 | `{"from": "<ISO date-time>", "to": "<ISO date-time>"}` |
| `select`                                                                   | `{"label_id": "0"}`                                    |
| `dropdown`                                                                 | `{"label_ids": ["0", "1"]}`                            |
| `agents`, `contacts`, `companies`, `subscriptions`, `orders`, `references` | `{"ids": ["..."]}`                                     |
| `conversation`                                                             | `{"id": "..."}`                                        |

Text values can be up to 255 characters and long text up to 500 words.

```json
{"openapi":"3.0.3","info":{"title":"Cekat Open API","version":"1.0.0"},"tags":[{"name":"Contact","description":"Contacts are the people your business talks to. Each contact has standard fields (name, phone number, email, and so on) plus **custom properties** that you define as columns on your contact board.\n\n## Custom properties\n1. Call `GET /api/crm/contact/filter-fields` or `GET /api/crm/contact/{id}/property` to see the available properties and their column IDs and types.\n2. Read a contact's values from `crm_column` in `GET /api/crm/contact/{contact_id}`. Values are keyed by property name.\n3. Write values with `PUT /api/crm/contact/{id}/property`, or with `values` when creating a contact.\n4. Create new properties with `POST /api/crm/contact/property`.\n"}],"servers":[{"url":"https://api.cekat.ai","description":"Production"}],"security":[{"CekatApiKey":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"CekatApiKey":{"type":"apiKey","in":"header","name":"api_key","description":"Your business's Cekat API key, from **Settings → Developers & API** in the Cekat dashboard (https://chat.cekat.ai/developers?section=apikeys). Available on the Business and Enterprise plans."},"BearerAuth":{"type":"http","scheme":"bearer","description":"The same Cekat API key, sent as `Authorization: Bearer YOUR_API_KEY`. Accepted only by endpoints under `/api/...`."}},"schemas":{"ApiError":{"type":"object","description":"Error body returned by the `/api/...` endpoints.","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"statusCode":{"type":"integer"},"error":{"type":"object","properties":{"message":{"type":"string"}}},"correlationId":{"type":"string","description":"Request ID. Include it when contacting Cekat support."}}},"RateLimitError":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"ApiUnauthorized":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"TooManyRequests":{"description":"Rate limit exceeded. Wait and retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/crm/contact/{id}/property":{"put":{"tags":["Contact"],"operationId":"UpdateContactProperties","summary":"Update contact properties","description":"Sets custom property values on a contact. Send one entry per property; each `type` must match the property's type, and each `value` is an object whose key depends on the type:\n\n| Type | `value` |\n| --- | --- |\n| `text`, `long_text`, `email`, `phone` | `{\"text\": \"...\"}` |\n| `number` | `{\"number\": 10}` |\n| `checkbox` | `{\"checked\": true}` |\n| `date` | `{\"date\": \"2026-10-20T09:00:00+07:00\"}` |\n| `timeline` | `{\"from\": \"<ISO date-time>\", \"to\": \"<ISO date-time>\"}` |\n| `select` | `{\"label_id\": \"0\"}` |\n| `dropdown` | `{\"label_ids\": [\"0\", \"1\"]}` |\n| `agents`, `contacts`, `companies`, `subscriptions`, `orders`, `references` | `{\"ids\": [\"...\"]}` |\n| `conversation` | `{\"id\": \"...\"}` |\n\nText values can be up to 255 characters and long text up to 500 words.\n","parameters":[{"name":"id","in":"path","required":true,"description":"Contact ID.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["properties"],"properties":{"properties":{"type":"array","minItems":1,"items":{"type":"object","required":["column_id","type","value"],"properties":{"column_id":{"type":"string","format":"uuid","description":"The property's `id`."},"type":{"type":"string","description":"The property's type. Must match the column."},"value":{"type":"object","additionalProperties":true}}}}}}}}},"responses":{"200":{"description":"The properties that were updated.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"data":{"type":"array","items":{"type":"object","properties":{"column_id":{"type":"string","format":"uuid"},"data":{"type":"object","nullable":true,"description":"The stored value record, or null if the value was cleared.","properties":{"id":{"type":"string"},"contact_id":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string","nullable":true}}}}}}}}}}},"400":{"description":"The body is invalid, a type doesn't match its column, a value is missing its key, or a property type is not supported.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"$ref":"#/components/responses/ApiUnauthorized"},"404":{"description":"The contact or a property was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"}}}}}}
```
