# RetailCRM API v5: POST /api/v5/customers/create — Создать клиента

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `site` | body | string | нет | Код магазина |
| `customer` | body | string (JSON) | да | Клиент |
| `customer.externalId` | body | string | нет | Внешний ID |
| `customer.firstName` | body | string | нет | Имя |
| `customer.lastName` | body | string | нет | Фамилия |
| `customer.email` | body | string | нет | Email |
| `customer.phones` | body | array | нет | Телефоны |
| `customer.address` | body | object | нет | Адрес |
| `customer.managerId` | body | integer | нет | Менеджер |
| `customer.customFields` | body | object | нет | Пользовательские поля |

## Базовые URL

- Боевой: `https://{your-subdomain}.retailcrm.ru/api/v5/`

## Авторизация

Тип: API-ключ

API-ключ создаётся в аккаунте RetailCRM и передаётся в параметре `apiKey` (GET или POST). Если ключ даёт доступ к нескольким магазинам, части методов нужен параметр `site` — символьный код магазина. Запросы — только по HTTPS, кодировка UTF-8.

## Нюансы

- POST-запросы отправляются как `application/x-www-form-urlencoded`, а вложенные структуры (`order`, `customer`, `offers`) — JSON-строкой внутри поля формы.
- Для ключа с доступом к нескольким магазинам часть методов требует `site`.
- Ответы списков содержат метаданные пагинации: `limit`, `totalCount`, `currentPage`, `totalPageCount`.
- Для синхронизации изменений используйте `/orders/history` и `/customers/history`, а не полную перевыгрузку списков.
- Код `460` при пакетной загрузке означает, что часть заказов загружена с ошибками; загруженные перечислены в `uploadedOrders`.

## Сценарии с этим методом

- [Передать заказ с сайта в RetailCRM](https://mcp-everything.ru/integrations/retailcrm/scenarios/peredat-zakaz-s-sayta-v-retailcrm.md)

---

Если этого недостаточно — официальная документация: https://rest-api-docs.retailcrm.ru/v5/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/retailcrm.md
