Español

Introducción#

La API de Catapult impulsa una plataforma de derivados de tokens sintéticos —operativa y datos de tokens— a través de un único endpoint GraphQL para operaciones petición/respuesta, y un endpoint WebSocket para suscripciones en tiempo real.

Endpoints base#

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

Todas las solicitudes HTTP usan POST con un cuerpo JSON con la forma { "query": "...", "variables": { ... } }.

Autenticación#

Las operaciones autenticadas usan un token JWT (bearer), enviado en la cabecera Authorization:

Authorization: Bearer <your-jwt-token>

El token es un JSON Web Token (JWT), válido por 730 días (≈2 años) desde su emisión por defecto: rótalo antes de que caduque. Solo ping es público; el resto de operaciones requiere el token bearer, y las lecturas como tokens y turboToken también necesitan el permiso tokens.read.

Crear una clave API#

Genera tu token desde el panel de tu cuenta en catapult.trade/settings/api-key (Ajustes → API Key). Puedes gestionar tu cuenta en catapult.trade.

Convenciones#

  • Los IDs son cadenas opacas; no los parsees.
  • Los importes monetarios son enteros codificados como cadena de tipo String! (p. ej. balanceUsdtDrops): parséalos como BigInt, nunca como float. El único escalar personalizado es DateTime.
  • Las marcas de tiempo usan el escalar DateTime (ISO-8601, UTC).
  • Las consultas de listas se paginan por cursor mediante input.pagination: limit (10 por defecto) con afterCursor / beforeCursor.

Ejemplo rápido#

query Tokens {
  # consulta la pestaña Reference para PublicTokenListInput y los campos del token
  tokens(input: { pagination: { limit: 5 } }) {
    items { id }
  }
}

OAuth de clave API#

Este enlace te permite obtener la clave API de un usuario para crear distintas funciones, por ejemplo copy trading. El usuario concede los permisos sobre su clave API y esta se envía a tu URL de callback incluida en la lista blanca.

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

Reemplaza <WHITELISTED_BOT_ID> por el ID de tu bot incluido en la lista blanca.

Inclusión del bot en la lista blanca#

Incluye tu bot en la lista blanca contactando con nuestro equipo de desarrollo:

[email protected]

Unidades y convenciones#

Lee esto primero: cada campo monetario de la API depende de estas convenciones.

USDT drops (*UsdtDrops)#

Todos los importes en USDT son enteros de USDT × 1,000,000 (6 decimales), con el sufijo UsdtDrops. Se envían como String! (enteros codificados como cadena): parséalos como BigInt, nunca como float.

Campo Valor en bruto USDT
balanceUsdtDrops 6666670000 6,666.67

Convierte con usdt = drops / 1e6 y drops = round(usdt × 1e6): calcula en BigInt.

Apalancamiento (leverageX10)#

El apalancamiento se codifica como apalancamiento × 10. leverageX10: 125 significa 12.5×; 30 significa .

Colateral vs nocional#

notional = collateral × leverage. Lo que aportas es el colateral; el valor nominal de la posición en USDT es el nocional.

Al abrir una posición, el importe es colateral, antes de comisión. tradeOpen toma exactamente uno de usdtDrops (en USDT) o amountWei (en tokens): el motor deriva el nocional a partir de él y del apalancamiento. No es el nocional.

Saldos#

userBalance { balanceUsdtDrops, inPositionsBalanceUsdtDrops }:

Campo Significado
balanceUsdtDrops Saldo libre: antes de comisión, los USDT que realmente se mueven al abrir.
inPositionsBalanceUsdtDrops Colateral actualmente bloqueado en posiciones abiertas (después de comisión).

Medios del token (fileId)#

La imagen de un token se adjunta pasando un fileId a tokenCreate. Hay dos formas de obtenerlo:

  1. AleatorizadortokenRandomizedPreset devuelve un fileId listo para usar (además de nombre, símbolo, modo, etc.) que puedes pasar directamente a tokenCreate.
  2. Subida propia — un flujo S3 presigned-POST de tres pasos:
    • fileUpload(input) → devuelve una URL S3 presigned-POST más los campos de formulario que el cliente debe incluir en el POST multipart.
    • El cliente hace POST de la imagen a esa URL de S3 con esos campos exactos.
    • fileFinalize(id) → marca la subida como finalizada tras el POST a S3 y devuelve la URL pública del archivo; usa el archivo resultante como imagen del token.

Límites de subida: solo JPEG o PNG, máximo 5 MB, mínimo 314×314 px. El POST prefirmado debe completarse en 15 segundos tras la llamada a fileUpload, y las subidas están limitadas a 200 por hora por IP.

Modos de velocidad de tokens#

Cada token funciona en uno de cinco modos de velocidad. El campo de creación/aleatorización es turboTokenMode; los registros de token exponen speedMode. SLOW y NORMAL son el mismo modo con dos nombres.

Los valores de apalancamiento máximo y de vida útil siguientes son configuración actual que puede cambiar en el servidor: trátalos como valores actuales y verifícalos con la consulta de leverage-config en vivo.

Modo Vida útil típica Apalancamiento máx. (motor)
SLOW / NORMAL 4h 125×
FAST 1h 40×
FLASH 15mins 15×
CRACK 3mins
MAYHEM 30s

El apalancamiento máximo es un límite fijo del motor#

El apalancamiento máximo de cada modo es un límite estricto que aplica el motor: usa el valor de la tabla directamente. El motor rechaza cualquier orden por encima.

Comisiones y tamaño de posición#

Comisión de apertura (~1%)#

Abrir una posición cobra una comisión de apertura de ~1% (0.01), deducida del colateral que envías:

collateral_post_fee = collateral_sent × (1 − fee)

Para que el colateral bloqueado quede exactamente en notional / leverage, envía:

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

Límite de nocional por posición#

El servidor aplica un límite de nocional por posición: actualmente 20,000 USDT por (token, apalancamiento, lado). Superarlo devuelve Maximum notional limit … exceeded. Verifica el valor exacto con la configuración en vivo; puede variar según el modo o el apalancamiento.

Posición máxima disponible (nocional)#

Sea fee = 0.01, free = balanceUsdtDrops / 1e6, inPos = inPositionsBalanceUsdtDrops / 1e6, capTotal = tu límite total de colateral opcional, capPos = límite de nocional por posición (~20,000), L = apalancamiento:

maxCollateralFromBalance = free × (1 − fee)
remainingTotalBudget     = capTotal − inPos          # si aplicas un límite total
maxNewCollateral         = min(maxCollateralFromBalance, remainingTotalBudget)
maxNotionalAchievable    = maxNewCollateral × L
maxPositionNotional      = min(maxNotionalAchievable, capPos)

Colateral a enviar = (maxPositionNotional / L) / (1 − fee).

Trampa de redondeo. Tras dividir por (1 − fee), un round(collateral × 1e6) ingenuo supera el límite por unos drops y la apertura se rechaza. Redondea hacia abajo el colateral en drops (BigInt) a un paso pequeño (p. ej. 10 drops = 0.00001 USDT) antes de enviar. Pierdes una fracción insignificante de céntimo y te mantienes bajo el límite en cualquier apalancamiento.

Ejemplo resuelto#

FLASH, 3×, comisión 1%, límite 20,000 de nocional:

collateral_post_fee target = 20,000 / 3        = 6,666.67
collateral_sent            = 6,666.67 / 0.99 ≈ 6,734.01   (redondeado hacia abajo en drops)
→ bloqueado tras comisión ≈ 6,666.67, nocional ≈ 20,000

Códigos de estado#

Las respuestas GraphQL devuelven HTTP 200 incluso cuando una operación falla: inspecciona el array errors[] y el extensions.code de cada error. Los problemas de transporte usan códigos HTTP estándar.

Códigos de estado HTTP#

Código Significado
200 Respuesta estándar. TODOS los resultados de operación —éxito y errores, incluidos autenticación, permisos, límite de tasa, no encontrado y reglas de negocio— devuelven 200; inspecciona errors[] y errors[].extensions.code.
400 Solicitud GraphQL malformada o inválida (error de análisis, campo desconocido, variable incorrecta).
500 Error inesperado del servidor. Seguro reintentar con backoff.

El servicio GraphQL devuelve los fallos de autenticación, permisos y límite de tasa dentro de la respuesta como 200 (ver códigos de error GraphQL). Los 401 / 403 / 429 de transporte solo ocurren si un gateway/CDN upstream rechaza la solicitud antes de llegar a la API.

Códigos de error GraphQL#

Los códigos distinguen mayúsculas; coincide con la cadena exacta. Los códigos de dominio son PascalCase (p. ej. RateLimited); algunos códigos del framework van en mayúsculas con guion bajo (p. ej. UNAUTHENTICATED).

Código Significado
UNAUTHENTICATED No hay un token válido, o el token expiró/está deshabilitado, o el usuario está bloqueado.
BAD_USER_INPUT Un argumento o variable no superó la validación.
GRAPHQL_VALIDATION_FAILED La consulta es estructuralmente inválida (campo/tipo desconocido).
RateLimited Límite de tasa superado (ver Límites de uso).
NotFound El recurso referenciado no existe.
InternalError Error inesperado del servidor.

Forma del error#

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

Límites de uso#

Las operaciones GraphQL comparten un único bucket de límite, indexado por token de API (jti) e IP: 600 consultas/min y 60 mutaciones/min. Al superar un límite se devuelve una respuesta HTTP 200 cuyo errors[] contiene un único error con extensions.code = RateLimited. La API no envía un estado 429 ni una cabecera Retry-After; las sugerencias de reintento se incluyen en extensions del error.

Límites HTTP (GraphQL)#

Operación Límite Ventana
Consultas 600 1 minuto
Mutaciones 60 1 minuto

Límites de WebSocket#

Ámbito Límite
Suscripciones por conexión 1000
Mensajes entrantes 200 / segundo (ráfaga 400)
Tiempo de espera de connection_init 10 s (código de cierre 4408)

Los límites de WebSocket son configurables en el servidor, por lo que en producción pueden diferir de estos valores por defecto. Se aplican por conexión, no por IP.

Cabeceras de respuesta#

La API no emite cabeceras de límite (X-RateLimit-*, Retry-After). Un gateway upstream podría añadirlas; no dependas de ellas.

Trampas e idempotencia#

Una lista de lo que los integradores suelen equivocar.

Dinero y dimensionamiento#

  • Los drops son enteros: BigInt de principio a fin; nunca parsees *UsdtDrops como float.
  • El importe de apertura que envías (usdtDrops o amountWei) es colateral, antes de comisión, no el nocional.
  • El límite de nocional se aplica en drops; redondea hacia abajo tu colateral para evitar superarlo por unos drops (ver «Comisiones y tamaño de posición»).
  • El apalancamiento máximo es un límite fijo del motor por modo (ver «Modos de velocidad de tokens»): úsalo directamente.

Tokens#

  • El aleatorizador devuelve un rank aleatorio (Competition | Private | Public). Fuerza Public si el token debe listarse / poder copiarse.
  • tokenCreate siempre usa pago desde el saldo: el tipo de pago no se puede anular.
  • No hay una marca de «activo» en el servidor para tokens: filtra en el cliente por endDate.

Apertura y cierre#

  • tradeOpen requiere exactamente uno de usdtDrops (en USDT) o amountWei (en tokens): nunca ambos ni ninguno.
  • tradeClose cierra una posición abierta mediante USER_SELL.

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

  • tradeLimitCreate requiere al menos un disparador (SL o TP).
  • En update, un null explícito para un lado lo borra; un campo omitido se conserva.
  • tradeLimitUpdate rechaza una entrada totalmente nula (Validation failed: input=MissingValue): usa tradeLimitDelete para borrar.
  • No hay borrado por lado; tradeLimitDelete elimina ambos, TP y SL.

Suscripciones (WebSocket)#

  • Autentícate en connection_init con payload: { Authorization: "Bearer <apiKey>" }.
  • La suscripción positions transmite la unión PublicPositionEventPublicPositionOpenedEvent | PublicPositionClosedEvent | PublicPositionUpdatedEvent. Discrimina por el campo type antes de leer los campos específicos del evento.
  • PublicPositionClosedEvent lleva positionId, tokenId, type, closeType, closedAt, closePriceUsdtDrops, receivedAmountUsdtDrops, pnlUsdtDrops. Los campos buyPriceUsdtDrops, collateralUsdtDrops, notionalUsdtDrops, leverageX10 pertenecen a PublicPositionOpenedEvent, no al de cierre.
  • Los eventos de cierre son at-least-once y no se reproducen. Un cierre emitido mientras te reconectas lo pierde la nueva suscripción: sondea cada posición abierta al (re)suscribirte para detectar cierres perdidos y deduplica por positionId.

API WebSocket#

Los datos en tiempo real se entregan por una conexión WebSocket usando el protocolo GraphQL sobre WebSocket (graphql-transport-ws). Úsalo para operaciones de tipo subscription, como las actualizaciones de precio en vivo.

Conexión#

Abre un WebSocket en:

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

Negocia el subprotocolo graphql-transport-ws. Tras abrir el socket, envía un mensaje connection_init; el servidor responde con connection_ack.

Propiedad Valor
URL wss://public-api.catapult.trade/graphql
Subprotocolo graphql-transport-ws
Keep-alive el servidor envía ping cada 30s; responde con pong
Máx. suscripciones 1000 por conexión

Ciclo de vida#

  1. El cliente abre el socket con el subprotocolo graphql-transport-ws.
  2. Cliente → {"type":"connection_init"}.
  3. Servidor → {"type":"connection_ack"}.
  4. Cliente → subscribe con un id único y un documento GraphQL.
  5. Servidor → uno o varios mensajes next, después complete.

Suscripción#

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

Mensaje de datos#

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

Cancelar suscripción#

Envía un mensaje complete para detener una suscripción; cierra el socket para detenerlas todas.

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

Errores#

Los errores a nivel de operación llegan como un mensaje error para el id correspondiente:

{ "id": "1", "type": "error", "payload": [{ "message": "Mercado desconocido" }] }

Las conexiones que no envían connection_init en 10 segundos se cierran con el código 4408 (tiempo de inicialización agotado).

Queries

boosterAvailability#

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

boosterAvailability: PublicBoosterAvailabilityOutput!

Argumentos

Sin argumentos.

boosters#

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

boosters: [PublicBoostedTokenOutput!]!

Argumentos

Sin argumentos.

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

Argumentos

NombreTipoPor defectoDescripción
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!

Argumentos

NombreTipoPor defectoDescripción
input PublicClosedPositionsInput!

ping#

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

ping: String!

Argumentos

Sin argumentos.

tokenRandomizedPreset#

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

tokenRandomizedPreset(allowedValues: TurboTokenPresetAllowedValuesInput): PublicTokenPresetOutput!

Argumentos

NombreTipoPor defectoDescripción
allowedValues TurboTokenPresetAllowedValuesInput

tokens#

List tokens with cursor pagination, sort, and filter.

tokens(input: PublicTokenListInput!): PublicTokenListOutput!

Argumentos

NombreTipoPor defectoDescripción
input PublicTokenListInput!

turboToken#

Get a single token by id with aggregated trading statistics.

turboToken(tokenId: ID!): PublicTokenDetailsOutput!

Argumentos

NombreTipoPor defectoDescripción
tokenId ID!

userBalance#

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

userBalance: PublicBalanceOutput!

Argumentos

Sin argumentos.

userMe#

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

userMe: PublicUserOutput!

Argumentos

Sin argumentos.

Mutations

boosterBuy#

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

boosterBuy(input: PublicBoosterBuyInput!): Boolean!

Argumentos

NombreTipoPor defectoDescripción
input PublicBoosterBuyInput!

fileFinalize#

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

fileFinalize(id: String!): PublicFileFinalizeOutput!

Argumentos

NombreTipoPor defectoDescripción
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!

Argumentos

NombreTipoPor defectoDescripción
input PublicFileUploadInput!

tokenCreate#

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

tokenCreate(input: PublicTokenCreateInput!): String!

Argumentos

NombreTipoPor defectoDescripción
input PublicTokenCreateInput!

tradeClose#

Close an open position via USER_SELL.

tradeClose(input: PublicTradeCloseInput!): PublicTradeCloseOutput!

Argumentos

NombreTipoPor defectoDescripción
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!

Argumentos

NombreTipoPor defectoDescripción
input PublicTradeLimitCreateInput!

tradeLimitDelete#

Remove the SL/TP limit from an open position.

tradeLimitDelete(input: PublicTradeLimitDeleteInput!): PublicTradePositionOutput!

Argumentos

NombreTipoPor defectoDescripción
input PublicTradeLimitDeleteInput!

tradeLimitUpdate#

Replace the SL/TP limit on an open position.

tradeLimitUpdate(input: PublicTradeLimitUpdateInput!): PublicTradePositionOutput!

Argumentos

NombreTipoPor defectoDescripción
input PublicTradeLimitUpdateInput!

tradeOpen#

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

tradeOpen(input: PublicTradeOpenInput!): PublicTradePositionOutput!

Argumentos

NombreTipoPor defectoDescripción
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!

Argumentos

Sin argumentos.

priceTicks#

Live price ticks for a token in USDT.

priceTicks(tokenId: ID!): PublicPriceTick!

Argumentos

NombreTipoPor defectoDescripción
tokenId ID!

tokenCreated#

Stream of newly created turbo tokens

tokenCreated: PublicTokenCreatedEvent!

Argumentos

Sin argumentos.

Objects

CursorPaginationMetaOutput object#

Campos

NombreTipoDescripción
firstCursor String
hasNextItems Boolean!
hasPreviousItems Boolean!
lastCursor String

PublicBalanceOutput object#

Campos

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

PublicBoostedTokenOutput object#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
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#

Campos

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

PublicClosedPositionOutput object#

Campos

NombreTipoDescripción
amountWei String! Token amount in wei.
boughtUsdtDrops Obsoleto 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#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
id ID!
url String! Public URL of the finalized file.

PublicFileUploadOutput object#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
key String!
value String!

PublicMinimalUserOutput object#

Campos

NombreTipoDescripción
avatarToken String!
id ID!
profileName String!

PublicPositionOpenedEvent object#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
price Float!
tokenId ID!

PublicTokenListItemOutput object#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
buysCount Int!
sellsCount Int!
totalVolumeUsdtDrops String!
uniqueTradersCount Int!
volumeFromBoostersUsdtDrops String!

PublicTradeCloseOutput object#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
afterCursor String
beforeCursor String
last Boolean Return last items according to `limit`
limit Float!

PublicBoosterBuyInput input#

Campos

NombreTipoDescripción
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#

Campos

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

PublicFileUploadInput input#

Campos

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

PublicTokenCreateInput input#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
positionId ID!
tokenId ID!

PublicTradeLimitConfigInput input#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
positionId String!

PublicTradeOpenInput input#

Campos

NombreTipoDescripción
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#

Campos

NombreTipoDescripción
rank TurboTokenRank
speedMode [SpeedMode!]
userId String

Enums

PositionSide enum#

Valores

NombreDescripción
LONG
SHORT

PositionType enum#

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

Valores

NombreDescripción
FUTURES
SPOT

SortDirection enum#

Valores

NombreDescripción
Asc
Desc

SpeedMode enum#

Valores

NombreDescripción
CRACK
FAST
FLASH
MAYHEM
NORMAL

TokenBoosterType enum#

Valores

NombreDescripción
B1
B2
B3
B4
B5
B6

TurboPriceMode enum#

Valores

NombreDescripción
FiveHundred
Hundred
One
Ten

TurboTokenListSorting enum#

Valores

NombreDescripción
BuysCount
SellsCount
StartTime
TimeLeft
TradersCount
Volume

TurboTokenMode enum#

Valores

NombreDescripción
Crack
Fast
Flash
Mayhem
Slow

TurboTokenPositionCloseType enum#

Valores

NombreDescripción
EXPIRED
LIQUIDATION
STOP_LOSS
TAKE_PROFIT
USER_SELL

TurboTokenPositionEventType enum#

Valores

NombreDescripción
POSITION_CLOSED
POSITION_OPENED
POSITION_UPDATED

TurboTokenRank enum#

Valores

NombreDescripción
Competition
Private
Public

UserStatus enum#

Valores

NombreDescripción
GUEST
MEMBER

UserWalletType enum#

Valores

NombreDescripción
Embedded
External

Scalars

DateTime scalar#

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