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

Быстрое использование API

Quick Start
Короткий сценарий запуска API за 3 шага.
  1. Зарегистрируйтесь в GIP VISION: Открыть страницу регистрации.
  2. Откройте в личном кабинете (в web-версии) раздел Мои настройки и сгенерируйте API-токен.
  3. Скачайте тестовые IFC-модели:

Разместить на плоскости

Endpoint: POST /api/gip-vision/v1/session/by_plane/
Файл: ifc-zakladnaya-detail-mn557-21-06-2026.ifc
Примечание: заголовок X-API-Key опционален, если вы не планируете сохранять модель в личном кабинете.
curl -X POST "https://api-cpsk-superapp.gip.su/api/gip-vision/v1/session/by_plane/" \
-H "X-API-Key: YOUR_API_TOKEN" \
-F "model_file=@ifc-zakladnaya-detail-mn557-21-06-2026.ifc"

Пример успешного ответа (201)

По схеме SessionResponse сервер возвращает: deeplink, expires_at, onetime_code.
{
"deeplink": "gipvision://session/uuid",
"expires_at": "2026-02-22T12:30:45Z",
"onetime_code": "123456"
}
Чтобы реально запустить AR-сессию, ваше приложение должно открыть значение из поля deeplink на устройстве пользователя через системный механизм deep link. Иными словами, API только возвращает ссылку gipvision://..., а открытие ссылки выполняет клиентское приложение (iOS), из которого пользователь запускает сценарий.
Примеры вызова из другого приложения: iOS - openURL

Разместить по изображению

Endpoint: POST /api/gip-vision/v1/session/by_refimage/
Файл: ifc-kabinet-26-r26-21-02-2026.ifc
Пример зоны, где должен быть виден ref_image в кадре
Пример зоны, где должен быть виден маркер ref_image в кадре перед запуском AR-сессии.
Важно по системам координат:
  • Если координаты приходят из Revit (Z-up), обязательно передавайте point_of_view.coordinate_system=z-up (то есть «z-up=true» в терминах интеграции).
  • Если координаты уже в Y-up (например, из three.js-вьюеров), поле coordinate_system можно не передавать, по умолчанию используется y-up.

Z-up (Revit)

curl -X POST "https://api-cpsk-superapp.gip.su/api/gip-vision/v1/session/by_refimage/" \
-H "X-API-Key: YOUR_API_TOKEN" \
-F "model_file=@ifc-kabinet-26-r26-21-02-2026.ifc" \
-F "point_of_view.x=7.28988" \
-F "point_of_view.y=4.14" \
-F "point_of_view.z=0.844617" \
-F "point_of_view.rx=90.0" \
-F "point_of_view.ry=0.0" \
-F "point_of_view.rz=0.0" \
-F "point_of_view.coordinate_system=z-up"

Y-up (например, three.js)

curl -X POST "https://api-cpsk-superapp.gip.su/api/gip-vision/v1/session/by_refimage/" \
-H "X-API-Key: YOUR_API_TOKEN" \
-F "model_file=@ifc-kabinet-26-r26-21-02-2026.ifc" \
-F "point_of_view.x=7.28988" \
-F "point_of_view.y=0.844617" \
-F "point_of_view.z=-4.14" \
-F "point_of_view.rx=90.0" \
-F "point_of_view.ry=0.0" \
-F "point_of_view.rz=0.0"

Пример успешного ответа (201)

{
"deeplink": "gipvision://session/uuid",
"expires_at": "2026-02-22T12:30:45Z",
"onetime_code": "123456"
}

Разместить по двери

Endpoint: POST /api/gip-vision/v1/session/by_scan/
Файл: ifc-kabinet-26-r26-21-02-2026.ifc
Пример двери для задания point_1 и point_2
Пример сцены для размещения по двери: точка point_1 задает позицию пользователя, точка point_2 - направление взгляда.
Важно по системам координат:
  • alignment - обязательный объект выравнивания модели по скану.
  • Поддерживаются два взаимоисключающих режима: point_1 + point_2 или corners + wall_normal.
  • alignment.corners - 4 точки проёма в порядке [BL, BR, TR, TL], формат [[x, y, z], ...].
  • alignment.wall_normal - нормаль стены в формате [x, y, z].
  • Для координат из Revit (Z-up) передавайте alignment.coordinate_system=z-up; сервер автоматически нормализует координаты в Y-up.
  • Для Y-up (например, из three.js-вьюеров) поле alignment.coordinate_system можно не передавать, по умолчанию используется y-up.
  • В multipart-запросе массивы (alignment.point_1, alignment.point_2, alignment.corners, alignment.wall_normal) допускается передавать JSON-строкой.

Режим point_1 + point_2: Z-up (Revit)

curl -X POST "https://api-cpsk-superapp.gip.su/api/gip-vision/v1/session/by_scan/" \
-H "X-API-Key: YOUR_API_TOKEN" \
-F "model_file=@ifc-kabinet-26-r26-21-02-2026.ifc" \
-F "alignment.point_1=[8.07369, 3.663441, 0.0]" \
-F "alignment.point_2=[8.050343, 4.092017, 0.0]" \
-F "alignment.coordinate_system=z-up"

Режим point_1 + point_2: Y-up (например, three.js)

curl -X POST "https://api-cpsk-superapp.gip.su/api/gip-vision/v1/session/by_scan/" \
-H "X-API-Key: YOUR_API_TOKEN" \
-F "model_file=@ifc-kabinet-26-r26-21-02-2026.ifc" \
-F "alignment.point_1=[8.07369, 0.0, -3.663441]" \
-F "alignment.point_2=[8.050343, 0.0, -4.092017]"

Режим corners + wall_normal (когда известны координаты проёма)

Как составить список [BL, BR, TR, TL]:
  • BL (Bottom Left) - нижний левый угол проёма.
  • BR (Bottom Right) - нижний правый угол проёма.
  • TR (Top Right) - верхний правый угол проёма.
  • TL (Top Left) - верхний левый угол проёма.
  • Лево/право определяйте, глядя на проём со стороны, куда направлен вектор wall_normal.
  • Порядок точек должен идти по контуру без перестановок: BL -> BR -> TR -> TL.
Пример данных проёма:
{
"corners": [
[7.510000190734863, -2.220446049250313e-16, -4.145116873249376],
[8.410000190734863, -2.220446049250313e-16, -4.145116873249376],
[8.410000190734863, 2.05, -4.145116873249376],
[7.510000190734863, 2.05, -4.145116873249376]
],
"wall_normal": [0, 0, 1],
}
curl -X POST "https://api-cpsk-superapp.gip.su/api/gip-vision/v1/session/by_scan/" \
-H "X-API-Key: YOUR_API_TOKEN" \
-F "model_file=@ifc-kabinet-26-r26-21-02-2026.ifc" \
-F "alignment.corners=[[7.510000190734863, -2.220446049250313e-16, -4.145116873249376], [8.410000190734863, -2.220446049250313e-16, -4.145116873249376], [8.410000190734863, 2.05, -4.145116873249376], [7.510000190734863, 2.05, -4.145116873249376]]" \
-F "alignment.wall_normal=[0, 0, 1]"

Пример успешного ответа (201)

{
"deeplink": "gipvision://session/uuid",
"expires_at": "2026-02-22T12:30:45Z",
"onetime_code": "123456"
}
Когда координаты проёма известны заранее, используйте режим alignment.corners + alignment.wall_normal вместо автоматически определения проёма на сервере point_1 и point_2. Автоматическое определение проёма построено на алгоритме RANSAK. Качество автоматического определения зависит от геометрии стены и примыкающих элементов