Перейти к основному содержимому

Интеграция с Console API

С Console API вы управляете экспериментами из своей системы (например, из CRM), без ручной работы в веб-интерфейсе Trisigma. На этой странице - сквозной сценарий: создать эксперимент с группами, метриками и аудиторией, запустить его и остановить по завершении кампании.

Console API принимает REST-запросы на https://{client-host-prefix-short}-conf.trisigma.io/api/console. Тело запроса - JSON, авторизация - по Bearer-токену в заголовке Authorization (см. Авторизацию).

Детальный контракт - в Справочнике методов: Эксперименты, Жизненный цикл, Справочники.

Последовательность вызовов

Шаги ниже показаны на примере самого распространённого варианта - эксперимента regular с разметкой segment по спискам участников на уровне групп control и test.

  1. Запросите справочники и соберите допустимые значения полей.
  2. Создайте эксперимент через POST /experiments/v1 (см. Эксперименты) и сохраните id из ответа.
  3. Запустите эксперимент через POST /experiments/v1/{id}/start.
  4. Отслеживайте статус через GET /experiments/v1 или GET /experiments/v1/{id}.
  5. По завершении остановите эксперимент через POST /experiments/v1/{id}/stop, затем заархивируйте через POST /experiments/v1/{id}/archive (см. Жизненный цикл).

Создание эксперимента со списками участников

Разберём эксперимент, в котором аудиторию задают списки участников - свой список для группы control и свой для группы test. В теле запроса это тип regular с разметкой segment.

Сначала запросите справочники - из них вы возьмёте точные имена списков и типов участников:

curl -s -X GET \
-H "Authorization: Bearer <token>" \
"https://<client-host-prefix-short>-conf.trisigma.io/api/console/experiments/v1/dictionaries/participant-lists"

curl -s -X GET \
-H "Authorization: Bearer <token>" \
"https://<client-host-prefix-short>-conf.trisigma.io/api/console/experiments/v1/dictionaries/participantTypes"

Создайте эксперимент с разными списками на группах:

curl -i -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"type": "regular",
"markupScopeType": "segment",
"title": "Campaign experiment",
"label": "campaign-exp-20260609-a",
"participantType": "visitor",
"duration": 7,
"groups": [
{"name": "control", "isControl": true, "allowedUsers": ["list_control"]},
{"name": "test", "isControl": false, "allowedUsers": ["list_test"]}
],
"team": "product_team",
"metricPresets": ["default_preset"],
"tags": ["integration"]
}' \
"https://<client-host-prefix-short>-conf.trisigma.io/api/console/experiments/v1"

Укажите реальные имена из справочников вместо list_control, list_test, product_team и default_preset.

Другие типы экспериментов

Помимо regular + segment в сценарии выше, Console API поддерживает:

Тип / разметкаКогда использовать
regular + incoming_trafficРазметка всего входящего трафика.
regular + eventРазметка по событию, сегменты в segments.
retroРетроанализ - блок retro с датами.
switchbackSwitchback - блок switchback с окнами и кластерами.

ExperimentType, ExperimentMarkupScopeType - справочники значений в Перечислениях.

Ниже - примеры создания таких экспериментов (полный контракт полей - в Экспериментах).

1. Весь входящий трафик

Эксперимент на весь трафик без фильтрации по спискам.

{
"type": "regular",
"markupScopeType": "incoming_traffic",
"title": "All traffic test",
"label": "all-traffic-test",
"participantType": "visitor",
"allocationTraffic": 100,
"duration": 14,
"groups": [
{ "name": "control", "isControl": true },
{ "name": "test", "isControl": false }
],
"team": "product_team"
}

2. Разметка по событию (с сегментацией)

Эксперимент срабатывает при наступлении события. Аудиторию задаёт блок segments.

{
"type": "regular",
"markupScopeType": "event",
"title": "Event based markup",
"label": "event-markup",
"participantType": "visitor",
"allocationTraffic": 50,
"duration": 10,
"groups": [
{ "name": "control", "isControl": true },
{ "name": "test", "isControl": false }
],
"segments": [
{
"conditions": [{ "param": "platform", "predicate": "eq", "value": "ios" }]
}
],
"team": "product_team"
}

3. Ретроанализ

Исторический анализ по уже собранным данным. Передайте блок retro; поле duration не указывайте.

{
"type": "retro",
"title": "Retro analysis",
"label": "retro-test",
"participantType": "visitor",
"groups": [
{ "name": "control", "isControl": true },
{ "name": "test", "isControl": false }
],
"team": "analytics_team",
"retro": {
"type": "parent_experiment",
"startDate": "2026-06-01",
"endDate": "2026-06-14",
"parentExperimentId": 101
}
}

4. Switchback

Эксперимент с чередованием групп во времени. Передайте блок switchback.

{
"type": "switchback",
"title": "Switchback test",
"label": "switchback-test",
"participantType": "visitor",
"duration": 7,
"groups": [
{ "name": "control", "isControl": true },
{ "name": "test", "isControl": false }
],
"team": "logistics_team",
"switchback": {
"clusterIdSetNames": ["city_clusters"],
"clusterPercent": 10.0,
"windowSizeMinutes": 60,
"burnInMinutes": 10,
"burnOutMinutes": 15,
"strategy": "DETERMINISTIC_RANDOM"
}
}

Ошибки

Формат ответа, конверт {result} / {error} и коды 400/401/403/404/500 описаны в Экспериментах, ошибки авторизации - в Авторизации.

Если вы получаете код 5xx или считаете, что 400 возвращается ошибочно (например, значение из справочника не принимается), обратитесь к менеджеру Trisigma или в чат поддержки. Обязательно приложите curl-запрос и тело ответа с ошибкой.

FAQ

Можно ли полностью удалить эксперимент через Console API?

Нет, Console API не удаляет эксперименты. Вместо удаления переведите эксперимент в архив через POST /experiments/v1/{id}/archive (см. Жизненный цикл).

Как часто нужно запрашивать справочники?

Содержимое справочников (типы участников, метрики, команды) меняется редко. Кэшируйте ответы на своей стороне (например, на 24 часа) и сбрасывайте кэш при ответе 400 Bad Request с указанием на неизвестное значение.

Можно ли поменять длительность или другие параметры эксперимента после запуска?

У запущенного эксперимента (In progress) часть полей конфигурации заблокирована на уровне API. Точный перечень заблокированных полей возвращается в ошибке 400 при попытке их изменить.