Playground ↗
한국어

개요#

Catapult API는 합성 토큰 파생상품 플랫폼(거래 및 토큰 데이터)을 요청/응답 작업을 위한 단일 GraphQL 엔드포인트와 실시간 구독을 위한 WebSocket 엔드포인트를 통해 제공합니다.

기본 엔드포인트#

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

모든 HTTP 요청은 POST를 사용하며 { "query": "...", "variables": { ... } } 형태의 JSON 본문을 보냅니다.

인증#

인증이 필요한 작업은 Authorization 헤더로 전송하는 JWT 베어러 토큰을 사용합니다:

Authorization: Bearer <your-jwt-token>

토큰은 JSON Web Token(JWT)이며 기본적으로 발급 시점부터 730일(약 2년) 유효합니다 — 만료 전에 교체하세요. 공개되는 것은 ping뿐이며, 나머지 모든 작업에는 베어러 토큰이 필요 합니다. 또한 tokens, turboToken 같은 읽기 작업에는 tokens.read 권한이 필요합니다.

API 키 생성#

catapult.trade/settings/api-key(Settings → API Key)의 계정 대시보드에서 토큰을 생성하세요. 계정은 catapult.trade에서 관리할 수 있습니다.

규칙#

  • ID는 불투명한 문자열입니다; 파싱하지 마세요.
  • 금액은 String! 타입의 문자열로 인코딩된 정수입니다(예: balanceUsdtDrops) — float가 아니라 BigInt로 파싱하세요. 사용자 정의 스칼라는 DateTime뿐입니다.
  • 타임스탬프는 DateTime 스칼라(ISO-8601, UTC)를 사용합니다.
  • 리스트 쿼리는 input.pagination을 통한 커서 페이지네이션을 사용합니다: limit(기본 10)과 afterCursor / beforeCursor.

빠른 예시#

query Tokens {
  # 전체 PublicTokenListInput과 토큰 필드는 Reference 탭 참조
  tokens(input: { pagination: { limit: 5 } }) {
    items { id }
  }
}

API 키 OAuth#

이 링크를 사용하면 카피 트레이딩 등 다양한 기능을 만들기 위해 사용자의 API 키를 받을 수 있습니다. 사용자가 자신의 API 키에 권한을 부여하면, 해당 키가 화이트리스트에 등록된 콜백 URL로 전달됩니다.

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

<WHITELISTED_BOT_ID>를 화이트리스트에 등록된 봇의 ID로 바꾸세요.

봇 화이트리스트 등록#

개발팀에 연락하여 봇을 화이트리스트에 등록하세요:

[email protected]

단위 및 규칙#

먼저 읽어 주세요 — API의 모든 금액 필드는 이 규칙에 의존합니다.

USDT drops (*UsdtDrops)#

모든 USDT 금액은 USDT × 1,000,000(소수점 6자리)의 정수이며 UsdtDrops 접미사가 붙습니다. 이들은 String!(문자열로 인코딩된 정수)로 전송됩니다 — float가 아니라 BigInt로 파싱하세요.

필드 원시 값 USDT
balanceUsdtDrops 6666670000 6,666.67

변환: usdt = drops / 1e6, drops = round(usdt × 1e6) — BigInt로 계산하세요.

레버리지 (leverageX10)#

레버리지는 레버리지 × 10으로 인코딩됩니다. leverageX10: 12512.5×, 30은 **3×**를 의미합니다.

증거금 vs 명목#

notional = collateral × leverage. 당신이 넣는 금액이 증거금(collateral), 포지션의 USDT 액면가가 **명목(notional)**입니다.

포지션을 열 때 금액은 수수료 차감 전 증거금입니다. tradeOpenusdtDrops (USDT 기준) 또는 amountWei(토큰 기준) 중 정확히 하나를 받으며, 엔진이 그것과 레버리지로 명목을 산출합니다. 이는 명목이 아닙니다.

잔액#

userBalance { balanceUsdtDrops, inPositionsBalanceUsdtDrops }:

필드 의미
balanceUsdtDrops 여유 잔액 — 수수료 차감 전, 열 때 실제로 이동하는 USDT.
inPositionsBalanceUsdtDrops 열린 포지션에 현재 잠긴 증거금(수수료 차감 후).

토큰 미디어 (fileId)#

토큰 이미지는 **fileId**를 tokenCreate에 전달하여 첨부합니다. 두 가지 방법이 있습니다:

  1. 랜덤라이저tokenRandomizedPreset이 바로 사용할 수 있는 fileId(이름, 심볼, 모드 등 포함)를 반환하며, tokenCreate에 그대로 전달할 수 있습니다.
  2. 직접 업로드 — 3단계 S3 presigned-POST 플로우:
    • fileUpload(input)S3 presigned-POST URL과 클라이언트가 multipart POST에 포함해야 하는 폼 필드를 반환합니다.
    • 클라이언트는 그 정확한 폼 필드와 함께 해당 S3 URL로 이미지를 POST합니다.
    • fileFinalize(id) → S3 POST 성공 후 업로드 완료를 표시하고 공개 파일 URL을 반환합니다. 결과 파일을 토큰 이미지로 사용하세요.

업로드 제한: JPEG 또는 PNG만, 최대 5 MB, 최소 314×314 px. presigned POST는 fileUpload 호출 후 15초 이내에 완료되어야 하며, 업로드는 IP당 시간당 200회로 제한됩니다.

토큰 속도 모드#

모든 토큰은 다섯 가지 속도 모드 중 하나로 동작합니다. 생성/랜덤화 필드는 turboTokenMode이고, 토큰 레코드는 speedMode를 노출합니다. SLOWNORMAL은 같은 모드의 두 이름입니다.

아래 최대 레버리지와 수명 값은 서버에서 바뀔 수 있는 현재 구성입니다 — 현재 값으로 취급하고 라이브 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)로 내림하세요. 1센트의 무시할 만한 일부만 잃고 어떤 레버리지에서도 상한 아래에 머뭅니다.

계산 예시#

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회/분. 한도를 초과하면 errors[]extensions.code = RateLimited 오류 하나가 담긴 HTTP 200 응답이 반환됩니다. 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로 필터링하세요.

개설과 청산#

  • tradeOpenusdtDrops(USDT 기준) 또는 amountWei(토큰 기준) 중 정확히 하나가 필요합니다 — 둘 다도, 둘 다 없음도 안 됩니다.
  • tradeClose는 **USER_SELL**로 열린 포지션을 청산합니다.

테이크프로핏 / 스톱로스 (tradeLimit*)#

  • tradeLimitCreate최소 하나의 트리거(SL 또는 TP)가 필요합니다.
  • update 시 어떤 방향에 명시적 null을 주면 해제되고, 생략된 필드는 유지됩니다.
  • tradeLimitUpdate모두 null인 입력을 거부합니다(Validation failed: input=MissingValue) — 해제하려면 tradeLimitDelete를 사용하세요.
  • 방향별 삭제는 없습니다; tradeLimitDelete는 TP와 SL 둘 다 제거합니다.

구독 (WebSocket)#

  • connection_init에서 payload: { Authorization: "Bearer <apiKey>" }로 인증하세요.
  • positions 구독은 PublicPositionEvent 유니온을 스트리밍합니다 — PublicPositionOpenedEvent | PublicPositionClosedEvent | PublicPositionUpdatedEvent. 이벤트별 필드를 읽기 전에 type 필드로 구분하세요.
  • PublicPositionClosedEventpositionId, tokenId, type, closeType, closedAt, closePriceUsdtDrops, receivedAmountUsdtDrops, pnlUsdtDrops를 가집니다. buyPriceUsdtDrops, collateralUsdtDrops, notionalUsdtDrops, leverageX10는 청산 이벤트가 아니라 PublicPositionOpenedEvent의 필드입니다.
  • 청산 이벤트는 at-least-once이며 재전송되지 않습니다. 재연결 중 발행된 청산은 새 구독에서 누락됩니다 — 누락된 청산을 잡으려면 (재)구독 시 각 열린 포지션을 폴링하고 positionId로 중복 제거하세요.

WebSocket API#

실시간 데이터는 GraphQL over WebSocket 프로토콜(graphql-transport-ws)을 사용하는 WebSocket 연결로 전달됩니다. 실시간 가격 업데이트와 같은 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 서버가 30초마다 ping 전송, pong으로 응답
최대 구독 수 연결당 1000

수명 주기#

  1. 클라이언트가 graphql-transport-ws 서브프로토콜로 소켓을 엽니다.
  2. 클라이언트 → {"type":"connection_init"}.
  3. 서버 → {"type":"connection_ack"}.
  4. 클라이언트 → 고유한 id와 GraphQL 문서를 포함한 subscribe.
  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" }

오류#

작업 수준 오류는 해당 id에 대한 error 메시지로 도착합니다:

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

10초 이내에 connection_init을 보내지 않은 연결은 코드 4408(연결 초기화 시간 초과)로 종료됩니다.

Queries

boosterAvailability#

전역 부스터 가용성: 활성/최대/사용 가능 슬롯 및 등급별 구성(가격, 기간, 포인트 부스트, 적용 가능한 속도 모드).

boosterAvailability: PublicBoosterAvailabilityOutput!

인자

인자 없음.

boosters#

시간 감쇠가 적용된 현재 수익률(%)을 포함하여, 현재 활성 부스트가 적용된 모든 토큰.

boosters: [PublicBoostedTokenOutput!]!

인자

인자 없음.

checkReferral#

지정된 사용자 ID가 호출자의 추천인 중 하나인 경우 해당 추천인의 최소 프로필과 사용 가능한 USDT 잔액을 반환합니다. 해당 사용자가 인증된 호출자의 추천인이 아니거나 존재하지 않는 경우 null을 반환합니다.

checkReferral(referralUserId: ID!): PublicCheckReferralOutput

인자

이름타입기본값설명
referralUserId ID!

closedPositions#

인증된 사용자의 종료된 포지션을 최신순으로 정렬한 커서 페이지네이션 목록입니다. 선택적으로 단일 토큰으로 필터링할 수 있습니다.

closedPositions(input: PublicClosedPositionsInput!): PublicClosedPositionsOutput!

인자

이름타입기본값설명
input PublicClosedPositionsInput!

ping#

공개 GraphQL API의 헬스 체크용 프로브입니다. "pong"을 반환합니다. 인증이 필요하지 않습니다.

ping: String!

인자

인자 없음.

tokenChartData#

Chart candles and current price for a token.

tokenChartData(tokenId: ID!): PublicTokenChartDataOutput!

인자

이름타입기본값설명
tokenId ID!

tokenRandomizedPreset#

토큰 생성 입력값을 미리 채우는 데 유용한 무작위 토큰 프리셋(이름, 심볼, 아바타, 모드 플래그)을 반환합니다.

tokenRandomizedPreset(allowedValues: TurboTokenPresetAllowedValuesInput): PublicTokenPresetOutput!

인자

이름타입기본값설명
allowedValues TurboTokenPresetAllowedValuesInput

tokens#

커서 페이지네이션, 정렬, 필터링을 적용하여 토큰 목록을 조회합니다.

tokens(input: PublicTokenListInput!): PublicTokenListOutput!

인자

이름타입기본값설명
input PublicTokenListInput!

turboToken#

집계된 거래 통계와 함께 ID로 단일 토큰을 조회합니다.

turboToken(tokenId: ID!): PublicTokenDetailsOutput!

인자

이름타입기본값설명
tokenId ID!

userBalance#

인증된 사용자의 잔액입니다. 사용 가능한 잔액과 미결제 포지션에 할당된 금액을 USDT drops 단위로 반환합니다.

userBalance: PublicBalanceOutput!

인자

인자 없음.

userMe#

인증된 사용자의 프로필입니다. 역할, kaito 귀속 정보, 세션 정보는 제외됩니다.

userMe: PublicUserOutput!

인자

인자 없음.

Mutations

boosterBuy#

인증된 사용자의 토큰 중 하나에 대해 부스터를 구매합니다. 성공 시 true를 반환합니다.

boosterBuy(input: PublicBoosterBuyInput!): Boolean!

인자

이름타입기본값설명
input PublicBoosterBuyInput!

claimAllCreatorFees#

Claim all available creator fees across tokens.

claimAllCreatorFees: PublicClaimAllCreatorFeesOutput!

인자

인자 없음.

claimCreatorFee#

Claim accumulated creator fees for a single token.

claimCreatorFee(input: PublicClaimCreatorFeeInput!): PublicClaimCreatorFeeOutput!

인자

이름타입기본값설명
input PublicClaimCreatorFeeInput!

fileFinalize#

S3 POST가 성공한 후 업로드를 완료 상태로 표시합니다. 공개 파일 URL을 반환합니다.

fileFinalize(id: String!): PublicFileFinalizeOutput!

인자

이름타입기본값설명
id String!

fileUpload#

파일 업로드를 시작합니다. 클라이언트가 멀티파트 업로드에 포함해야 하는 폼 필드와 함께 S3 presigned-POST URL을 반환합니다.

fileUpload(input: PublicFileUploadInput!): PublicFileUploadOutput!

인자

이름타입기본값설명
input PublicFileUploadInput!

tokenCreate#

새 터보 토큰을 생성합니다. 항상 잔액 기반 결제를 사용하며, 결제 유형은 재정의할 수 없습니다.

tokenCreate(input: PublicTokenCreateInput!): String!

인자

이름타입기본값설명
input PublicTokenCreateInput!

tradeClose#

USER_SELL을 통해 미결제 포지션을 종료합니다.

tradeClose(input: PublicTradeCloseInput!): PublicTradeCloseOutput!

인자

이름타입기본값설명
input PublicTradeCloseInput!

tradeLimitCreate#

미결제 포지션에 SL/TP 리밋을 첨부합니다. 최소 하나의 트리거(SL 또는 TP)를 지정해야 합니다.

tradeLimitCreate(input: PublicTradeLimitCreateInput!): PublicTradePositionOutput!

인자

이름타입기본값설명
input PublicTradeLimitCreateInput!

tradeLimitDelete#

미결제 포지션에서 SL/TP 리밋을 제거합니다.

tradeLimitDelete(input: PublicTradeLimitDeleteInput!): PublicTradePositionOutput!

인자

이름타입기본값설명
input PublicTradeLimitDeleteInput!

tradeLimitUpdate#

미결제 포지션의 SL/TP 리밋을 교체합니다.

tradeLimitUpdate(input: PublicTradeLimitUpdateInput!): PublicTradePositionOutput!

인자

이름타입기본값설명
input PublicTradeLimitUpdateInput!

tradeOpen#

포지션을 개설합니다. 본문에는 `usdtDrops`(USDT 표시) 또는 `amountWei`(토큰 표시) 중 정확히 하나만 지정해야 합니다.

tradeOpen(input: PublicTradeOpenInput!): PublicTradePositionOutput!

인자

이름타입기본값설명
input PublicTradeOpenInput!

Subscriptions

positions#

인증된 사용자의 포지션 이벤트 스트림입니다. 초기화 시 모든 미결제 포지션의 스냅샷을 (각각 POSITION_OPENED로) 전송한 후, 실시간 POSITION_OPENED / POSITION_CLOSED / POSITION_UPDATED 이벤트를 스트리밍합니다.

positions: PublicPositionEvent!

인자

인자 없음.

priceTicks#

토큰의 실시간 가격 틱(USDT 단위)입니다.

priceTicks(tokenId: ID!): PublicPriceTick!

인자

이름타입기본값설명
tokenId ID!

tokenCreated#

새로 생성된 터보 토큰의 스트림입니다.

tokenCreated: PublicTokenCreatedEvent!

인자

인자 없음.

unclaimedReward#

Stream of unclaimed reward balances for the authenticated user.

unclaimedReward: PublicUnclaimedRewardOutput!

인자

인자 없음.

Objects

CursorPaginationMetaOutput object#

필드

이름타입설명
firstCursor String
hasNextItems Boolean!
hasPreviousItems Boolean!
lastCursor String

PublicBalanceOutput object#

필드

이름타입설명
balanceUsdtDrops String! 거래에 사용 가능한 잔액입니다. USDT drops(1e6 = 1 USDT).
inPositionsBalanceUsdtDrops String! 현재 미결제 포지션에 할당된 자본입니다. USDT drops.

PublicBoostedTokenOutput object#

필드

이름타입설명
avatarUrl String!
boostedUntil DateTime! 부스트가 만료되는 시점입니다.
boosterType TokenBoosterType!
currentReturnPercentage Float! 시간 감쇠가 적용된 부스트의 현재 수익률(%)입니다.
name String!
symbol String!
tokenId ID!

PublicBoosterAvailabilityOutput object#

필드

이름타입설명
active Int! 현재 활성화된 부스트 슬롯 수입니다.
available Int! 남은 사용 가능 부스트 슬롯 수입니다(max - active, 최소 0).
max Int! 동시에 부스트할 수 있는 토큰의 최대 개수입니다.
types [PublicBoosterTypeConfigOutput!]! 사용 가능한 각 부스터 등급의 구성입니다.

PublicBoosterTypeConfigOutput object#

필드

이름타입설명
availableModes [SpeedMode!]! 이 등급을 적용할 수 있는 토큰 속도 모드입니다.
durationSeconds Int! 부스트 지속 시간(초 단위)입니다.
pointsBoost Float! 부스트가 활성화된 동안 적용되는 포인트 배수입니다.
priceUsdtDrops String! 이 등급의 가격입니다. USDT drops(1e6 = 1 USDT).
type TokenBoosterType!

PublicCandleOutput object#

필드

이름타입설명
close Float!
high Float!
low Float!
open Float!
time Float!

PublicCheckReferralOutput object#

필드

이름타입설명
balanceUsdtDrops String! 추천인 사용자의 사용 가능한 잔액입니다. USDT drops(1e6 = 1 USDT).
user PublicMinimalUserOutput!

PublicClaimAllCreatorFeesOutput object#

필드

이름타입설명
balanceAfterUsdtDrops String!
claimedAmountUsdtDrops String!
claimedCount Int!

PublicClaimCreatorFeeOutput object#

필드

이름타입설명
claimedAmountUsdtDrops String!

PublicClosedPositionOutput object#

필드

이름타입설명
amountWei String! wei 단위의 토큰 수량입니다.
boughtUsdtDrops 지원 중단 String! 더 이상 사용되지 않으며, `paidAmountUsdtDrops`로 대체되었습니다. USDT drops 단위의 금액입니다(1e6 = 1 USDT).
buyPriceUsdtDrops String! USDT drops 단위의 진입 가격입니다(1e6 = 1 USDT).
closePriceUsdtDrops String USDT drops 단위의 종료 가격입니다(1e6 = 1 USDT); 정산되기 전까지 null입니다.
closeType TurboTokenPositionCloseType 포지션이 종료된 방식입니다(수동, 청산 등).
closedAt DateTime 포지션이 종료/정산된 시점입니다; 아직 미결제 상태인 경우 null입니다.
collateralUsdtDrops String! USDT drops 단위의 담보 금액입니다(1e6 = 1 USDT).
currentPriceUsdtDrops String! USDT drops 단위의 현재 가격입니다(1e6 = 1 USDT).
endTimestamp DateTime! 포지션의 예정된 종료 시각입니다.
id ID!
isScoreBoosted Boolean! 포지션 점수가 부스트되었는지 여부입니다.
leverageX10 Int! 레버리지 X10(10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
limit PublicTradeLimitOutput 첨부된 손절(stop-loss) / 익절(take-profit) 리밋이 있는 경우 해당 리밋입니다.
liquidationPriceUsdtDrops String USDT drops 단위의 청산 가격입니다(1e6 = 1 USDT); SPOT 1x LONG의 경우 null입니다.
notionalUsdtDrops String! USDT drops 단위의 명목 가치입니다(collateral * leverage, 1e6 = 1 USDT).
paidAmountUsdtDrops String! 포지션 개설에 지불한 금액입니다(USDT drops 단위, 1e6 = 1 USDT).
pnlUsdtDrops String! USDT drops 단위의 실현 PnL입니다(1e6 = 1 USDT).
positionType PositionType! 포지션 유형: SPOT(1x LONG) 또는 FUTURES(레버리지 LONG / SHORT).
realizedFeesUsdtDrops String! 이 포지션에 대해 지불한 총 수수료입니다(USDT drops 단위, 1e6 = 1 USDT).
scoreForPosition Float! 이 포지션으로 획득한 포인트 프로그램 점수입니다.
side PositionSide! 포지션 방향: LONG 또는 SHORT.
timestamp DateTime! 포지션이 개설된 시점입니다.
token PublicClosedPositionTokenInfoOutput! 이 포지션이 개설된 토큰입니다.

PublicClosedPositionTokenInfoOutput object#

필드

이름타입설명
avatarUrl String!
id String!
name String!
rank TurboTokenRank! 토큰의 순위/등급입니다.
speedMode SpeedMode! 토큰의 거래 속도 모드입니다.
symbol String!
tokenDecimals Int! 토큰 수량의 소수점 자릿수입니다.

PublicFileFinalizeOutput object#

필드

이름타입설명
id ID!
url String! 완료된 파일의 공개 URL입니다.

PublicFileUploadOutput object#

필드

이름타입설명
fields [PublicFormField!]! S3 presigned POST를 위한 폼 필드입니다. 각 (key, value)를 `FormData`에 추가한 다음, 마지막에 `file`을 추가하세요.
id ID! 파일 ID입니다; S3 POST 후 `fileFinalize`에 전달하세요.
uploadUrl String! 멀티파트 폼을 POST할 URL입니다.

PublicFormField object#

필드

이름타입설명
key String!
value String!

PublicMinimalUserOutput object#

필드

이름타입설명
avatarToken String!
id ID!
profileName String!

PublicPositionOpenedEvent object#

필드

이름타입설명
amountWei String!
buyPriceUsdtDrops String! USDT drops 단위의 진입 가격입니다.
collateralUsdtDrops String! USDT drops 단위의 담보 금액입니다(사용자 입력값에서 수수료를 제외한 값).
currentPriceUsdtDrops String! USDT drops 단위의 현재 가격입니다.
leverageX10 Int!
limit PublicTradeLimitOutput
liquidationPriceUsdtDrops String USDT drops 단위의 청산 가격입니다(SPOT 1x LONG의 경우 null).
notionalUsdtDrops String! USDT drops 단위의 명목 가치입니다(collateral * leverage).
paidAmountUsdtDrops String! USDT drops 단위의 지불 금액입니다.
pnlUsdtDrops String! USDT drops 단위의 실시간 PnL입니다.
positionId ID!
positionType PositionType!
side PositionSide!
timestamp DateTime!
tokenId String!
type TurboTokenPositionEventType!

PublicPriceTick object#

필드

이름타입설명
price Float!
tokenId ID!

PublicTokenListItemOutput object#

필드

이름타입설명
avatarUrl String!
boostedUntil DateTime 이 토큰의 활성 부스트가 만료되는 시점이며, 부스트가 적용되지 않은 경우 null입니다.
buysCount Int!
creator PublicMinimalUserOutput!
description String
endDate DateTime!
id ID!
initialPrice Float!
name String!
price Float!
rank TurboTokenRank!
sellsCount Int!
speedMode SpeedMode!
startDate DateTime!
symbol String!
uniqueTradersCount Int!
volumeUsdtDrops String! 누적 거래량입니다(USDT drops, 1e6 = 1 USDT).

PublicTokenStatisticsOutput object#

필드

이름타입설명
buysCount Int!
nonMmVolumeFromBoostersUsdtDrops String!
sellsCount Int!
totalVolumeUsdtDrops String!
uniqueTradersCount Int!
volumeFromBoostersUsdtDrops String!

PublicTradeCloseOutput object#

필드

이름타입설명
amountUsdtDrops String! 수수료를 제외한 USDT drops 단위의 포지션 금액입니다.
closePriceUsdtDrops String!
closeType TurboTokenPositionCloseType! 포지션이 종료된 방식입니다.
closedAt DateTime!
leverageX10 Int! 레버리지 X10(10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
paidAmountUsdtDrops String! USDT drops 단위의 지불 금액입니다.
pnlPercentage String!
pnlUsdtDrops String!
positionId String!
positionType PositionType! 포지션 유형(SPOT 또는 FUTURES)입니다.
receivedAmountUsdtDrops String! 포지션 종료 후 수령한 금액입니다(USDT drops 단위).
side PositionSide! 포지션 방향(LONG 또는 SHORT)입니다.
tokenId String!
totalCloseFeeUsdtDrops String! USDT drops 단위의 종료 수수료 + 수익 수수료입니다.

PublicTradeLimitOutput object#

필드

이름타입설명
positionId ID! 이 리밋이 첨부된 포지션의 ID입니다.
slTriggerPnlUsdtDrops String USDT drops 단위의 손절(stop-loss) 트리거 PnL입니다(1e6 = 1 USDT); 설정되지 않은 경우 null입니다.
slTriggerPriceUsdtDrops String USDT drops 단위의 손절(stop-loss) 트리거 가격입니다(1e6 = 1 USDT); 설정되지 않은 경우 null입니다.
tokenId String! 포지션이 거래하는 토큰의 ID입니다.
tpTriggerPnlUsdtDrops String USDT drops 단위의 익절(take-profit) 트리거 PnL입니다(1e6 = 1 USDT); 설정되지 않은 경우 null입니다.
tpTriggerPriceUsdtDrops String USDT drops 단위의 익절(take-profit) 트리거 가격입니다(1e6 = 1 USDT); 설정되지 않은 경우 null입니다.
userId String! 소유자 사용자의 ID입니다.

PublicTradePositionOutput object#

필드

이름타입설명
amountUsdtDrops String!
amountWei String!
collateralUsdtDrops String! USDT drops 단위의 담보 금액입니다(사용자 입력값에서 수수료를 제외한 값).
id ID!
leverageX10 Int!
limit PublicTradeLimitOutput
liquidationPriceUsdtDrops String USDT drops 단위의 청산 가격입니다(SPOT 1x LONG의 경우 null).
notionalUsdtDrops String! USDT drops 단위의 명목 가치입니다(collateral * leverage).
positionType PositionType!
priceUsdtDrops String!
side PositionSide!
timestamp DateTime!

PublicUserOutput object#

필드

이름타입설명
avatarToken String!
createdAt DateTime!
description String
evmWalletAddress String
id ID!
profileName String!
referralCode String!
solanaWalletAddress String
status UserStatus!
telegram String
tiktok String
twitter String
waitlistEmail String
walletType UserWalletType!
xUsername String

Unions

Input Types

CursorPaginationInput input#

필드

이름타입설명
afterCursor String
beforeCursor String
last Boolean `limit`에 따라 마지막 항목들을 반환합니다.
limit Float!

PublicBoosterBuyInput input#

필드

이름타입설명
boosterType TokenBoosterType! 구매할 부스터 등급입니다.
tokenId String! 부스트할 토큰의 ID입니다.
usePackageCredits Boolean! 현금 잔액 대신 크리에이터 프로그램 패키지 크레딧으로 결제합니다.

PublicClaimCreatorFeeInput input#

필드

이름타입설명
tokenId ID!

PublicClosedPositionsInput input#

필드

이름타입설명
pagination CursorPaginationInput!
tokenId ID 단일 토큰으로 제한합니다; 모든 토큰을 대상으로 하려면 생략하세요.

PublicFileUploadInput input#

필드

이름타입설명
mimeType String! 업로드할 파일의 MIME 유형입니다(예: `image/png`).
size Int! 바이트 단위의 파일 크기입니다.

PublicTokenCreateInput input#

필드

이름타입설명
buyUsdtDrops String USDT drops 단위의 초기 매수 금액입니다(1e6 = 1 USDT).
description String
fileId String `fileFinalize`에서 반환된 파일 ID입니다.
name String!
priceMode TurboPriceMode
rank TurboTokenRank
symbol String!
turboTokenMode TurboTokenMode
xLink String

PublicTradeCloseInput input#

필드

이름타입설명
positionId ID!
tokenId ID!

PublicTradeLimitConfigInput input#

필드

이름타입설명
slTriggerPnlUsdtDrops String 손절(stop loss)에 대한 USDT drops 단위의 PnL입니다(음수 값).
slTriggerPricePercentage Float 진입 가격 대비 비율을 소수 형식으로 나타낸 값으로, 1 = 100%, 0.5 = 50%입니다. LONG: 1 미만이어야 하며, SHORT: 1 초과여야 합니다.
slTriggerPriceUsdtDrops String
tpTriggerPnlUsdtDrops String 익절(take profit)에 대한 USDT drops 단위의 PnL입니다(양수 값).
tpTriggerPricePercentage Float 진입 가격 대비 비율을 소수 형식으로 나타낸 값으로, 1 = 100%, 2 = 200% 등입니다. LONG: 1 초과여야 하며, SHORT: 1 미만이어야 합니다.
tpTriggerPriceUsdtDrops String

PublicTradeLimitDeleteInput input#

필드

이름타입설명
positionId String!

PublicTradeOpenInput input#

필드

이름타입설명
amountWei String 매수할 wei 단위의 토큰 수량입니다. `usdtDrops`와 상호 배타적입니다.
leverageX10 Int! 레버리지 X10(10 = 1.0x, 20 = 2.0x, 100 = 10.0x).
side PositionSide!
tokenId ID!
type PositionType!
usdtDrops String 지출할 총 USDT drops입니다(collateral + fees). `amountWei`와 상호 배타적입니다.

Enums

PositionSide enum#

이름설명
LONG
SHORT

PositionType enum#

포지션 유형: SPOT(1x LONG) 또는 FUTURES(레버리지 LONG / SHORT)

이름설명
FUTURES
SPOT

PublicUnclaimedBalanceType enum#

이름설명
BONDED_TURBO_TOKEN_FEE
CREATOR_FEE
CREATOR_PROGRAM_REFERRAL_REWARD
MINDSHARE_REWARD
PRESALE_REFERRAL_REWARD
REFERRAL_REWARD
SEASON_REWARD

SortDirection enum#

이름설명
Asc
Desc

SpeedMode enum#

이름설명
CRACK
FAST
FLASH
MAYHEM
NORMAL

TokenBoosterType enum#

이름설명
B1
B2
B3
B4
B5
B6

TurboPriceMode enum#

이름설명
FiveHundred
Hundred
One
Ten

TurboTokenListSorting enum#

이름설명
BuysCount
SellsCount
StartTime
TimeLeft
TradersCount
Volume

TurboTokenMode enum#

이름설명
Crack
Fast
Flash
Mayhem
Slow

TurboTokenPositionCloseType enum#

이름설명
EXPIRED
LIQUIDATION
STOP_LOSS
TAKE_PROFIT
USER_SELL

TurboTokenPositionEventType enum#

이름설명
POSITION_CLOSED
POSITION_OPENED
POSITION_UPDATED

TurboTokenRank enum#

이름설명
Competition
Private
Public

UserStatus enum#

이름설명
GUEST
MEMBER

UserWalletType enum#

이름설명
Embedded
External

Scalars

DateTime scalar#

2019-12-03T09:54:33Z와 같이 date-time 형식을 준수하는 UTC 기준 날짜-시간 문자열입니다.