Русский

Обзор#

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#

Global booster availability: active/max/available slots and per-tier configuration (price, duration, points boost, applicable speed modes).

boosterAvailability: PublicBoosterAvailabilityOutput!

Аргументы

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

boosters#

All tokens with a currently active boost, including the time-decayed current return percentage.

boosters: [PublicBoostedTokenOutput!]!

Аргументы

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

checkReferral#

Returns the referral's minimal profile and free USDT balance when the given user ID is one of the caller's referrals. Returns null when the user is not a referral of the authenticated caller (or does not exist).

checkReferral(referralUserId: ID!): PublicCheckReferralOutput

Аргументы

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

closedPositions#

Cursor-paginated list of the authenticated user's closed positions, newest first. Optionally filtered to a single token.

closedPositions(input: PublicClosedPositionsInput!): PublicClosedPositionsOutput!

Аргументы

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

ping#

Health probe for the public GraphQL API. Returns "pong". Does not require authentication.

ping: String!

Аргументы

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

tokenRandomizedPreset#

Returns a randomized token preset (name, symbol, avatar, mode flags) useful for pre-filling token creation inputs.

tokenRandomizedPreset(allowedValues: TurboTokenPresetAllowedValuesInput): PublicTokenPresetOutput!

Аргументы

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

tokens#

List tokens with cursor pagination, sort, and filter.

tokens(input: PublicTokenListInput!): PublicTokenListOutput!

Аргументы

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

turboToken#

Get a single token by id with aggregated trading statistics.

turboToken(tokenId: ID!): PublicTokenDetailsOutput!

Аргументы

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

userBalance#

Authenticated user balance. Returns free balance and amount allocated to open positions, in USDT drops.

userBalance: PublicBalanceOutput!

Аргументы

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

userMe#

Authenticated user profile. Excludes role, kaito attribution, and session info.

userMe: PublicUserOutput!

Аргументы

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

Mutations

boosterBuy#

Purchase a booster for one of the authenticated user's tokens. Returns true on success.

boosterBuy(input: PublicBoosterBuyInput!): Boolean!

Аргументы

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

fileFinalize#

Mark an upload as finished after the S3 POST succeeds. Returns the public file URL.

fileFinalize(id: String!): PublicFileFinalizeOutput!

Аргументы

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

fileUpload#

Start a file upload. Returns an S3 presigned-POST URL with form fields the client must include in the multipart upload.

fileUpload(input: PublicFileUploadInput!): PublicFileUploadOutput!

Аргументы

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

tokenCreate#

Create a new turbo token. Always uses balance-based payment; payment type cannot be overridden.

tokenCreate(input: PublicTokenCreateInput!): String!

Аргументы

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

tradeClose#

Close an open position via USER_SELL.

tradeClose(input: PublicTradeCloseInput!): PublicTradeCloseOutput!

Аргументы

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

tradeLimitCreate#

Attach an SL/TP limit to an open position. At least one trigger (SL or TP) must be specified.

tradeLimitCreate(input: PublicTradeLimitCreateInput!): PublicTradePositionOutput!

Аргументы

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

tradeLimitDelete#

Remove the SL/TP limit from an open position.

tradeLimitDelete(input: PublicTradeLimitDeleteInput!): PublicTradePositionOutput!

Аргументы

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

tradeLimitUpdate#

Replace the SL/TP limit on an open position.

tradeLimitUpdate(input: PublicTradeLimitUpdateInput!): PublicTradePositionOutput!

Аргументы

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

tradeOpen#

Open a position. Body must specify exactly one of `usdtDrops` (USDT-denominated) or `amountWei` (token-denominated).

tradeOpen(input: PublicTradeOpenInput!): PublicTradePositionOutput!

Аргументы

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

Subscriptions

positions#

Stream of position events for the authenticated user. Emits a snapshot of every open position once at start (as POSITION_OPENED), then live POSITION_OPENED / POSITION_CLOSED / POSITION_UPDATED events.

positions: PublicPositionEvent!

Аргументы

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

priceTicks#

Live price ticks for a token in USDT.

priceTicks(tokenId: ID!): PublicPriceTick!

Аргументы

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

tokenCreated#

Stream of newly created turbo tokens

tokenCreated: PublicTokenCreatedEvent!

Аргументы

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

Objects

CursorPaginationMetaOutput object#

Поля

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

PublicBalanceOutput object#

Поля

ИмяТипОписание
balanceUsdtDrops String! Free balance available for trading. USDT drops (1e6 = 1 USDT).
inPositionsBalanceUsdtDrops String! Capital currently allocated to open positions. USDT drops.

PublicBoostedTokenOutput object#

Поля

ИмяТипОписание
avatarUrl String!
boostedUntil DateTime! When the boost expires.
boosterType TokenBoosterType!
currentReturnPercentage Float! Current time-decayed return percentage of the boost.
name String!
symbol String!
tokenId ID!

PublicBoosterAvailabilityOutput object#

Поля

ИмяТипОписание
active Int! Boost slots currently active.
available Int! Remaining free boost slots (max - active, floored at 0).
max Int! Maximum number of concurrently boosted tokens.
types [PublicBoosterTypeConfigOutput!]! Configuration for each available booster tier.

PublicBoosterTypeConfigOutput object#

Поля

ИмяТипОписание
availableModes [SpeedMode!]! Token speed modes this tier can be applied to.
durationSeconds Int! Boost duration in seconds.
pointsBoost Float! Points multiplier applied while the boost is active.
priceUsdtDrops String! Price of this tier. USDT drops (1e6 = 1 USDT).
type TokenBoosterType!

PublicCheckReferralOutput object#

Поля

ИмяТипОписание
balanceUsdtDrops String! Free balance of the referral user. USDT drops (1e6 = 1 USDT).
user PublicMinimalUserOutput!

PublicClosedPositionOutput object#

Поля

ИмяТипОписание
amountWei String! Token amount in wei.
boughtUsdtDrops Устарело String! Deprecated; superseded by `paidAmountUsdtDrops`. Amount in USDT drops (1e6 = 1 USDT).
buyPriceUsdtDrops String! Entry price in USDT drops (1e6 = 1 USDT).
closePriceUsdtDrops String Close price in USDT drops (1e6 = 1 USDT); null until settled.
closeType TurboTokenPositionCloseType How the position was closed (manual, liquidation, etc.).
closedAt DateTime When the position was closed/settled; null if still open.
collateralUsdtDrops String! Collateral amount in USDT drops (1e6 = 1 USDT).
currentPriceUsdtDrops String! Current price in USDT drops (1e6 = 1 USDT).
endTimestamp DateTime! Scheduled end time of the position.
id ID!
isScoreBoosted Boolean! Whether the position score was boosted.
leverageX10 Int! Leverage X10 (10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
limit PublicTradeLimitOutput Attached stop-loss / take-profit limit, if any.
liquidationPriceUsdtDrops String Liquidation price in USDT drops (1e6 = 1 USDT); null for SPOT 1x LONG.
notionalUsdtDrops String! Notional value in USDT drops (collateral * leverage, 1e6 = 1 USDT).
paidAmountUsdtDrops String! Amount paid to open the position in USDT drops (1e6 = 1 USDT).
pnlUsdtDrops String! Realized PnL in USDT drops (1e6 = 1 USDT).
positionType PositionType! Position type: SPOT (1x LONG) or FUTURES (leveraged LONG / SHORT).
realizedFeesUsdtDrops String! Total fees paid for this position in USDT drops (1e6 = 1 USDT).
scoreForPosition Float! Points-program score earned for this position.
side PositionSide! Position side: LONG or SHORT.
timestamp DateTime! When the position was opened.
token PublicClosedPositionTokenInfoOutput! The token this position was opened on.

PublicClosedPositionTokenInfoOutput object#

Поля

ИмяТипОписание
avatarUrl String!
id String!
name String!
rank TurboTokenRank! Rank/tier of the token.
speedMode SpeedMode! Trading speed mode of the token.
symbol String!
tokenDecimals Int! Number of decimals for the token amount.

PublicFileFinalizeOutput object#

Поля

ИмяТипОписание
id ID!
url String! Public URL of the finalized file.

PublicFileUploadOutput object#

Поля

ИмяТипОписание
fields [PublicFormField!]! Form fields for the S3 presigned POST. Append each (key, value) to your `FormData`, then append `file` last.
id ID! File id; pass to `fileFinalize` after the S3 POST.
uploadUrl String! URL to POST the multipart form to.

PublicFormField object#

Поля

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

PublicMinimalUserOutput object#

Поля

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

PublicPositionOpenedEvent object#

Поля

ИмяТипОписание
amountWei String!
buyPriceUsdtDrops String! Entry price in USDT drops.
collateralUsdtDrops String! Collateral amount in USDT drops (user input minus fees).
currentPriceUsdtDrops String! Current price in USDT drops.
leverageX10 Int!
limit PublicTradeLimitOutput
liquidationPriceUsdtDrops String Liquidation price in USDT drops (null for SPOT 1x LONG).
notionalUsdtDrops String! Notional value in USDT drops (collateral * leverage).
paidAmountUsdtDrops String! Paid amount in USDT drops.
pnlUsdtDrops String! Live PnL in 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 When the active boost on this token expires, or null if not boosted.
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! Cumulative trade volume (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!
sellsCount Int!
totalVolumeUsdtDrops String!
uniqueTradersCount Int!
volumeFromBoostersUsdtDrops String!

PublicTradeCloseOutput object#

Поля

ИмяТипОписание
amountUsdtDrops String! Position amount in USDT drops without fees.
closePriceUsdtDrops String!
closeType TurboTokenPositionCloseType! How the position was closed.
closedAt DateTime!
leverageX10 Int! Leverage X10 (10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
paidAmountUsdtDrops String! Paid amount in USDT drops.
pnlPercentage String!
pnlUsdtDrops String!
positionId String!
positionType PositionType! Position type (SPOT or FUTURES).
receivedAmountUsdtDrops String! Amount received after closing position in USDT drops.
side PositionSide! Position side (LONG or SHORT).
tokenId String!
totalCloseFeeUsdtDrops String! Close fee + profit fee in USDT drops.

PublicTradeLimitOutput object#

Поля

ИмяТипОписание
positionId ID! Id of the position this limit is attached to.
slTriggerPnlUsdtDrops String Stop-loss trigger PnL in USDT drops (1e6 = 1 USDT); null if unset.
slTriggerPriceUsdtDrops String Stop-loss trigger price in USDT drops (1e6 = 1 USDT); null if unset.
tokenId String! Id of the token the position trades.
tpTriggerPnlUsdtDrops String Take-profit trigger PnL in USDT drops (1e6 = 1 USDT); null if unset.
tpTriggerPriceUsdtDrops String Take-profit trigger price in USDT drops (1e6 = 1 USDT); null if unset.
userId String! Id of the owning user.

PublicTradePositionOutput object#

Поля

ИмяТипОписание
amountUsdtDrops String!
amountWei String!
collateralUsdtDrops String! Collateral amount in USDT drops (user input minus fees).
id ID!
leverageX10 Int!
limit PublicTradeLimitOutput
liquidationPriceUsdtDrops String Liquidation price in USDT drops (null for SPOT 1x LONG).
notionalUsdtDrops String! Notional value in 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 Return last items according to `limit`
limit Float!

PublicBoosterBuyInput input#

Поля

ИмяТипОписание
boosterType TokenBoosterType! Booster tier to purchase.
tokenId String! Id of the token to boost.
usePackageCredits Boolean! Pay with creator-program package credits instead of the cash balance.

PublicClosedPositionsInput input#

Поля

ИмяТипОписание
pagination CursorPaginationInput!
tokenId ID Restrict to a single token; omit for all tokens.

PublicFileUploadInput input#

Поля

ИмяТипОписание
mimeType String! MIME type of the file to upload, e.g. `image/png`.
size Int! File size in bytes.

PublicTokenCreateInput input#

Поля

ИмяТипОписание
buyUsdtDrops String Initial buy amount in USDT drops (1e6 = 1 USDT).
description String
fileId String File id returned from `fileFinalize`.
name String!
priceMode TurboPriceMode
rank TurboTokenRank
symbol String!
turboTokenMode TurboTokenMode
xLink String

PublicTradeCloseInput input#

Поля

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

PublicTradeLimitConfigInput input#

Поля

ИмяТипОписание
slTriggerPnlUsdtDrops String PnL in USDT drops for stop loss (negative value).
slTriggerPricePercentage Float Percentage of the entry price in decimal format where 1 = 100%, 0.5 = 50%. LONG: must be < 1, SHORT: must be > 1.
slTriggerPriceUsdtDrops String
tpTriggerPnlUsdtDrops String PnL in USDT drops for take profit (positive value).
tpTriggerPricePercentage Float Percentage of the entry price in decimal format where 1 = 100%, 2 = 200%, etc. LONG: must be > 1, SHORT: must be < 1.
tpTriggerPriceUsdtDrops String

PublicTradeLimitDeleteInput input#

Поля

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

PublicTradeOpenInput input#

Поля

ИмяТипОписание
amountWei String Token amount in wei to buy. Mutually exclusive with `usdtDrops`.
leverageX10 Int! Leverage X10 (10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
side PositionSide!
tokenId ID!
type PositionType!
usdtDrops String Total USDT drops to spend (collateral + fees). Mutually exclusive with `amountWei`.

TurboTokenListFilterInput input#

Поля

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

Enums

PositionSide enum#

Значения

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

PositionType enum#

Position type: SPOT (1x LONG) or FUTURES (leveraged LONG / SHORT)

Значения

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

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#

A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format.