Публичный API Vector Trading

Эта страница описывает REST API для владельцев бандлов. Точный контракт схем доступен в Swagger.

API позволяет:

  • получать список ваших пакетов ботов
  • искать пользователей по имени
  • получать историю неотозванных доступов к бандлу
  • создавать и отзывать доступы
  • читать короткоживущие checkout-сессии

API ключи

API ключи доступны пользователям с premium или elite подпиской в Профиль -> API ключи.

API ключи предназначены для server-side интеграций. Не храните и не используйте их в браузерном JavaScript: публичные REST API запросы не опираются на web session Vector Trading, cookies или credentialed browser CORS.

Scopes:

  • : список ваших пакетов ботов
  • : поиск пользователей по имени
  • : просмотр, создание и отзыв доступов

Используйте , если внешняя платёжная система должна выдавать или отзывать доступ к бандлу.

Каждый запрос должен содержать:

Authorization: Bearer vt_<apiKeyId>_<secret>

Base URL:

https://www.vector-trading.app/api/rest/v1

Ограничения частоты запросов

Запросы ограничены 240 запросами в минуту с одного IP-адреса и 240 запросами в минуту с одного API-ключа. Каждый запрос должен укладываться в оба лимита. При превышении API возвращает ; повторите запрос, снизив частоту.

Пагинация списков

Все endpoints, возвращающие списки, принимают опциональные и . Ответ содержит фактически применённый и , если доступна следующая страница. Передавайте без изменений в следующий запрос и сохраняйте остальные фильтры и сортировку. В первом запросе не указывается; отсутствие означает конец списка. Неполная или даже пустая страница не означает конец списка, пока в ответе есть : продолжайте запросы до его отсутствия.

Типовой поток

  1. Получите бандлы через .
  2. Найдите пользователя через .
  3. Создайте доступ через .
  4. Отслеживайте историю неотозванных доступов через .

Endpoints

Список бандлов

curl -G "https://www.vector-trading.app/api/rest/v1/bundles" \  -H "Authorization: Bearer $VECTOR_API_KEY" \  --data-urlencode "limit=50" \  --data-urlencode "cursor=<nextCursor>"

Архивные бандлы не возвращаются. Поскольку каждое source-чтение ограничено, длинная архивная история может дать неполную или пустую страницу с ; продолжайте запросы до отсутствия cursor.

Поиск пользователей

curl -G "https://www.vector-trading.app/api/rest/v1/users" \  -H "Authorization: Bearer $VECTOR_API_KEY" \  --data-urlencode "displayName=alex" \  --data-urlencode "limit=10" \  --data-urlencode "cursor=<nextCursor>"

— case-insensitive prefix-поиск длиной 2–30 символов. Используйте возвращённый для операций с доступами.

Пользователи с доступом

curl -G "https://www.vector-trading.app/api/rest/v1/bundles/<bundleId>/users" \  -H "Authorization: Bearer $VECTOR_API_KEY" \  --data-urlencode "limit=50" \  --data-urlencode "cursor=<nextCursor>"

Возвращает публичную информацию о пользователях, текущий тип доступа, период текущего grant-а и конец непрерывного доступа ( или ).

Список доступов

curl -G "https://www.vector-trading.app/api/rest/v1/bundles/<bundleId>/grants" \  -H "Authorization: Bearer $VECTOR_API_KEY" \  --data-urlencode "limit=50" \  --data-urlencode "cursor=<nextCursor>"

Возвращает все неотозванные grants, включая истёкшие: , , optional , , , , . Grant отсутствующего или окончательно удалённого Account остаётся в истории без . Внешняя интеграция сама решает, учитывать ли такие записи. Vector Trading не публикует Account status через этот API. При селективных фильтрах API ограничивает объём одного чтения, поэтому страница grants может быть пустой или содержать меньше записей вместе с . Продолжайте с теми же фильтрами и сортировкой до ответа без cursor.

Создать доступ

curl -X POST "https://www.vector-trading.app/api/rest/v1/bundles/<bundleId>/grants" \  -H "Authorization: Bearer $VECTOR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "userId": "<userId>",    "grantType": "paid_external",    "endsAt": "2026-07-19T12:00:00.000Z",    "sourceId": "stripe:invoice:in_123"  }'

Допустимые : , , , .

Используйте для временного доступа. Vector Trading сам выбирает grant-а: доступ начинается сразу или после текущей непрерывной цепочки доступа. Если уже покрыт активной или запланированной цепочкой, API вернёт покрывающий grant и не создаст дубликат. Если не указан, доступ бессрочный.

Для поле обязательно и должно указывать на оплаченный invoice, платёж или webhook-событие. Оно должно быть visible ASCII token по грамматике . Если повторяется для того же бандла, пользователя и типа доступа, API вернёт существующий grant.

Внешние платежи и рекуррентный доступ

Vector Trading не обрабатывает платежи и не хранит состояние рекуррентной подписки вашего checkout-а. Используйте Vector Trading как ledger доступа:

  1. Когда первый invoice оплачен, создайте grant с , равным окончанию оплаченного периода.
  2. Когда оплачен рекуррентный renewal invoice, снова вызовите этот endpoint с новым и следующего периода.
  3. Для разовой lifetime-покупки создайте grant с уникальным и не указывайте .
  4. Если renewal-платёж не прошёл, не создавайте новый grant. Текущий доступ истечёт естественно.
  5. Если клиент отменил подписку в конце периода, не отзывайте текущий grant. Просто перестаньте создавать будущие grants.
  6. При немедленной отмене, refund или chargeback отзовите текущие или будущие grants через revoke endpoint.

Отозвать доступ

curl -X DELETE "https://www.vector-trading.app/api/rest/v1/bundles/<bundleId>/grants/<grantId>" \  -H "Authorization: Bearer $VECTOR_API_KEY"

Внимание: отзыв выставляет выбранному grant-у и всем текущим или будущим grant-ам этого пользователя в этом бандле, которые начинаются после него. Физического удаления grant-ов нет.

Checkout bridge

Владелец бандла может указать strict HTTPS в платных условиях бандла. доступен только вместе с информационной ценой и валютой бандла. Когда пользователь подтверждает дисклеймер платформы, Vector Trading создаёт checkout-сессию на 15 минут и открывает URL владельца, добавив в query string. Перед списанием оплаты checkout владельца должен прочитать эту сессию через API.

Получить checkout-сессию

curl -X GET "https://www.vector-trading.app/api/rest/v1/checkout/<checkoutId>" \  -H "Authorization: Bearer $VECTOR_API_KEY"

API ключ должен принадлежать владельцу бандла и иметь .

Ответ содержит , , , , текущие display-условия бандла (, , ) и не содержит . Перед списанием оплаты покажите пользователю и сумму платежа.

Ошибки

Частые случаи:

  • : API ключ отсутствует или некорректен
  • : у ключа нет нужного scope
  • : бандл, пользователь, grant или checkout-сессия не найдены
  • : некорректный параметр или тело запроса
  • : JSON body слишком большой
  • : body отправлен не как
  • : превышен лимит запросов
  • /: server error с generic public message и