Playground ↗
Русский

Обзор#

API Catapult обслуживает платформу деривативов на синтетические токены — торговлю и данные о токенах — через единую точку GraphQL для операций запрос/ответ и точку WebSocket для подписок в реальном времени.

Базовые эндпоинты#

Транспорт URL
GraphQL (HTTP) https://public-api.catapult.trade/graphql
WebSocket wss://public-api.catapult.trade/graphql

Все HTTP-запросы выполняются методом POST с JSON-телом вида { "query": "...", "variables": { ... } }.

Аутентификация#

Аутентифицированные операции используют JWT-токен (bearer), передаваемый в заголовке Authorization:

Authorization: Bearer <your-jwt-token>

Токен — это JSON Web Token (JWT), по умолчанию действительный 730 дней (≈2 года) с момента выпуска — обновляйте его до истечения срока. Публичен только ping; все остальные операции требуют bearer-токен, а для чтения, например tokens и turboToken, дополнительно нужно разрешение tokens.read.

Создание API-ключа#

Сгенерируйте токен в панели управления аккаунтом на catapult.trade/settings/api-key (Настройки → API Key). Управлять аккаунтом можно на catapult.trade.

Соглашения#

  • Идентификаторы — непрозрачные строки; не разбирайте их.
  • Денежные значения — строково-кодированные целые числа типа String! (например, balanceUsdtDrops) — разбирайте их как BigInt, а не как float. Единственный пользовательский скаляр — DateTime.
  • Метки времени используют скаляр DateTime (ISO-8601, UTC).
  • Списочные запросы пагинируются по курсору через input.pagination: limit (по умолчанию 10) и afterCursor / beforeCursor.

Быстрый пример#

query Tokens {
  # полный PublicTokenListInput и поля токена см. на вкладке Reference
  tokens(input: { pagination: { limit: 5 } }) {
    items { id }
  }
}

OAuth для API-ключа#

Эта ссылка позволяет получить API-ключ пользователя для создания различных функций, например копитрейдинга. Пользователь выдаёт разрешения для своего API-ключа, и он передаётся на ваш callback URL из белого списка.

https://catapult.trade/settings/api-key?bot_id=<WHITELISTED_BOT_ID>

Замените <WHITELISTED_BOT_ID> на идентификатор вашего бота из белого списка.

Внесение бота в белый список#

Внесите своего бота в белый список, связавшись с нашей командой разработчиков:

[email protected]

Единицы и соглашения#

Прочитайте это первым — каждое денежное поле API зависит от этих соглашений.

USDT drops (*UsdtDrops)#

Все суммы в USDT — целые числа вида USDT × 1,000,000 (6 знаков после запятой) с суффиксом UsdtDrops. Они передаются как String! (строково-кодированные целые числа) — разбирайте их как BigInt, а не как float.

Поле Сырое значение USDT
balanceUsdtDrops 6666670000 6,666.67

Преобразование: usdt = drops / 1e6 и drops = round(usdt × 1e6) — вычисляйте в BigInt.

Кредитное плечо (leverageX10)#

Плечо кодируется как плечо × 10. leverageX10: 125 означает 12.5×; 30 означает .

Залог и номинал#

notional = collateral × leverage. Сумма, которую вы вносите, — это залог (collateral); номинальная стоимость позиции в USDT — это номинал (notional).

При открытии позиции сумма — это залог до вычета комиссии. tradeOpen принимает ровно одно из usdtDrops (в USDT) или amountWei (в токенах) — движок выводит номинал из неё и плеча. Это не номинал.

Балансы#

userBalance { balanceUsdtDrops, inPositionsBalanceUsdtDrops }:

Поле Значение
balanceUsdtDrops Свободный баланс — до вычета комиссии, фактически списываемые USDT при открытии.
inPositionsBalanceUsdtDrops Залог, заблокированный в открытых позициях (после вычета комиссии).

Медиа токена (fileId)#

Изображение токена прикрепляется передачей fileId в tokenCreate. Получить его можно двумя способами:

  1. РандомайзерtokenRandomizedPreset возвращает готовый fileId (а также имя, символ, режим и т. д.), который можно сразу передать в tokenCreate.
  2. Своя загрузка — трёхшаговый процесс S3 presigned-POST:
    • fileUpload(input) → возвращает URL S3 presigned-POST и поля формы, которые клиент должен включить в multipart-POST.
    • Клиент отправляет (POST) изображение на этот URL S3 с этими полями формы.
    • fileFinalize(id) → отмечает загрузку завершённой после успешного S3 POST и возвращает публичный URL файла; используйте полученный файл как изображение токена.

Ограничения загрузки: только JPEG или PNG, максимум 5 МБ, минимум 314×314 px. Presigned POST должен завершиться в течение 15 секунд после вызова fileUpload, а загрузки ограничены 200 в час на IP.

Скоростные режимы токенов#

Каждый токен работает в одном из пяти скоростных режимов. Поле при создании/рандомизации — turboTokenMode; записи токенов содержат speedMode. SLOW и NORMAL — один и тот же режим под двумя именами.

Значения максимального плеча и времени жизни ниже — текущая конфигурация, которая может меняться на стороне сервера: считайте их актуальными значениями и сверяйтесь с живым запросом leverage-config.

Режим Типичное время жизни Макс. плечо (движок)
SLOW / NORMAL 4h 125×
FAST 1h 40×
FLASH 15mins 15×
CRACK 3mins
MAYHEM 30s

Максимальное плечо — фиксированный лимит движка#

Максимальное плечо каждого режима — жёсткий лимит, применяемый движком; используйте значение из таблицы напрямую. Движок отклоняет любой ордер выше него.

Комиссии и размер позиции#

Комиссия за открытие (~1%)#

При открытии позиции взимается комиссия за открытие ~1% (0.01), вычитаемая из отправляемого вами залога:

collateral_post_fee = collateral_sent × (1 − fee)

Чтобы заблокированный залог точно составил notional / leverage, отправьте:

collateral_sent = (notional / leverage) / (1 − fee)

Лимит номинала на позицию#

На стороне сервера действует лимит номинала на позицию — сейчас 20,000 USDT на (токен, плечо, сторону). Превышение возвращает Maximum notional limit … exceeded. Сверяйте точное значение с живой конфигурацией; оно может зависеть от режима или плеча.

Максимально доступная позиция (номинал)#

Пусть fee = 0.01, free = balanceUsdtDrops / 1e6, inPos = inPositionsBalanceUsdtDrops / 1e6, capTotal — ваш необязательный общий лимит залога, capPos — лимит номинала на позицию (~20,000), L — плечо:

maxCollateralFromBalance = free × (1 − fee)
remainingTotalBudget     = capTotal − inPos          # если используете общий лимит
maxNewCollateral         = min(maxCollateralFromBalance, remainingTotalBudget)
maxNotionalAchievable    = maxNewCollateral × L
maxPositionNotional      = min(maxNotionalAchievable, capPos)

Залог к отправке = (maxPositionNotional / L) / (1 − fee).

Подводный камень округления. После деления на (1 − fee) наивное round(collateral × 1e6) превышает лимит на несколько drops, и открытие отклоняется. Округляйте вниз залог в drops (BigInt) до небольшого шага (например, 10 drops = 0.00001 USDT) перед отправкой. Вы теряете ничтожную долю цента и остаётесь в пределах лимита при любом плече.

Разобранный пример#

FLASH, 3×, комиссия 1%, лимит 20,000 номинала:

collateral_post_fee target = 20,000 / 3        = 6,666.67
collateral_sent            = 6,666.67 / 0.99 ≈ 6,734.01   (округлено вниз в drops)
→ заблокировано после комиссии ≈ 6,666.67, номинал ≈ 20,000

Коды состояния#

Ответы GraphQL возвращают HTTP 200 даже при сбое операции — анализируйте массив errors[] и поле extensions.code каждой ошибки. Проблемы транспортного уровня используют стандартные коды HTTP.

Коды состояния HTTP#

Код Значение
200 Стандартный ответ. ВСЕ исходы операций — успех и ошибки, включая аутентификацию, права доступа, лимиты, отсутствие ресурса и бизнес-правила — возвращают 200; анализируйте errors[] и errors[].extensions.code.
400 Некорректный или недопустимый запрос GraphQL (ошибка разбора, неизвестное поле, неверная переменная).
500 Непредвиденная ошибка сервера. Можно повторить с экспоненциальной задержкой.

Сервис GraphQL возвращает ошибки аутентификации, прав доступа и лимитов внутри ответа как 200 (см. коды ошибок GraphQL). Транспортные 401 / 403 / 429 возникают только если вышестоящий шлюз/CDN отклоняет запрос до того, как он достигнет API.

Коды ошибок GraphQL#

Коды чувствительны к регистру; сопоставляйте точную строку. Доменные коды — в PascalCase (например, RateLimited); некоторые системные коды — в верхнем регистре через подчёркивание (например, UNAUTHENTICATED).

Код Значение
UNAUTHENTICATED Нет действительного токена, либо токен истёк/отключён, либо пользователь заблокирован.
BAD_USER_INPUT Аргумент или переменная не прошли валидацию.
GRAPHQL_VALIDATION_FAILED Запрос структурно некорректен (неизвестное поле/тип).
RateLimited Превышен лимит запросов (см. Ограничения запросов).
NotFound Указанный ресурс не существует.
InternalError Непредвиденная ошибка сервера.

Структура ошибки#

{
  "errors": [
    { "message": "Token not found", "extensions": { "code": "NotFound" } }
  ],
  "data": null
}

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

Операции GraphQL используют единый лимит-бакет, привязанный к API-токену (jti) и IP: 600 запросов/мин и 60 мутаций/мин. При превышении лимита возвращается ответ HTTP 200, в errors[] которого содержится единственная ошибка с extensions.code = RateLimited. API не возвращает статус 429 и заголовок Retry-After; подсказки по времени повторной попытки передаются в extensions ошибки.

Лимиты HTTP (GraphQL)#

Операция Лимит Окно
Запросы 600 1 минута
Мутации 60 1 минута

Лимиты WebSocket#

Область Лимит
Подписок на соединение 1000
Входящие сообщения 200 / сек (всплеск 400)
Тайм-аут connection_init 10 с (код закрытия 4408)

Лимиты WebSocket настраиваются на сервере, поэтому в проде они могут отличаться от этих значений по умолчанию. Лимиты применяются на соединение, а не на IP.

Заголовки ответа#

API не отправляет заголовки лимитов (X-RateLimit-*, Retry-After). Их может добавить вышестоящий шлюз; не полагайтесь на них.

Подводные камни и идемпотентность#

Чек-лист того, в чём интеграторы чаще всего ошибаются.

Деньги и размер#

  • Drops — целые числа — BigInt от начала до конца; никогда не разбирайте *UsdtDrops как float.
  • Отправляемая сумма открытия (usdtDrops или amountWei) — это залог до вычета комиссии, а не номинал.
  • Лимит номинала применяется в drops; округляйте вниз залог, чтобы избежать превышения на несколько drops (см. «Комиссии и размер позиции»).
  • Максимальное плечо — фиксированный лимит движка для каждого режима (см. «Скоростные режимы токенов») — используйте его напрямую.

Токены#

  • Рандомайзер возвращает случайный rank (Competition | Private | Public). Принудительно ставьте Public, если токен должен быть в листинге / доступен для копи-трейдинга.
  • tokenCreate всегда использует оплату с баланса — тип оплаты переопределить нельзя.
  • На стороне сервера нет флага «активно» у tokens — фильтруйте на клиенте по endDate.

Открытие и закрытие#

  • tradeOpen требует ровно одно из usdtDrops (в USDT) или amountWei (в токенах) — не оба и не ни одного.
  • tradeClose закрывает открытую позицию через USER_SELL.

Тейк-профит / стоп-лосс (tradeLimit*)#

  • tradeLimitCreate требует хотя бы один триггер (SL или TP).
  • При обновлении явный null для стороны очищает её; опущенное поле сохраняется.
  • tradeLimitUpdate отклоняет полностью пустой ввод (Validation failed: input=MissingValue) — используйте tradeLimitDelete для очистки.
  • Удаления по одной стороне нет; tradeLimitDelete удаляет обе — TP и SL.

Подписки (WebSocket)#

  • Аутентифицируйтесь в connection_init с payload: { Authorization: "Bearer <apiKey>" }.
  • Подписка positions транслирует объединение PublicPositionEventPublicPositionOpenedEvent | PublicPositionClosedEvent | PublicPositionUpdatedEvent. Сопоставляйте по полю type, прежде чем читать поля конкретного события.
  • PublicPositionClosedEvent содержит positionId, tokenId, type, closeType, closedAt, closePriceUsdtDrops, receivedAmountUsdtDrops, pnlUsdtDrops. Поля buyPriceUsdtDrops, collateralUsdtDrops, notionalUsdtDrops, leverageX10 принадлежат PublicPositionOpenedEvent, а не событию закрытия.
  • События закрытия доставляются как минимум один раз и не воспроизводятся повторно. Закрытие, отправленное во время переподключения, пропускается новой подпиской — опрашивайте каждую открытую позицию при (пере)подписке, чтобы отловить пропущенные закрытия, и устраняйте дубликаты по positionId.

WebSocket API#

Данные в реальном времени передаются по WebSocket-соединению по протоколу GraphQL over WebSocket (graphql-transport-ws). Используйте его для операций subscription, например для обновлений цен в реальном времени.

Соединение#

Откройте WebSocket по адресу:

wss://public-api.catapult.trade/graphql

Согласуйте подпротокол graphql-transport-ws. После открытия сокета отправьте сообщение connection_init; сервер ответит connection_ack.

Свойство Значение
URL wss://public-api.catapult.trade/graphql
Подпротокол graphql-transport-ws
Keep-alive сервер отправляет ping каждые 30 с; отвечайте pong
Макс. подписок 1000 на соединение

Жизненный цикл#

  1. Клиент открывает сокет с подпротоколом graphql-transport-ws.
  2. Клиент → {"type":"connection_init"}.
  3. Сервер → {"type":"connection_ack"}.
  4. Клиент → subscribe с уникальным id и документом GraphQL.
  5. Сервер → одно или несколько сообщений next, затем complete.

Подписка#

{
  "id": "1",
  "type": "subscribe",
  "payload": {
    "query": "subscription($t: ID!) { priceTicks(tokenId: $t) { tokenId price } }",
    "variables": { "t": "<tokenId>" }
  }
}

Сообщение с данными#

{
  "id": "1",
  "type": "next",
  "payload": { "data": { "priceTicks": { "tokenId": "tok_123", "price": "0.0123" } } }
}

Отписка#

Отправьте сообщение complete, чтобы остановить одну подписку; закройте сокет, чтобы остановить все.

{ "id": "1", "type": "complete" }

Ошибки#

Ошибки уровня операции приходят как сообщение error для соответствующего id:

{ "id": "1", "type": "error", "payload": [{ "message": "Token not found" }] }

Соединения, не отправившие connection_init в течение 10 секунд, закрываются с кодом 4408 (тайм-аут инициализации соединения).

Queries

boosterAvailability#

Глобальная доступность бустеров: активные/максимальные/доступные слоты и конфигурация по уровням (цена, длительность, буст очков, применимые режимы скорости).

boosterAvailability: PublicBoosterAvailabilityOutput!

Аргументы

Без аргументов.

boosters#

Все токены с активным в данный момент бустом, включая текущий процент доходности с учётом затухания по времени.

boosters: [PublicBoostedTokenOutput!]!

Аргументы

Без аргументов.

checkReferral#

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

checkReferral(referralUserId: ID!): PublicCheckReferralOutput

Аргументы

ИмяТипПо умолчаниюОписание
referralUserId ID!

closedPositions#

Список закрытых позиций аутентифицированного пользователя с курсорной пагинацией, новейшие первыми. Опционально фильтруется по одному токену.

closedPositions(input: PublicClosedPositionsInput!): PublicClosedPositionsOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicClosedPositionsInput!

ping#

Проверка работоспособности публичного GraphQL API. Возвращает "pong". Не требует аутентификации.

ping: String!

Аргументы

Без аргументов.

tokenChartData#

Chart candles and current price for a token.

tokenChartData(tokenId: ID!): PublicTokenChartDataOutput!

Аргументы

ИмяТипПо умолчаниюОписание
tokenId ID!

tokenRandomizedPreset#

Возвращает случайный пресет токена (имя, символ, аватар, флаги режима), полезный для предзаполнения полей создания токена.

tokenRandomizedPreset(allowedValues: TurboTokenPresetAllowedValuesInput): PublicTokenPresetOutput!

Аргументы

ИмяТипПо умолчаниюОписание
allowedValues TurboTokenPresetAllowedValuesInput

tokens#

Список токенов с курсорной пагинацией, сортировкой и фильтрацией.

tokens(input: PublicTokenListInput!): PublicTokenListOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicTokenListInput!

turboToken#

Получить один токен по id с агрегированной торговой статистикой.

turboToken(tokenId: ID!): PublicTokenDetailsOutput!

Аргументы

ИмяТипПо умолчаниюОписание
tokenId ID!

userBalance#

Баланс аутентифицированного пользователя. Возвращает свободный баланс и сумму, выделенную под открытые позиции, в USDT drops.

userBalance: PublicBalanceOutput!

Аргументы

Без аргументов.

userMe#

Профиль аутентифицированного пользователя. Не включает роль, атрибуцию kaito и информацию о сессии.

userMe: PublicUserOutput!

Аргументы

Без аргументов.

Mutations

boosterBuy#

Купить бустер для одного из токенов аутентифицированного пользователя. Возвращает true при успехе.

boosterBuy(input: PublicBoosterBuyInput!): Boolean!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicBoosterBuyInput!

claimAllCreatorFees#

Claim all available creator fees across tokens.

claimAllCreatorFees: PublicClaimAllCreatorFeesOutput!

Аргументы

Без аргументов.

claimCreatorFee#

Claim accumulated creator fees for a single token.

claimCreatorFee(input: PublicClaimCreatorFeeInput!): PublicClaimCreatorFeeOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicClaimCreatorFeeInput!

fileFinalize#

Отметить загрузку как завершённую после успешного S3 POST. Возвращает публичный URL файла.

fileFinalize(id: String!): PublicFileFinalizeOutput!

Аргументы

ИмяТипПо умолчаниюОписание
id String!

fileUpload#

Начать загрузку файла. Возвращает предподписанный S3 POST URL с полями формы, которые клиент должен включить в multipart-загрузку.

fileUpload(input: PublicFileUploadInput!): PublicFileUploadOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicFileUploadInput!

tokenCreate#

Создать новый turbo-токен. Всегда использует оплату с баланса; тип оплаты нельзя переопределить.

tokenCreate(input: PublicTokenCreateInput!): String!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicTokenCreateInput!

tradeClose#

Закрыть открытую позицию через USER_SELL.

tradeClose(input: PublicTradeCloseInput!): PublicTradeCloseOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicTradeCloseInput!

tradeLimitCreate#

Прикрепить SL/TP лимит к открытой позиции. Должен быть указан хотя бы один триггер (SL или TP).

tradeLimitCreate(input: PublicTradeLimitCreateInput!): PublicTradePositionOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicTradeLimitCreateInput!

tradeLimitDelete#

Удалить SL/TP лимит с открытой позиции.

tradeLimitDelete(input: PublicTradeLimitDeleteInput!): PublicTradePositionOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicTradeLimitDeleteInput!

tradeLimitUpdate#

Заменить SL/TP лимит на открытой позиции.

tradeLimitUpdate(input: PublicTradeLimitUpdateInput!): PublicTradePositionOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicTradeLimitUpdateInput!

tradeOpen#

Открыть позицию. В теле запроса должен быть указан ровно один из параметров: `usdtDrops` (в USDT) или `amountWei` (в токенах).

tradeOpen(input: PublicTradeOpenInput!): PublicTradePositionOutput!

Аргументы

ИмяТипПо умолчаниюОписание
input PublicTradeOpenInput!

Subscriptions

positions#

Поток событий по позициям для аутентифицированного пользователя. При инициализации выдаёт снимок каждой открытой позиции (каждая как POSITION_OPENED), затем транслирует в реальном времени события POSITION_OPENED / POSITION_CLOSED / POSITION_UPDATED.

positions: PublicPositionEvent!

Аргументы

Без аргументов.

priceTicks#

Тики цены токена в реальном времени в USDT.

priceTicks(tokenId: ID!): PublicPriceTick!

Аргументы

ИмяТипПо умолчаниюОписание
tokenId ID!

tokenCreated#

Поток новосозданных turbo-токенов

tokenCreated: PublicTokenCreatedEvent!

Аргументы

Без аргументов.

unclaimedReward#

Stream of unclaimed reward balances for the authenticated user.

unclaimedReward: PublicUnclaimedRewardOutput!

Аргументы

Без аргументов.

Objects

CursorPaginationMetaOutput object#

Поля

ИмяТипОписание
firstCursor String
hasNextItems Boolean!
hasPreviousItems Boolean!
lastCursor String

PublicBalanceOutput object#

Поля

ИмяТипОписание
balanceUsdtDrops String! Свободный баланс, доступный для торговли. USDT drops (1e6 = 1 USDT).
inPositionsBalanceUsdtDrops String! Капитал, выделенный в данный момент под открытые позиции. USDT drops.

PublicBoostedTokenOutput object#

Поля

ИмяТипОписание
avatarUrl String!
boostedUntil DateTime! Когда истекает буст.
boosterType TokenBoosterType!
currentReturnPercentage Float! Текущий процент доходности буста с учётом затухания по времени.
name String!
symbol String!
tokenId ID!

PublicBoosterAvailabilityOutput object#

Поля

ИмяТипОписание
active Int! Активные в данный момент слоты буста.
available Int! Оставшиеся свободные слоты буста (max - active, не менее 0).
max Int! Максимальное число одновременно забустенных токенов.
types [PublicBoosterTypeConfigOutput!]! Конфигурация для каждого доступного уровня бустера.

PublicBoosterTypeConfigOutput object#

Поля

ИмяТипОписание
availableModes [SpeedMode!]! Режимы скорости токена, к которым применим этот уровень.
durationSeconds Int! Длительность буста в секундах.
pointsBoost Float! Множитель очков, применяемый, пока буст активен.
priceUsdtDrops String! Цена этого уровня. USDT drops (1e6 = 1 USDT).
type TokenBoosterType!

PublicCandleOutput object#

Поля

ИмяТипОписание
close Float!
high Float!
low Float!
open Float!
time Float!

PublicCheckReferralOutput object#

Поля

ИмяТипОписание
balanceUsdtDrops String! Свободный баланс реферального пользователя. USDT drops (1e6 = 1 USDT).
user PublicMinimalUserOutput!

PublicClaimAllCreatorFeesOutput object#

Поля

ИмяТипОписание
balanceAfterUsdtDrops String!
claimedAmountUsdtDrops String!
claimedCount Int!

PublicClaimCreatorFeeOutput object#

Поля

ИмяТипОписание
claimedAmountUsdtDrops String!

PublicClosedPositionOutput object#

Поля

ИмяТипОписание
amountWei String! Количество токенов в wei.
boughtUsdtDrops Устарело String! Устарело; заменено на `paidAmountUsdtDrops`. Сумма в USDT drops (1e6 = 1 USDT).
buyPriceUsdtDrops String! Цена входа в USDT drops (1e6 = 1 USDT).
closePriceUsdtDrops String Цена закрытия в USDT drops (1e6 = 1 USDT); null до расчёта.
closeType TurboTokenPositionCloseType Каким образом была закрыта позиция (вручную, ликвидация и т. д.).
closedAt DateTime Когда позиция была закрыта/рассчитана; null, если ещё открыта.
collateralUsdtDrops String! Сумма залога в USDT drops (1e6 = 1 USDT).
currentPriceUsdtDrops String! Текущая цена в USDT drops (1e6 = 1 USDT).
endTimestamp DateTime! Запланированное время завершения позиции.
id ID!
isScoreBoosted Boolean! Был ли счёт позиции забустен.
leverageX10 Int! Кредитное плечо X10 (10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
limit PublicTradeLimitOutput Прикреплённый лимит stop-loss / take-profit, если есть.
liquidationPriceUsdtDrops String Цена ликвидации в USDT drops (1e6 = 1 USDT); null для SPOT 1x LONG.
notionalUsdtDrops String! Номинальная стоимость в USDT drops (collateral * leverage, 1e6 = 1 USDT).
paidAmountUsdtDrops String! Сумма, уплаченная за открытие позиции, в USDT drops (1e6 = 1 USDT).
pnlUsdtDrops String! Реализованный PnL в USDT drops (1e6 = 1 USDT).
positionType PositionType! Тип позиции: SPOT (1x LONG) или FUTURES (LONG / SHORT с плечом).
realizedFeesUsdtDrops String! Суммарные комиссии, уплаченные за эту позицию, в USDT drops (1e6 = 1 USDT).
scoreForPosition Float! Счёт программы очков, начисленный за эту позицию.
side PositionSide! Сторона позиции: LONG или SHORT.
timestamp DateTime! Когда позиция была открыта.
token PublicClosedPositionTokenInfoOutput! Токен, на котором открыта эта позиция.

PublicClosedPositionsOutput object#

Поля

ИмяТипОписание
items [PublicClosedPositionOutput!]! Страница закрытых позиций, новейшие первыми.
meta CursorPaginationMetaOutput! Метаданные курсорной пагинации.

PublicClosedPositionTokenInfoOutput object#

Поля

ИмяТипОписание
avatarUrl String!
id String!
name String!
rank TurboTokenRank! Ранг/уровень токена.
speedMode SpeedMode! Режим торговой скорости токена.
symbol String!
tokenDecimals Int! Число десятичных знаков для количества токена.

PublicFileFinalizeOutput object#

Поля

ИмяТипОписание
id ID!
url String! Публичный URL финализированного файла.

PublicFileUploadOutput object#

Поля

ИмяТипОписание
fields [PublicFormField!]! Поля формы для предподписанного S3 POST. Добавьте каждую пару (key, value) в ваш `FormData`, затем добавьте `file` последним.
id ID! Id файла; передайте в `fileFinalize` после S3 POST.
uploadUrl String! URL, на который нужно отправить multipart-форму методом POST.

PublicFormField object#

Поля

ИмяТипОписание
key String!
value String!

PublicMinimalUserOutput object#

Поля

ИмяТипОписание
avatarToken String!
id ID!
profileName String!

PublicPositionOpenedEvent object#

Поля

ИмяТипОписание
amountWei String!
buyPriceUsdtDrops String! Цена входа в USDT drops.
collateralUsdtDrops String! Сумма залога в USDT drops (ввод пользователя за вычетом комиссий).
currentPriceUsdtDrops String! Текущая цена в USDT drops.
leverageX10 Int!
limit PublicTradeLimitOutput
liquidationPriceUsdtDrops String Цена ликвидации в USDT drops (null для SPOT 1x LONG).
notionalUsdtDrops String! Номинальная стоимость в USDT drops (collateral * leverage).
paidAmountUsdtDrops String! Уплаченная сумма в USDT drops.
pnlUsdtDrops String! PnL в реальном времени в USDT drops.
positionId ID!
positionType PositionType!
side PositionSide!
timestamp DateTime!
tokenId String!
type TurboTokenPositionEventType!

PublicPriceTick object#

Поля

ИмяТипОписание
price Float!
tokenId ID!

PublicTokenListItemOutput object#

Поля

ИмяТипОписание
avatarUrl String!
boostedUntil DateTime Когда истекает активный буст на этом токене, или null, если буст не активен.
buysCount Int!
creator PublicMinimalUserOutput!
description String
endDate DateTime!
id ID!
initialPrice Float!
name String!
price Float!
rank TurboTokenRank!
sellsCount Int!
speedMode SpeedMode!
startDate DateTime!
symbol String!
uniqueTradersCount Int!
volumeUsdtDrops String! Совокупный торговый объём (USDT drops, 1e6 = 1 USDT).

PublicTokenPresetOutput object#

Поля

ИмяТипОписание
avatarUrl String!
description String
fileId String!
name String!
priceMode TurboPriceMode!
rank TurboTokenRank!
speedMode SpeedMode!
symbol String!
turboTokenMode TurboTokenMode!
xLink String

PublicTokenStatisticsOutput object#

Поля

ИмяТипОписание
buysCount Int!
nonMmVolumeFromBoostersUsdtDrops String!
sellsCount Int!
totalVolumeUsdtDrops String!
uniqueTradersCount Int!
volumeFromBoostersUsdtDrops String!

PublicTradeCloseOutput object#

Поля

ИмяТипОписание
amountUsdtDrops String! Сумма позиции в USDT drops без комиссий.
closePriceUsdtDrops String!
closeType TurboTokenPositionCloseType! Каким образом была закрыта позиция.
closedAt DateTime!
leverageX10 Int! Кредитное плечо X10 (10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
paidAmountUsdtDrops String! Уплаченная сумма в USDT drops.
pnlPercentage String!
pnlUsdtDrops String!
positionId String!
positionType PositionType! Тип позиции (SPOT или FUTURES).
receivedAmountUsdtDrops String! Сумма, полученная после закрытия позиции, в USDT drops.
side PositionSide! Сторона позиции (LONG или SHORT).
tokenId String!
totalCloseFeeUsdtDrops String! Комиссия за закрытие + комиссия с прибыли в USDT drops.

PublicTradeLimitOutput object#

Поля

ИмяТипОписание
positionId ID! Id позиции, к которой прикреплён этот лимит.
slTriggerPnlUsdtDrops String Триггерный PnL stop-loss в USDT drops (1e6 = 1 USDT); null, если не задан.
slTriggerPriceUsdtDrops String Триггерная цена stop-loss в USDT drops (1e6 = 1 USDT); null, если не задана.
tokenId String! Id токена, которым торгует позиция.
tpTriggerPnlUsdtDrops String Триггерный PnL take-profit в USDT drops (1e6 = 1 USDT); null, если не задан.
tpTriggerPriceUsdtDrops String Триггерная цена take-profit в USDT drops (1e6 = 1 USDT); null, если не задана.
userId String! Id пользователя-владельца.

PublicTradePositionOutput object#

Поля

ИмяТипОписание
amountUsdtDrops String!
amountWei String!
collateralUsdtDrops String! Сумма залога в USDT drops (ввод пользователя за вычетом комиссий).
id ID!
leverageX10 Int!
limit PublicTradeLimitOutput
liquidationPriceUsdtDrops String Цена ликвидации в USDT drops (null для SPOT 1x LONG).
notionalUsdtDrops String! Номинальная стоимость в USDT drops (collateral * leverage).
positionType PositionType!
priceUsdtDrops String!
side PositionSide!
timestamp DateTime!

PublicUserOutput object#

Поля

ИмяТипОписание
avatarToken String!
createdAt DateTime!
description String
evmWalletAddress String
id ID!
profileName String!
referralCode String!
solanaWalletAddress String
status UserStatus!
telegram String
tiktok String
twitter String
waitlistEmail String
walletType UserWalletType!
xUsername String

Unions

Input Types

CursorPaginationInput input#

Поля

ИмяТипОписание
afterCursor String
beforeCursor String
last Boolean Вернуть последние элементы согласно `limit`
limit Float!

PublicBoosterBuyInput input#

Поля

ИмяТипОписание
boosterType TokenBoosterType! Уровень бустера для покупки.
tokenId String! Id токена для буста.
usePackageCredits Boolean! Оплатить кредитами пакета creator-program вместо денежного баланса.

PublicClaimCreatorFeeInput input#

Поля

ИмяТипОписание
tokenId ID!

PublicClosedPositionsInput input#

Поля

ИмяТипОписание
pagination CursorPaginationInput!
tokenId ID Ограничить одним токеном; опустите для всех токенов.

PublicFileUploadInput input#

Поля

ИмяТипОписание
mimeType String! MIME-тип загружаемого файла, например `image/png`.
size Int! Размер файла в байтах.

PublicTokenCreateInput input#

Поля

ИмяТипОписание
buyUsdtDrops String Начальная сумма покупки в USDT drops (1e6 = 1 USDT).
description String
fileId String Id файла, возвращённый из `fileFinalize`.
name String!
priceMode TurboPriceMode
rank TurboTokenRank
symbol String!
turboTokenMode TurboTokenMode
xLink String

PublicTradeCloseInput input#

Поля

ИмяТипОписание
positionId ID!
tokenId ID!

PublicTradeLimitConfigInput input#

Поля

ИмяТипОписание
slTriggerPnlUsdtDrops String PnL в USDT drops для stop loss (отрицательное значение).
slTriggerPricePercentage Float Процент от цены входа в десятичном формате, где 1 = 100%, 0.5 = 50%. LONG: должно быть < 1, SHORT: должно быть > 1.
slTriggerPriceUsdtDrops String
tpTriggerPnlUsdtDrops String PnL в USDT drops для take profit (положительное значение).
tpTriggerPricePercentage Float Процент от цены входа в десятичном формате, где 1 = 100%, 2 = 200% и т. д. LONG: должно быть > 1, SHORT: должно быть < 1.
tpTriggerPriceUsdtDrops String

PublicTradeLimitDeleteInput input#

Поля

ИмяТипОписание
positionId String!

PublicTradeOpenInput input#

Поля

ИмяТипОписание
amountWei String Количество токенов в wei для покупки. Взаимоисключающе с `usdtDrops`.
leverageX10 Int! Кредитное плечо X10 (10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
side PositionSide!
tokenId ID!
type PositionType!
usdtDrops String Общее количество USDT drops к расходу (collateral + fees). Взаимоисключающе с `amountWei`.

TurboTokenListFilterInput input#

Поля

ИмяТипОписание
rank TurboTokenRank
speedMode [SpeedMode!]
userId String

Enums

PositionSide enum#

Значения

ИмяОписание
LONG
SHORT

PositionType enum#

Тип позиции: SPOT (1x LONG) или FUTURES (LONG / SHORT с плечом)

Значения

ИмяОписание
FUTURES
SPOT

PublicUnclaimedBalanceType enum#

Значения

ИмяОписание
BONDED_TURBO_TOKEN_FEE
CREATOR_FEE
CREATOR_PROGRAM_REFERRAL_REWARD
MINDSHARE_REWARD
PRESALE_REFERRAL_REWARD
REFERRAL_REWARD
SEASON_REWARD

SortDirection enum#

Значения

ИмяОписание
Asc
Desc

SpeedMode enum#

Значения

ИмяОписание
CRACK
FAST
FLASH
MAYHEM
NORMAL

TokenBoosterType enum#

Значения

ИмяОписание
B1
B2
B3
B4
B5
B6

TurboPriceMode enum#

Значения

ИмяОписание
FiveHundred
Hundred
One
Ten

TurboTokenListSorting enum#

Значения

ИмяОписание
BuysCount
SellsCount
StartTime
TimeLeft
TradersCount
Volume

TurboTokenMode enum#

Значения

ИмяОписание
Crack
Fast
Flash
Mayhem
Slow

TurboTokenPositionCloseType enum#

Значения

ИмяОписание
EXPIRED
LIQUIDATION
STOP_LOSS
TAKE_PROFIT
USER_SELL

TurboTokenPositionEventType enum#

Значения

ИмяОписание
POSITION_CLOSED
POSITION_OPENED
POSITION_UPDATED

TurboTokenRank enum#

Значения

ИмяОписание
Competition
Private
Public

UserStatus enum#

Значения

ИмяОписание
GUEST
MEMBER

UserWalletType enum#

Значения

ИмяОписание
Embedded
External

Scalars

DateTime scalar#

Строка даты-времени в UTC, например 2019-12-03T09:54:33Z, соответствующая формату date-time.