#
Начало интеграции
#
Коллекция запросов
У API-документации есть коллекция запросов с примерами.
#
Базовый URL
Используйте базовый URL:
https://evs-01.gravityfield.ai/v2
Все endpoint-ы V2 вызываются без префикса /ssapi:
POST https://evs-01.gravityfield.ai/v2/visit
POST https://evs-01.gravityfield.ai/v2/event
POST https://evs-01.gravityfield.ai/v2/choose
#
Авторизация
API V2 использует bearer authentication. Передавайте API-ключ в заголовке Authorization:
--header 'Authorization: Bearer YOUR_API_KEY'
API-ключ создаётся в аккаунте Gravity Field. Подробнее: Управление API-ключами.
#
sec: идентификатор секции
В каждом основном POST-запросе передавайте sec - идентификатор секции Gravity Field.
{
"sec": "YOUR_SECTION_ID"
}
Если API-ключ не относится к указанной секции, API вернёт ошибку авторизации.
#
Идентификация пользователя
В V2 пользователь и сессия передаются в объекте user:
{
"user": {
"uid": "USER_UID",
"ses": "SESSION_ID"
}
}
Правила хранения:
uidхраните между сессиями пользователя;sesхраните для текущей сессии приложения или сайта;- после ответов
/user,/visit,/eventи/chooseобновляйте локально значенияuser.uidиuser.ses, если они пришли в ответе.
Если пользователь новый, первый запрос можно отправить без uid и ses. Gateway создаст пользователя и вернёт актуальные идентификаторы в ответе.
Если у вас есть собственный внешний идентификатор пользователя, передавайте его в user.custom. Для user.custom нужно также передавать user.ses.
#
Когда передавать uid и ses
uid нужен для непрерывности истории пользователя. ses нужен для группировки действий внутри текущей сессии. В мобильных приложениях обычно uid хранится в persistent storage, а ses - только в памяти текущего запуска приложения.
#
Когда uid и ses возвращаются в ответе
API может вернуть объект user в ответах /user, /visit, /event и /choose.
Обычно user.uid и user.ses возвращаются, когда:
- пользователь новый и API создал для него идентификаторы;
- запрос пришёл с
uid, но безses, и API создал новую сессию; - API обновил состояние пользователя или сессии;
- endpoint возвращает
userвместе сcampaigns[]илиdata[].
Если в ответе нет user, uid или ses, это не означает ошибку. Оставьте локально сохранённые значения без изменений и используйте их в следующих запросах.
Правило обновления простое:
if (response.user?.uid) {
saveUid(response.user.uid);
}
if (response.user?.ses) {
saveSession(response.user.ses);
}
Подробный пример первого запроса: POST /user.
#
Общий контекст
В V2 контекст страницы или экрана передаётся в ctx:
{
"ctx": {
"type": "PRODUCT",
"data": ["sku-123"],
"location": "https://example.com/product/sku-123"
}
}
Поддерживаемые значения ctx.type:
HOMEPAGESEARCHPRODUCTCATEGORYCARTOTHER
Для PRODUCT и CATEGORY передавайте непустой ctx.data. Значения в ctx.data должны совпадать с идентификаторами товаров или категорий из фида и настройками таргетинга.
#
Device
В каждом основном POST-запросе передавайте объект device. Минимально полезный набор:
{
"device": {
"ua": "Mozilla/5.0 ...",
"ip": "192.168.0.1",
"userTime": "2026-06-03T15:00:00+03:00"
}
}
Для мобильных приложений также можно передавать device.id, tracking status и permission status, если эти данные доступны.
#
Опции
В options можно запросить дополнительные данные или изменить поведение endpoint-а:
Для manual rendering обычно включают isBuildEngagementUrl: true, чтобы не собирать engagement-запросы вручную. Подробнее: Передача взаимодействий пользователя с кампаниями.