English

Overview#

The Catapult API powers a synthetic-token derivatives platform — trading and token data — through a single GraphQL endpoint for request/response operations, and a WebSocket endpoint for real-time subscriptions.

Base endpoints#

Transport URL
GraphQL (HTTP) https://public-api.catapult.trade/graphql
WebSocket wss://public-api.catapult.trade/graphql

All HTTP requests use POST with a JSON body of the shape { "query": "...", "variables": { ... } }.

Authentication#

Authenticated operations use a JWT bearer token, sent in the Authorization header:

Authorization: Bearer <your-jwt-token>

The token is a JSON Web Token (JWT), valid for 730 days (≈2 years) from issue by default — rotate it before it expires. Only ping is public; every other operation requires the bearer token, and reads such as tokens and turboToken also need the tokens.read permission.

Create an API key#

Generate your token from your account dashboard at catapult.trade/settings/api-key (Settings → API Key). You can manage your account at catapult.trade.

Conventions#

  • IDs are opaque strings; do not parse them.
  • Monetary amounts are string-encoded integers typed String! (e.g. balanceUsdtDrops) — parse them as BigInt, never as floats. The only custom scalar is DateTime.
  • Timestamps use the DateTime scalar (ISO-8601, UTC).
  • List queries are cursor-paginated via input.pagination: limit (default 10) with afterCursor / beforeCursor.

Quick example#

query Tokens {
  # see the Reference tab for the full PublicTokenListInput and token fields
  tokens(input: { pagination: { limit: 5 } }) {
    items { id }
  }
}

API Key oAuth#

This link lets you obtain a user's API key to build features such as copy trading. The user grants the permissions on their API key, and it is passed to your whitelisted callback URL.

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

Replace <WHITELISTED_BOT_ID> with your bot's whitelisted ID.

Whitelisting of the bot#

Whitelist your bot by contacting our developer team:

[email protected]

Units & conventions#

Read this first — every monetary field on the API depends on these conventions.

USDT drops (*UsdtDrops)#

All USDT amounts are integers of USDT × 1,000,000 (6 decimals), named with a UsdtDrops suffix. They are sent as String! (string-encoded integers) — parse them as BigInt, never as floats.

Field Raw value USDT
balanceUsdtDrops 6666670000 6,666.67

Convert with usdt = drops / 1e6 and drops = round(usdt × 1e6) — compute in BigInt.

Leverage (leverageX10)#

Leverage is encoded as leverage × 10. leverageX10: 125 means 12.5×; 30 means .

Collateral vs notional#

notional = collateral × leverage. The amount you put up is collateral; the position's USDT face value is notional.

When opening a position the amount is collateral, pre-fee. tradeOpen takes exactly one of usdtDrops (USDT-denominated) or amountWei (token-denominated) — the engine derives the notional from it and the leverage. It is not the notional.

Balances#

userBalance { balanceUsdtDrops, inPositionsBalanceUsdtDrops }:

Field Meaning
balanceUsdtDrops Free balance — pre-fee, the USDT actually moved when opening.
inPositionsBalanceUsdtDrops Collateral currently locked in open positions (post-fee).

Token media (fileId)#

A token image is attached by passing a fileId to tokenCreate. There are two ways to get one:

  1. RandomizertokenRandomizedPreset returns a ready-to-use fileId (plus a name, symbol, mode, etc.) that you can pass straight to tokenCreate.
  2. Custom upload — a three-step S3 presigned-POST flow:
    • fileUpload(input) → returns an S3 presigned-POST URL plus the form fields the client must include in the multipart POST.
    • The client POSTs the image to that S3 URL with those exact form fields.
    • fileFinalize(id) → marks the upload finished after the S3 POST succeeds and returns the public file URL; use the resulting file as the token's image.

Upload limits: JPEG or PNG only, 5 MB max, minimum 314×314 px. The presigned POST must complete within 15 seconds of the fileUpload call, and uploads are rate-limited to 200 per hour per IP.

Token speed modes#

Every token runs in one of five speed modes. The create/randomize field is turboTokenMode; token records expose speedMode. SLOW and NORMAL are the same mode under two names.

Max-leverage and lifetime values below are current configuration that can change server-side — treat them as current values and verify against the live leverage-config query.

Mode Typical lifetime Max leverage (engine)
SLOW / NORMAL 4h 125×
FAST 1h 40×
FLASH 15mins 15×
CRACK 3mins
MAYHEM 30s

Max leverage is a fixed engine cap#

Each mode's max leverage is a hard cap enforced by the engine — use the value in the table directly. The engine rejects any order above it.

Fees & position sizing#

Open fee (~1%)#

Opening a position charges an open fee of ~1% (0.01), deducted from the collateral you send:

collateral_post_fee = collateral_sent × (1 − fee)

To make the locked collateral land exactly at notional / leverage, send:

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

Per-position notional cap#

A per-position notional cap is enforced server-side — currently 20,000 USDT per (token, leverage, side). Exceeding it returns Maximum notional limit … exceeded. Verify the exact value against the live config; it may vary by mode or leverage.

Max available position (notional)#

Let fee = 0.01, free = balanceUsdtDrops / 1e6, inPos = inPositionsBalanceUsdtDrops / 1e6, capTotal = your own optional total-collateral cap, capPos = per-position notional cap (~20,000), L = leverage:

maxCollateralFromBalance = free × (1 − fee)
remainingTotalBudget     = capTotal − inPos          # if you enforce a total cap
maxNewCollateral         = min(maxCollateralFromBalance, remainingTotalBudget)
maxNotionalAchievable    = maxNewCollateral × L
maxPositionNotional      = min(maxNotionalAchievable, capPos)

Collateral to actually send = (maxPositionNotional / L) / (1 − fee).

Rounding pitfall. After the /(1 − fee) division, a naive round(collateral × 1e6) overshoots the cap by a few drops and the open is rejected. Floor the collateral in drops (BigInt) to a small step (e.g. 10 drops = 0.00001 USDT) before sending. You lose a negligible fraction of a cent and stay under the cap at any leverage.

Worked example#

FLASH, 3×, fee 1%, cap 20,000 notional:

collateral_post_fee target = 20,000 / 3        = 6,666.67
collateral_sent            = 6,666.67 / 0.99 ≈ 6,734.01   (floored in drops)
→ locked post-fee ≈ 6,666.67, notional ≈ 20,000

Status Codes#

GraphQL responses return HTTP 200 even when an operation fails — inspect the errors[] array and each error's extensions.code. Transport-level problems use standard HTTP status codes.

HTTP status codes#

Code Meaning
200 Standard response. ALL operation outcomes — success and failures including authentication, permission, rate-limit, not-found and business-rule errors — return 200; inspect errors[] and errors[].extensions.code.
400 Malformed or invalid GraphQL request (parse error, unknown field, bad variable).
500 Unexpected server error. Safe to retry with backoff.

The GraphQL service returns auth, permission and rate-limit failures in-band as 200 responses (see GraphQL error codes). Transport-level 401 / 403 / 429 only occur if an upstream gateway/CDN rejects the request before it reaches the API.

GraphQL error codes#

Codes are case-sensitive; match the exact string. Domain codes are PascalCase (e.g. RateLimited); some framework codes are upper snake-case (e.g. UNAUTHENTICATED).

Code Meaning
UNAUTHENTICATED No valid token, or the token is expired/disabled, or the user is blocked.
BAD_USER_INPUT An argument or variable failed validation.
GRAPHQL_VALIDATION_FAILED The query is structurally invalid (unknown field/type).
RateLimited Rate limit exceeded (see Rate Limits).
NotFound A referenced resource does not exist.
InternalError Unexpected server error.

Error shape#

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

Rate Limits#

GraphQL operations share a single rate-limit bucket, keyed per API token (jti) and IP: 600 queries/min and 60 mutations/min. Exceeding a limit returns an HTTP 200 response whose errors[] contains a single error with extensions.code = RateLimited. The API does not send a 429 status or a Retry-After header; retry-timing hints are included in the error's extensions.

HTTP (GraphQL) limits#

Operation Limit Window
Queries 600 1 minute
Mutations 60 1 minute

WebSocket limits#

Scope Limit
Subscriptions per connection 1000
Inbound messages 200 / second (burst 400)
connection_init timeout 10s (close code 4408)

WebSocket limits are server-configurable, so production may differ from these defaults. Connection limits are enforced per connection, not per IP.

Response headers#

The API does not emit rate-limit headers (X-RateLimit-*, Retry-After). An upstream gateway may add them; do not depend on them.

Gotchas & idempotency#

A checklist of the things integrators get wrong most.

Money & sizing#

  • Drops are integers — BigInt end to end; never float-parse *UsdtDrops.
  • The open amount you send (usdtDrops or amountWei) is collateral, pre-fee — not notional.
  • The notional cap is enforced in drops; floor your collateral to avoid a few-drop overshoot (see Fees & position sizing).
  • Max leverage is a fixed per-mode engine cap (see Token speed modes) — use it directly.

Tokens#

  • The randomizer returns a random rank (Competition | Private | Public). Force Public if the token must be listed / copy-tradeable.
  • tokenCreate always uses balance-based payment — the payment type cannot be overridden.
  • There is no server-side "active" flag on tokens — filter client-side on endDate.

Opening & closing#

  • tradeOpen requires exactly one of usdtDrops (USDT-denominated) or amountWei (token-denominated) — never both, never neither.
  • tradeClose closes an open position via USER_SELL.

Take-profit / stop-loss (tradeLimit*)#

  • tradeLimitCreate requires at least one trigger (SL or TP).
  • On update, an explicit null for a side clears it; an omitted field is preserved.
  • tradeLimitUpdate rejects an all-null input (Validation failed: input=MissingValue) — use tradeLimitDelete to clear.
  • There is no per-side delete; tradeLimitDelete removes both TP and SL.

Subscriptions (WebSocket)#

  • Authenticate on connection_init with payload: { Authorization: "Bearer <apiKey>" }.
  • The positions subscription streams the PublicPositionEvent unionPublicPositionOpenedEvent | PublicPositionClosedEvent | PublicPositionUpdatedEvent. Match on the type field before reading event-specific fields.
  • PublicPositionClosedEvent carries positionId, tokenId, type, closeType, closedAt, closePriceUsdtDrops, receivedAmountUsdtDrops, pnlUsdtDrops. The buyPriceUsdtDrops, collateralUsdtDrops, notionalUsdtDrops, leverageX10 fields belong to PublicPositionOpenedEvent, not the closed one.
  • Close events are at-least-once and are not replayed. A close emitted while you reconnect is missed by the fresh subscription — poll each open position on (re)subscribe to catch missed closes, and dedupe by positionId.

WebSocket API#

Real-time data is delivered over a WebSocket connection using the GraphQL over WebSocket protocol (graphql-transport-ws). Use it for subscription operations such as live price updates.

Connection#

Open a WebSocket to:

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

Negotiate the graphql-transport-ws subprotocol. After the socket opens, send a connection_init message; the server replies with connection_ack.

Property Value
URL wss://public-api.catapult.trade/graphql
Subprotocol graphql-transport-ws
Keep-alive server sends ping every 30s; reply with pong
Max subscriptions 1000 per connection

Lifecycle#

  1. Client opens the socket with subprotocol graphql-transport-ws.
  2. Client → {"type":"connection_init"}.
  3. Server → {"type":"connection_ack"}.
  4. Client → subscribe with a unique id and a GraphQL document.
  5. Server → one or more next messages, then complete.

Subscribe#

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

Data message#

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

Unsubscribe#

Send a complete message to stop a single subscription; close the socket to end all.

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

Errors#

Operation-level errors arrive as an error message for the matching id:

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

Connections that fail to send connection_init within 10 seconds are closed with code 4408 (Connection initialisation timeout).

Queries

boosterAvailability#

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

boosterAvailability: PublicBoosterAvailabilityOutput!

Arguments

No arguments.

boosters#

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

boosters: [PublicBoostedTokenOutput!]!

Arguments

No arguments.

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

Arguments

NameTypeDefaultDescription
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!

Arguments

NameTypeDefaultDescription
input PublicClosedPositionsInput!

ping#

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

ping: String!

Arguments

No arguments.

tokenRandomizedPreset#

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

tokenRandomizedPreset(allowedValues: TurboTokenPresetAllowedValuesInput): PublicTokenPresetOutput!

Arguments

NameTypeDefaultDescription
allowedValues TurboTokenPresetAllowedValuesInput

tokens#

List tokens with cursor pagination, sort, and filter.

tokens(input: PublicTokenListInput!): PublicTokenListOutput!

Arguments

NameTypeDefaultDescription
input PublicTokenListInput!

turboToken#

Get a single token by id with aggregated trading statistics.

turboToken(tokenId: ID!): PublicTokenDetailsOutput!

Arguments

NameTypeDefaultDescription
tokenId ID!

userBalance#

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

userBalance: PublicBalanceOutput!

Arguments

No arguments.

userMe#

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

userMe: PublicUserOutput!

Arguments

No arguments.

Mutations

boosterBuy#

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

boosterBuy(input: PublicBoosterBuyInput!): Boolean!

Arguments

NameTypeDefaultDescription
input PublicBoosterBuyInput!

fileFinalize#

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

fileFinalize(id: String!): PublicFileFinalizeOutput!

Arguments

NameTypeDefaultDescription
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!

Arguments

NameTypeDefaultDescription
input PublicFileUploadInput!

tokenCreate#

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

tokenCreate(input: PublicTokenCreateInput!): String!

Arguments

NameTypeDefaultDescription
input PublicTokenCreateInput!

tradeClose#

Close an open position via USER_SELL.

tradeClose(input: PublicTradeCloseInput!): PublicTradeCloseOutput!

Arguments

NameTypeDefaultDescription
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!

Arguments

NameTypeDefaultDescription
input PublicTradeLimitCreateInput!

tradeLimitDelete#

Remove the SL/TP limit from an open position.

tradeLimitDelete(input: PublicTradeLimitDeleteInput!): PublicTradePositionOutput!

Arguments

NameTypeDefaultDescription
input PublicTradeLimitDeleteInput!

tradeLimitUpdate#

Replace the SL/TP limit on an open position.

tradeLimitUpdate(input: PublicTradeLimitUpdateInput!): PublicTradePositionOutput!

Arguments

NameTypeDefaultDescription
input PublicTradeLimitUpdateInput!

tradeOpen#

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

tradeOpen(input: PublicTradeOpenInput!): PublicTradePositionOutput!

Arguments

NameTypeDefaultDescription
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!

Arguments

No arguments.

priceTicks#

Live price ticks for a token in USDT.

priceTicks(tokenId: ID!): PublicPriceTick!

Arguments

NameTypeDefaultDescription
tokenId ID!

tokenCreated#

Stream of newly created turbo tokens

tokenCreated: PublicTokenCreatedEvent!

Arguments

No arguments.

Objects

CursorPaginationMetaOutput object#

Fields

NameTypeDescription
firstCursor String
hasNextItems Boolean!
hasPreviousItems Boolean!
lastCursor String

PublicBalanceOutput object#

Fields

NameTypeDescription
balanceUsdtDrops String! Free balance available for trading. USDT drops (1e6 = 1 USDT).
inPositionsBalanceUsdtDrops String! Capital currently allocated to open positions. USDT drops.

PublicBoostedTokenOutput object#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
balanceUsdtDrops String! Free balance of the referral user. USDT drops (1e6 = 1 USDT).
user PublicMinimalUserOutput!

PublicClosedPositionOutput object#

Fields

NameTypeDescription
amountWei String! Token amount in wei.
boughtUsdtDrops Deprecated 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#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
id ID!
url String! Public URL of the finalized file.

PublicFileUploadOutput object#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
key String!
value String!

PublicMinimalUserOutput object#

Fields

NameTypeDescription
avatarToken String!
id ID!
profileName String!

PublicPositionOpenedEvent object#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
price Float!
tokenId ID!

PublicTokenListItemOutput object#

Fields

NameTypeDescription
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).

PublicTokenStatisticsOutput object#

Fields

NameTypeDescription
buysCount Int!
sellsCount Int!
totalVolumeUsdtDrops String!
uniqueTradersCount Int!
volumeFromBoostersUsdtDrops String!

PublicTradeCloseOutput object#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
afterCursor String
beforeCursor String
last Boolean Return last items according to `limit`
limit Float!

PublicBoosterBuyInput input#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
pagination CursorPaginationInput!
tokenId ID Restrict to a single token; omit for all tokens.

PublicFileUploadInput input#

Fields

NameTypeDescription
mimeType String! MIME type of the file to upload, e.g. `image/png`.
size Int! File size in bytes.

PublicTokenCreateInput input#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
positionId ID!
tokenId ID!

PublicTradeLimitConfigInput input#

Fields

NameTypeDescription
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#

Fields

NameTypeDescription
positionId String!

PublicTradeOpenInput input#

Fields

NameTypeDescription
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`.

Enums

PositionSide enum#

Values

NameDescription
LONG
SHORT

PositionType enum#

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

Values

NameDescription
FUTURES
SPOT

SortDirection enum#

Values

NameDescription
Asc
Desc

SpeedMode enum#

Values

NameDescription
CRACK
FAST
FLASH
MAYHEM
NORMAL

TokenBoosterType enum#

Values

NameDescription
B1
B2
B3
B4
B5
B6

TurboPriceMode enum#

Values

NameDescription
FiveHundred
Hundred
One
Ten

TurboTokenListSorting enum#

Values

NameDescription
BuysCount
SellsCount
StartTime
TimeLeft
TradersCount
Volume

TurboTokenMode enum#

Values

NameDescription
Crack
Fast
Flash
Mayhem
Slow

TurboTokenPositionCloseType enum#

Values

NameDescription
EXPIRED
LIQUIDATION
STOP_LOSS
TAKE_PROFIT
USER_SELL

TurboTokenPositionEventType enum#

Values

NameDescription
POSITION_CLOSED
POSITION_OPENED
POSITION_UPDATED

TurboTokenRank enum#

Values

NameDescription
Competition
Private
Public

UserStatus enum#

Values

NameDescription
GUEST
MEMBER

UserWalletType enum#

Values

NameDescription
Embedded
External

Scalars

DateTime scalar#

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