Правила запросов и ошибки

Конверт ответа

Успех — данные в data, у списков рядом лежит meta с пагинацией. Ошибка — объект error.

{
  "error": {
    "code": "seat_taken",
    "message": "Часть мест уже занята",
    "details": { "unavailable_seats": ["zone-1|zone-1-1-1"] }
  },
  "request_id": "req_01kz47m06k53xhxy558wgez8hz"
}

Разбирайте code, а не текст: message написан для человека и может меняться.

Коды ошибок

HTTPcodeЧто делать
401unauthenticatedКлюч не передан, отозван или истёк
403insufficient_scopeУ ключа нет права на метод
403ip_not_allowedЗапрос с адреса вне белого списка
404not_foundОбъекта нет либо он принадлежит другой компании
409seat_takenМеста заняли раньше вас — обновите занятость и предложите другие
409reservation_expiredБронь истекла, соберите её заново
422validation_failedПроверьте тело запроса, подробности в details
429rate_limitedПревышен лимит, подождите по заголовку Retry-After
500server_errorНаша ошибка — повторите позже и пришлите request_id

Идемпотентность

Каждый запрос, который что-то создаёт или меняет деньги, требует заголовок Idempotency-Key — произвольную строку, уникальную для этой операции. Если связь оборвалась и вы повторили запрос с тем же ключом, вернётся тот же результат, а второй заказ не появится.

POST https://api.ctickets.ru/v1/orders
Idempotency-Key: order-2026-08-03-00042

Ключ живёт сутки. Тот же ключ с другим телом запроса — ошибка: так ловится подмена операции.

Лимиты

Лимит считается по приложению, а не по адресу: несколько ваших серверов делят общий бюджет. По умолчанию 120 запросов в минуту, организатор может поднять лимит в кабинете. В ответ приходят X-RateLimit-Limit и X-RateLimit-Remaining.

Пагинация и фильтры

Время и деньги

Вопросы по интеграции — api@ctickets.ru. Ключи и журнал запросов — в кабинете организатора, раздел «API и интеграции».