Две необязательные метки. Поле user раскладывает расход по вашим пользователям, заголовок X-Request-Id делает разбор инцидента вопросом минут.
| Что | Где | Что делает |
|---|---|---|
| user | поле тела запроса | Идентификатор вашего пользователя. Разрез «по пользователям» в кабинете, до 128 символов |
| X-Request-Id | заголовок | Ваш идентификатор запроса. Возвращается в ответе и попадает в лог |
curl https://zerno.one/api/v1/chat/completions \
-H "Authorization: Bearer $ZERNO_API_KEY" \
-H "X-Request-Id: ticket-48213-retry-1" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v3",
"user": "tenant-42",
"messages": [{"role": "user", "content": "…"}]
}'Поле user — то же самое, что у OpenAI: менять код ради нас не нужно, а если вы уже его передаёте, разрез появится сам.
client.chat.completions.create(
model="deepseek/deepseek-v3",
messages=[{"role": "user", "content": "…"}],
user="tenant-42",
)Ключи разделяют доступ, user — назначение. Одним ключом обычно ходят несколько частей системы или несколько ваших клиентов сразу. Когда счёт вырос вдвое, вопрос «кто именно» без атрибуции решается перебором, а с ней — одной группировкой в разделе «Доступ к моделям».
Разделять ли трафик ключами или полем user — вопрос того, что вы хотите ограничивать. Ключ несёт лимиты и отзывается отдельно; user — только метка, зато её можно ставить на каждого клиента, не заводя ему ключ. Обычно правильный ответ — и то и другое.
user видно только вам — в разрезе «по пользователям» в «Доступе к моделям». Наружу оно не выходит: публичного рейтинга приложений у нас нет, и в агрегированной статистике метка не появляется. Это ваши коммерческие данные, а не наш контент. По той же причине не кладите в неё почту или имя человека — хватит внутреннего идентификатора.Если X-Request-Id не передан, мы генерируем свой и возвращаем его в том же заголовке и в теле ошибки. Свой удобнее: в него можно зашить номер тикета, попытку и стенд — и в обращении в поддержку достаточно назвать его, не пересказывая контекст.
Значение должно быть короче 128 символов и состоять из букв, цифр, дефисов и подчёркиваний. Персональные данные в него класть не надо: он живёт в логах дольше, чем сам запрос. Подробнее — в разделе «Данные и логи».