This API gives you access to all the features of Emehmon Sync programmatically.
This documentation aims to provide all the information you need to work with our API.
**Xizmat Safari (XF) API** — отдельный сервис (бронирование госкомандировок, интеграция МВД ↔ E-mehmon) со своей документацией: https://sandbox-api.emehmon.uz/sandbox/xf/docs
## Authentication (HMAC)
Every request must include these headers:
- `X-User-Name`: API username
- `X-User-Ts`: Unix timestamp (seconds)
- `X-User-Request-Id`: UUID (required, unique)
- `X-User-Hash`: hex HMAC-SHA256 signature
Signature formula:
`X-User-Hash = HMAC_SHA256( X-User-Name + X-User-Ts + X-User-Request-Id, secret )`
Notes:
- TTL is 5 minutes (server rejects old timestamps)
- Replay protection is enabled using `(username, timestamp, request_id)`
---
## Response format
### Success
```json
{
"code": 200,
"message": "success",
"data": {},
"request_id": "uuid"
}
## Error
```json
{
"code": 401,
"message": "Request time expired",
"error_code": "REQUEST_TIME_EXPIRED",
"meta": {},
"request_id": "uuid"
}
```
"meta" may contain validation details (e.g. { "field": "date" }).
## Errors
| HTTP | error_code | When |
| ---: | ---------------------- | ----------------------------------------------- |
| 401 | `MISSING_AUTH_HEADERS` | Required auth headers are missing |
| 401 | `INVALID_TIMESTAMP` | `X-User-Ts` is not numeric |
| 401 | `REQUEST_TIME_EXPIRED` | Timestamp is outside TTL window |
| 401 | `INVALID_REQUEST_ID` | `X-User-Request-Id` is invalid format |
| 403 | `USER_NOT_FOUND` | Username not found or inactive |
| 403 | `IP_NOT_ALLOWED` | Client IP not in `allowed_ips` (if enabled) |
| 403 | `REPLAY_DETECTED` | Duplicate `(username, timestamp, request_id)` |
| 403 | `INVALID_SIGNATURE` | `X-User-Hash` does not match expected signature |
| 403 | `ACCESS_DENIED` | User has no permission for this action |
| 422 | `VALIDATION_ERROR` | Request body validation failed |
| 500 | `INTERNAL_ERROR` | Unhandled server error |
This API is not authenticated.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/dictionaries-meta" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" Имя справочника: countries, regions, districts, room-types, visit-types, guest-types, passport-types, visa-types, payment-types.
Только для districts — фильтр по региону.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/dictionaries/countries?region_id=1726" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"name": "countries",
"locale": "ru",
"count": 2,
"items": [
{
"id": 173,
"name": "Узбекистан",
"code": "UZB"
},
{
"id": 231,
"name": "Казахстан",
"code": "KAZ"
}
]
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/hotel" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"hotel_id": 1234,
"name": "Hotel Example",
"inn": "300123456",
"stars": 4,
"address": "Tashkent, Amir Temur 1",
"region_id": 1726,
"district_id": 1726269,
"phone": "+998 71 200 00 00",
"email": "info@example.uz",
"manager": "Иванов И.И.",
"license": {
"number": "TR-12345",
"expires_at": "2027-12-31",
"is_valid": true
},
"deposit": 4500000,
"can_register_listok": true,
"blocking_reasons": []
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/hotel/rooms" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"count": 2,
"items": [
{
"id": 1011,
"room_number": "101",
"room_type_id": 1,
"room_type_name": "Стандарт"
},
{
"id": 1012,
"room_number": "201",
"room_type_id": 2,
"room_type_name": "Люкс"
}
]
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/hotel/prices" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"count": 1,
"items": [
{
"price_id": 8821,
"room_type_id": 1,
"room_type_name": "Стандарт",
"beds": 2,
"capacity": 2,
"uzs": 450000,
"usd": 38,
"uzs_noresident": 550000,
"usd_noresident": 48,
"breakfast": true,
"dt": "2026-05-01",
"created_at": "2026-05-01 09:15:32"
}
]
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/hotel/photos" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"count": 1,
"items": [
{
"photo_id": 5577,
"filename": "123_661b3a8f4c12d.png",
"storage_path": "hotelimages/123_661b3a8f4c12d.png",
"room_type_id": 1,
"is_main": true,
"created_at": "2026-05-22 13:45:10"
}
]
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
curl --request PUT \
"https://sandbox-api.emehmon.uz/sync/v1/crm/hotel/prices" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--data "{
\"items\": [
{
\"room_type_id\": 16,
\"uzs\": 39,
\"usd\": 84,
\"uzs_noresident\": 12,
\"usd_noresident\": 77,
\"beds\": 5,
\"capacity\": 13,
\"breakfast\": true
}
]
}"
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/crm/hotel/photos" \
--header "Accept: application/json" \
--header "Content-Type: multipart/form-data" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--form "room_type_id=1"\
--form "is_main="\
--form "photo=@/tmp/phpvRYSWi" The ID of the photo.
curl --request DELETE \
"https://sandbox-api.emehmon.uz/sync/v1/crm/hotel/photos/564" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/listok/check-can-create" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"can_create": true,
"blocking_reasons": [],
"deposit": 4500000,
"license_expires_at": "2027-12-31",
"deposit_alert": null
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/crm/listok/check-duplicate" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--data "{
\"passportNumber\": \"AB1234567\"
}"
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/crm/listok/person-lookup" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--data "{
\"passportNumber\": \"AB1234567\",
\"datebirth\": \"1990-05-15\",
\"id_citizen\": 76
}"
Фильтр: дата заселения от (Y-m-d). Must be a valid date in the format Y-m-d.
Фильтр: дата заселения до (Y-m-d), не раньше date_from. Must be a valid date in the format Y-m-d. validation.after_or_equal.
Фильтр по серии/номеру паспорта. validation.max.
Фильтр по фамилии (частичное совпадение). validation.max.
1 — только активные (не выселенные, dateVisitOff IS NULL) листовки; 0 — только выселенные. То же множество, что «текущие зарегистрированные» в кабинете.
Номер страницы (с 1). validation.min.
Размер страницы (1..200, по умолчанию 50). validation.min validation.max.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/listok?date_from=2026-05-01&date_to=2026-05-31&passport=AB1234567&surname=%D0%9A%D0%B0%D1%80%D0%B8%D0%BC%D0%BE%D0%B2&active=1&page=1&per_page=50" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"total": 1,
"page": 1,
"per_page": 50,
"items": [
{
"listok_id": 8826912,
"regNum": "1726-2026-00012345",
"surname": "MUSTERMANN",
"firstname": "MAX",
"lastname": null,
"pinfl": null,
"id_citizen": 5,
"id_country": 5,
"id_countryFrom": 5,
"id_passporttype": 1,
"id_visittype": 2,
"id_guest": 1,
"id_person": "1234567890",
"id_visatype": 3,
"passportNumber": "C01X00T47",
"datePassport": "2021-03-15",
"datebirth": "1985-07-12",
"sex": "M",
"datevisiton": "2026-08-30 14:30:00",
"datevisitoff": null,
"wdays": 3,
"lived_days": null,
"propiska": "101",
"room_type_id": 1,
"visaNumber": null,
"dateVisaOn": null,
"dateVisaOff": null,
"kppNumber": null,
"dateKPP": null,
"amount": null,
"payed": 0,
"paytp": null,
"summa": null,
"real_summa": null,
"real_days": null,
"registered_via": 2,
"created_at": "2026-08-30 14:30:12",
"updated_at": "2026-08-30 14:30:12"
}
]
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
listok_id из списка.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/listok/8826912" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"listok_id": 8826912,
"regNum": "1726-2026-00012345",
"surname": "MUSTERMANN",
"firstname": "MAX",
"lastname": null,
"pinfl": null,
"id_citizen": 5,
"id_country": 5,
"id_countryFrom": 5,
"id_passporttype": 1,
"id_visittype": 2,
"id_guest": 1,
"id_person": "1234567890",
"id_visatype": 3,
"passportNumber": "C01X00T47",
"datePassport": "2021-03-15",
"datebirth": "1985-07-12",
"sex": "M",
"datevisiton": "2026-08-30 14:30:00",
"datevisitoff": null,
"wdays": 3,
"lived_days": null,
"propiska": "101",
"room_type_id": 1,
"visaNumber": null,
"dateVisaOn": null,
"dateVisaOff": null,
"kppNumber": null,
"dateKPP": null,
"amount": null,
"payed": 0,
"paytp": null,
"summa": null,
"real_summa": null,
"real_days": null,
"registered_via": 2,
"created_at": "2026-08-30 14:30:12",
"updated_at": "2026-08-30 14:30:12"
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/crm/listok" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--data "{
\"surname\": \"b\",
\"firstname\": \"n\",
\"lastname\": \"g\",
\"id_citizen\": 66,
\"passportNumber\": \"m\",
\"datePassport\": \"2026-09-02\",
\"datebirth\": \"2026-09-02\",
\"datevisiton\": \"2026-09-02T14:28:55\",
\"wdays\": 15,
\"sex\": \"M\",
\"id_visittype\": 43,
\"id_guest\": 16,
\"id_person\": \"12345\",
\"propiska\": \"d\",
\"id_country\": 40,
\"id_countryFrom\": 4,
\"id_passporttype\": 2,
\"passportIssuedBy\": \"i\",
\"pinfl\": \"31234567890123\",
\"amount\": 75,
\"lived_days\": 7,
\"payed\": 87,
\"id_visatype\": 39,
\"visaNumber\": \"y\",
\"dateVisaOn\": \"2026-09-02\",
\"dateVisaOff\": \"2026-09-02\",
\"visaIssuedBy\": \"k\",
\"kppNumber\": \"c\",
\"dateKPP\": \"2026-09-02\",
\"bookingId\": 49,
\"crm_actor_id\": \"y\",
\"crm_actor_name\": \"u\",
\"children\": [
{
\"full_name\": \"w\",
\"gen\": \"M\",
\"birth_day\": \"2026-09-02\"
}
]
}"
The ID of the listok.
curl --request PATCH \
"https://sandbox-api.emehmon.uz/sync/v1/crm/listok/564" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--data "{
\"surname\": \"b\",
\"firstname\": \"n\",
\"id_citizen\": 67,
\"passportNumber\": \"z\",
\"datePassport\": \"2026-09-02\",
\"sex\": \"W\",
\"id_visittype\": 27,
\"id_guest\": 35,
\"propiska\": \"101\",
\"crm_actor_id\": \"op-42\",
\"crm_actor_name\": \"y\"
}"
The ID of the listok.
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/crm/listok/564/checkout" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--data "{
\"sum\": 350000,
\"payment_type_id\": 1
}"
Фильтр: дата заселения от (Y-m-d). Must be a valid date in the format Y-m-d.
Фильтр: дата заселения до (Y-m-d), не раньше date_from. Must be a valid date in the format Y-m-d. validation.after_or_equal.
Фильтр по серии/номеру паспорта. validation.max.
Фильтр по фамилии (частичное совпадение). validation.max.
Номер страницы (с 1). validation.min.
Размер страницы (1..200, по умолчанию 50). validation.min validation.max.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/self-listok?date_from=2026-05-01&date_to=2026-05-31&passport=AB7654321&surname=%D0%9A%D0%B0%D1%80%D0%B8%D0%BC%D0%BE%D0%B2&page=1&per_page=50" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"total": 1,
"page": 1,
"per_page": 50,
"items": [
{
"self_listok_id": 8821934,
"regNum": "1726-2026-S-00001",
"surname": "KARIMOV",
"firstname": "AZIZ",
"lastname": null,
"id_citizen": 173,
"id_country": 173,
"id_countryFrom": null,
"id_passporttype": 1,
"id_visittype": 2,
"id_guest": 1,
"id_person": null,
"id_visatype": null,
"passportNumber": "AA1234567",
"passportIssuedBy": null,
"datePassport": "2020-01-01",
"datebirth": "1990-01-01",
"sex": "M",
"datevisiton": "2026-08-30 14:30:00",
"datevisitoff": "2026-09-04 14:30:00",
"wdays": 5,
"visaNumber": null,
"dateVisaOn": null,
"dateVisaOff": null,
"visaIssuedBy": null,
"kppNumber": "KPP-99",
"dateKPP": "2026-08-30",
"direction": "Tashkent - Samarkand",
"a_address": null,
"a_id_region": null,
"a_id_district": null,
"summa": 22500,
"mzrp": 412000,
"prc": 5,
"registered_via": 2,
"hsh": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
"created_at": "2026-08-30 14:31:08",
"updated_at": "2026-08-30 14:31:08"
}
]
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
self_listok_id из списка.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/self-listok/8821934" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"self_listok_id": 8821934,
"regNum": "1726-2026-S-00001",
"surname": "KARIMOV",
"firstname": "AZIZ",
"lastname": null,
"id_citizen": 173,
"id_country": 173,
"id_countryFrom": null,
"id_passporttype": 1,
"id_visittype": 2,
"id_guest": 1,
"id_person": null,
"id_visatype": null,
"passportNumber": "AA1234567",
"passportIssuedBy": null,
"datePassport": "2020-01-01",
"datebirth": "1990-01-01",
"sex": "M",
"datevisiton": "2026-08-30 14:30:00",
"datevisitoff": "2026-09-04 14:30:00",
"wdays": 5,
"visaNumber": null,
"dateVisaOn": null,
"dateVisaOff": null,
"visaIssuedBy": null,
"kppNumber": "KPP-99",
"dateKPP": "2026-08-30",
"direction": "Tashkent - Samarkand",
"a_address": null,
"a_id_region": null,
"a_id_district": null,
"summa": 22500,
"mzrp": 412000,
"prc": 5,
"registered_via": 2,
"hsh": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
"created_at": "2026-08-30 14:31:08",
"updated_at": "2026-08-30 14:31:08"
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/crm/self-listok" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--data "{
\"surname\": \"b\",
\"firstname\": \"n\",
\"lastname\": \"g\",
\"id_citizen\": 66,
\"passportNumber\": \"m\",
\"datePassport\": \"2026-09-02\",
\"datebirth\": \"2026-09-02\",
\"datevisiton\": \"2026-09-02T14:28:55\",
\"wdays\": 15,
\"sex\": \"M\",
\"id_visittype\": 43,
\"id_guest\": 16,
\"kppNumber\": \"KPP-12345\",
\"id_person\": \"12345\",
\"id_country\": 26,
\"id_countryFrom\": 40,
\"id_passporttype\": 4,
\"passportIssuedBy\": \"n\",
\"pinfl\": \"31234567890123\",
\"dateKPP\": \"2026-09-02\",
\"direction\": \"i\",
\"id_visatype\": 75,
\"visaNumber\": \"h\",
\"dateVisaOn\": \"2026-09-02\",
\"dateVisaOff\": \"2026-09-02\",
\"visaIssuedBy\": \"w\",
\"crm_actor_id\": \"a\",
\"crm_actor_name\": \"y\",
\"children\": [
{
\"full_name\": \"k\",
\"gen\": \"W\",
\"birth_day\": \"2026-09-02\"
}
]
}"
The ID of the self listok.
curl --request PATCH \
"https://sandbox-api.emehmon.uz/sync/v1/crm/self-listok/564" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--data "{
\"surname\": \"b\",
\"firstname\": \"n\",
\"id_citizen\": 67,
\"passportNumber\": \"z\",
\"datePassport\": \"2026-09-02\",
\"sex\": \"W\",
\"id_visittype\": 27,
\"id_guest\": 35,
\"datevisiton\": \"2026-09-02T14:28:55\",
\"wdays\": 8,
\"kppNumber\": \"KPP-12345\",
\"dateKPP\": \"2026-09-02\",
\"direction\": \"Tashkent → Samarkand\",
\"id_visatype\": 60,
\"visaNumber\": \"d\",
\"dateVisaOn\": \"2026-09-02\",
\"dateVisaOff\": \"2026-09-02\",
\"visaIssuedBy\": \"l\",
\"crm_actor_id\": \"j\",
\"crm_actor_name\": \"n\"
}"
Год (обязательно). validation.min validation.max.
Месяц 1..12. Без него — весь год с разбивкой по месяцам. validation.between.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/finance/tourist-tax?year=2026&month=7" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"year": 2026,
"month": 7,
"basis": "checkout",
"months": [
{
"month": 7,
"listok_qty": 412,
"self_qty": 8,
"real_days": 1180,
"gt_sum": 17800000,
"mt_sum": 420000,
"st_sum": 230000,
"total": 18450000
}
],
"total": {
"listok_qty": 412,
"self_qty": 8,
"real_days": 1180,
"gt_sum": 17800000,
"mt_sum": 420000,
"st_sum": 230000,
"total": 18450000
}
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
Год (обязательно). validation.min validation.max.
Месяц 1..12 (обязательно). validation.between.
Номер страницы (с 1). validation.min.
Размер страницы (1..200, по умолчанию 50). validation.min validation.max.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/finance/tourist-tax/details?year=2026&month=7&page=1&per_page=50" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"total": 420,
"page": 1,
"per_page": 50,
"items": [
{
"source": "listok",
"listok_id": 8826912,
"regNum": "1726-2026-00012345",
"surname": "MUSTERMANN",
"firstname": "MAX",
"lastname": null,
"id_citizen": 5,
"citizenship": "Германия",
"is_local": false,
"datevisiton": "2026-07-01 14:00:00",
"datevisitoff": "2026-07-05 10:00:00",
"days": 4,
"prc": 5,
"mzrp": 412000,
"tax_sum": 82400
}
]
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
Год (обязательно). validation.min validation.max.
Месяц 1..12. Без него — весь год с разбивкой по месяцам. validation.between.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/finance/subscription?year=2026&month=7" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"year": 2026,
"month": 7,
"accruals": [
{
"period": "2026-07",
"tariff": 500000,
"discount_percent": 0,
"total": 500000,
"registrations": 42,
"accrued_at": "2026-08-01 03:00:00"
}
],
"accrued_total": 500000,
"payments_total": 250000,
"current_deposit": 1500000
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
Год (обязательно). validation.min validation.max.
Месяц 1..12. Без него — весь год с разбивкой по месяцам. validation.between.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/crm/finance/registrations?year=2026&month=7" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" {
"code": 200,
"message": "OK",
"data": {
"year": 2026,
"month": 7,
"basis": "checkin",
"items": [
{
"day": 1,
"listok_qty": 14,
"self_qty": 1,
"total": 15
},
{
"day": 2,
"listok_qty": 9,
"self_qty": 0,
"total": 9
}
],
"total": {
"listok_qty": 412,
"self_qty": 8,
"total": 420
}
},
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
Returns hotel list by SOATO/COATO code.
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/coato/common" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "{
\"oblastsoatocode\": \"\\\"1726\\\"\"
}"
{
"code": 200,
"message": "success",
"data": [
{
"hotel_id": 123,
"hotel_district": "Tashkent",
"hotel_name": "Example Hotel",
"hotel_type": "Hotel",
"hotel_status": "Active",
"hotel_stars": 3,
"hotel_inn": "123456789",
"hotel_rooms": 10,
"hotel_beds": 20,
"hotel_address": "Street 1",
"hotel_local_qty": 5,
"hotel_foreign_qty": 2,
"hotel_phone": "+998...",
"hotel_manager": "Manager Name"
}
],
"request_id": "e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d311"
}
Returns hotel list by COATO code with additional fields: location (geo), check_in_qty (arrivals count) and check_out_qty (departures count) for the given period.
Access restricted to specific API users (configured in sync.mip.allowed_users).
Only specific COATO codes are allowed (configured in sync.mip.allowed_coato).
Maximum date interval is configurable (default: 7 days).
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/coato/common-with-period" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "{
\"oblastsoatocode\": \"\\\"1726269\\\"\",
\"date_from\": \"\\\"2026-04-01\\\"\",
\"date_to\": \"\\\"2026-04-07\\\"\"
}"
{
"code": 200,
"message": "success",
"data": [
{
"hotel_id": 123,
"hotel_district": "Mirzo Ulugbek",
"hotel_name": "Example Hotel",
"hotel_type": "Hotel",
"hotel_status": "Active",
"hotel_stars": 3,
"hotel_inn": "123456789",
"hotel_rooms": 10,
"hotel_beds": 20,
"hotel_address": "Street 1",
"hotel_local_qty": 5,
"hotel_foreign_qty": 2,
"hotel_phone": "+998...",
"hotel_manager": "Manager Name",
"location": "41.311081,69.279737",
"check_in_qty": 15,
"check_out_qty": 8
}
],
"request_id": "e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31"
}
Returns two arrays: check_in and check_out for the given date and COATO code.
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/coato/details" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "{
\"oblastsoatocode\": \"\\\"1726\\\"\",
\"date\": \"\\\"2026-01-20\\\"\"
}"
{
"code": 200,
"message": "success",
"data": {
"check_out": [
{
"hotel_id": 1,
"listok_id": 10,
"name": "John Doe",
"sex": "M",
"birthdate": "1990-01-01",
"birthcountry": 860,
"arrival_from": 643,
"citizen": 860,
"check_in": "2026-01-18 12:00:00",
"check_out": "2026-01-20 09:00:00",
"children": null
}
],
"check_in": [
{
"hotel_id": 2,
"listok_id": 11,
"name": "Jane Doe",
"sex": "W",
"birthdate": "1995-05-05",
"birthcountry": 860,
"arrival_from": 398,
"citizen": 860,
"check_in": "2026-01-20 14:00:00",
"check_out": null,
"children": null
}
]
},
"request_id": "e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31"
}
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/hp/hotels" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "{
\"page\": 1,
\"per_page\": 50
}"
{
"code": 200,
"message": "success",
"data": {
"total_count": 1000,
"rows": [
{"hotel_id":1,"hotel_name":"Example","hotel_inn":"123","hotel_type":"Hotel","hotel_status":"Active","hotel_stars":3,"hotel_rooms":10,"hotel_beds":20,"region_id":"17","region_name":"Tashkent","district_id":"1726","district_name":"District","hotel_address":"Street 1","hotel_local_qty":5,"hotel_foreign_qty":2,"hotel_manager":"Manager","hotel_phone":"+998..."},
]
},
"request_id": "e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31"
curl --request POST \
"https://sandbox-api.emehmon.uz/sync/v1/hp/clients" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data "{
\"page\": 1,
\"per_page\": 50,
\"date_from\": \"\\\"2026-01-01\\\"\",
\"date_to\": \"\\\"2026-01-31\\\"\"
}"
{
"code": 200,
"message": "success",
"data": {
"total_count": 12345,
"rows": [
{
"listok_id": 1,
"hotel_id": 10,
"hotel_inn": "123",
"hotel_name": "Example",
"name": "DOE JOHN",
"pinfl": "**masked**",
"gender": "M",
"birthdate": "1990-01-01",
"birthcountry": "Uzbekistan",
"arrival_from": "Kazakhstan",
"citizen": "Uzbekistan",
"check_in": "2026-01-10 12:00:00",
"check_out": "2026-01-12 09:00:00",
"children": null,
"region_id": "17",
"region_name": "Tashkent",
"district_id": "1726",
"district_name": "District",
"guest_goal": "Tourism"
}
]
},
"request_id": "e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31"
}
Полный список публичных error_code, возвращаемых Sync API и CRM Hotel API. Каждая запись содержит группу (auth / authz / idempotency / crm.hotel / crm.listok / crm.assets / system), HTTP-статус, машиночитаемый error_code и краткое описание.
Источник правды — App\Support\ErrorCatalog::all(). Расширение списка считается
обратно-совместимым изменением и не требует версионирования.
curl --request GET \
--get "https://sandbox-api.emehmon.uz/sync/v1/meta/errors" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "X-User-Name: apistatuser@emehmon.uz" \
--header "X-User-Ts: 1769053020" \
--header "X-User-Request-Id: e7b8c3a4-9f2d-4c6a-8e51-6a9b2c4f7d31" \
--header "X-User-Hash: PLACEHOLDER_HASH"