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 3×.
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). |
A token image is attached by passing a fileId to tokenCreate. There are two
ways to get one:
- Randomizer —
tokenRandomizedPreset returns a ready-to-use fileId (plus a
name, symbol, mode, etc.) that you can pass straight to tokenCreate.
- 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 |
5× |
MAYHEM |
30s |
5× |
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.
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 union —
PublicPositionOpenedEvent | 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#
- Client opens the socket with subprotocol
graphql-transport-ws.
- Client →
{"type":"connection_init"}.
- Server →
{"type":"connection_ack"}.
- Client →
subscribe with a unique id and a GraphQL document.
- 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
| Name | Type | Default | Description |
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
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
tokens#
List tokens with cursor pagination, sort, and filter.
tokens(input: PublicTokenListInput!): PublicTokenListOutput!
Arguments
turboToken#
Get a single token by id with aggregated trading statistics.
turboToken(tokenId: ID!): PublicTokenDetailsOutput!
Arguments
| Name | Type | Default | Description |
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
fileFinalize#
Mark an upload as finished after the S3 POST succeeds. Returns the public file URL.
fileFinalize(id: String!): PublicFileFinalizeOutput!
Arguments
| Name | Type | Default | Description |
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
tokenCreate#
Create a new turbo token. Always uses balance-based payment; payment type cannot be overridden.
tokenCreate(input: PublicTokenCreateInput!): String!
Arguments
tradeClose#
Close an open position via USER_SELL.
tradeClose(input: PublicTradeCloseInput!): PublicTradeCloseOutput!
Arguments
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
tradeLimitDelete#
Remove the SL/TP limit from an open position.
tradeLimitDelete(input: PublicTradeLimitDeleteInput!): PublicTradePositionOutput!
Arguments
tradeLimitUpdate#
Replace the SL/TP limit on an open position.
tradeLimitUpdate(input: PublicTradeLimitUpdateInput!): PublicTradePositionOutput!
Arguments
tradeOpen#
Open a position. Body must specify exactly one of `usdtDrops` (USDT-denominated) or `amountWei` (token-denominated).
tradeOpen(input: PublicTradeOpenInput!): PublicTradePositionOutput!
Arguments
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
| Name | Type | Default | Description |
tokenId |
ID! |
— |
|
tokenCreated#
Stream of newly created turbo tokens
tokenCreated: PublicTokenCreatedEvent!
Arguments
No arguments.
Objects
PublicBalanceOutput object#
Fields
| Name | Type | Description |
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
| Name | Type | Description |
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
| Name | Type | Description |
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
| Name | Type | Description |
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
| Name | Type | Description |
balanceUsdtDrops |
String! |
Free balance of the referral user. USDT drops (1e6 = 1 USDT). |
user |
PublicMinimalUserOutput! |
|
PublicClosedPositionOutput object#
Fields
| Name | Type | Description |
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. |
PublicClosedPositionsOutput object#
Fields
PublicClosedPositionTokenInfoOutput object#
Fields
| Name | Type | Description |
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
| Name | Type | Description |
id |
ID! |
|
url |
String! |
Public URL of the finalized file. |
PublicFileUploadOutput object#
Fields
| Name | Type | Description |
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
| Name | Type | Description |
key |
String! |
|
value |
String! |
|
PublicMinimalUserOutput object#
Fields
| Name | Type | Description |
avatarToken |
String! |
|
id |
ID! |
|
profileName |
String! |
|
PublicPositionClosedEvent object#
Fields
PublicPositionOpenedEvent object#
Fields
| Name | Type | Description |
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! |
|
PublicPositionUpdatedEvent object#
Fields
PublicPriceTick object#
Fields
| Name | Type | Description |
price |
Float! |
|
tokenId |
ID! |
|
PublicTokenCreatedEvent object#
Fields
PublicTokenDetailsOutput object#
Fields
PublicTokenListItemOutput object#
Fields
| Name | Type | Description |
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). |
PublicTokenListOutput object#
Fields
PublicTokenPresetOutput object#
Fields
PublicTokenStatisticsOutput object#
Fields
| Name | Type | Description |
buysCount |
Int! |
|
sellsCount |
Int! |
|
totalVolumeUsdtDrops |
String! |
|
uniqueTradersCount |
Int! |
|
volumeFromBoostersUsdtDrops |
String! |
|
PublicTradeCloseOutput object#
Fields
| Name | Type | Description |
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
| Name | Type | Description |
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
| Name | Type | Description |
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
| Name | Type | Description |
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 |
|
Enums
PositionSide enum#
Values
PositionType enum#
Position type: SPOT (1x LONG) or FUTURES (leveraged LONG / SHORT)
Values
| Name | Description |
|---|
FUTURES | |
SPOT | |
SortDirection enum#
Values
SpeedMode enum#
Values
| Name | Description |
|---|
CRACK | |
FAST | |
FLASH | |
MAYHEM | |
NORMAL | |
TokenBoosterType enum#
Values
| Name | Description |
|---|
B1 | |
B2 | |
B3 | |
B4 | |
B5 | |
B6 | |
TurboPriceMode enum#
Values
| Name | Description |
|---|
FiveHundred | |
Hundred | |
One | |
Ten | |
TurboTokenListSorting enum#
Values
| Name | Description |
|---|
BuysCount | |
SellsCount | |
StartTime | |
TimeLeft | |
TradersCount | |
Volume | |
TurboTokenMode enum#
Values
| Name | Description |
|---|
Crack | |
Fast | |
Flash | |
Mayhem | |
Slow | |
TurboTokenPositionCloseType enum#
Values
| Name | Description |
|---|
EXPIRED | |
LIQUIDATION | |
STOP_LOSS | |
TAKE_PROFIT | |
USER_SELL | |
TurboTokenPositionEventType enum#
Values
| Name | Description |
|---|
POSITION_CLOSED | |
POSITION_OPENED | |
POSITION_UPDATED | |
TurboTokenRank enum#
Values
| Name | Description |
|---|
Competition | |
Private | |
Public | |
UserStatus enum#
Values
| Name | Description |
|---|
GUEST | |
MEMBER | |
UserWalletType enum#
Values
| Name | Description |
|---|
Embedded | |
External | |
Scalars
DateTime scalar#
A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format.