메인 콘텐츠로 건너뛰기

HTTP 상태 코드

상태의미재시도 가능
200성공해당 없음
400잘못된 요청 (잘못된 매개변수, 잘못된 민트, 지원되지 않는 토큰 프로그램)아니오
401인증 실패 (누락 또는 잘못된 API 키)아니오
404지원되지 않는 마켓 또는 아직 인덱싱되지 않은 민트아니오 (아래 참조)
422처리 불가 (유효한 요청이지만 실행 가능한 경로 없음)아니오
429속도 제한
502잘못된 게이트웨이 (업스트림 RPC 또는 DEX 장애)
503서비스 사용 불가 (라우터 준비되지 않음 또는 일시 중지)
500내부 서버 오류

응답 엔벨로프

성공

{
  "status": "ok",
  "tx": "base64-encoded unsigned transaction",
  "route": { "market_type": "pumpswap", "pool_id": "..." }
}

지원되지 않는 마켓

지원되는 DEX에서 실행 가능한 경로가 없는 민트일 때 반환됩니다. message 필드는 사람과 AI가 읽을 수 있는 설명을 제공합니다.
{
  "status": "unsupported",
  "reason": "no_route",
  "message": "No supported market found for this mint. Supported DEXs: PumpSwap, Raydium (CPMM, Launchpad), Meteora (DBC, DAMM v2), Pump.fun."
}
사유상태설명
no_route404이 민트에 대한 풀이 지원되는 DEX에 없음
invalid_mint400민트 주소가 온체인에 존재하지 않음
unsupported_token_program400토큰이 SPL Token 또는 Token-2022 이외의 프로그램 사용

인덱싱되지 않음

민트가 존재하지만 아직 해석되지 않았을 때 반환됩니다. 짧은 지연 후 재시도하세요.
{
  "status": "not_indexed",
  "mint": "So11111111111111111111111111111111111111112",
  "reason": "mint not indexed yet; try again shortly"
}

오류

검증 실패, 속도 제한, 서버 오류에 대한 일반 오류 응답입니다.
{
  "error": "descriptive error message"
}
SDK는 모든 응답 변형을 파싱하고 ExitApiError 타입을 통해 표면화합니다.

ExitApiError 종류

모든 SDK는 kind 판별자가 있는 ExitApiError(또는 동등물)를 노출합니다:
종류트리거재시도 가능
transport네트워크 장애, DNS 오류, 타임아웃
http_status2xx가 아닌 HTTP 응답상태 >= 500 또는 429인 경우 예
envelope_status서버가 { "status": "error" }를 반환아니오
parse응답 본문을 JSON으로 파싱할 수 없음아니오

재시도 가능 여부 확인

import { ExitApiError } from "@lasersell/lasersell-sdk";

try {
  const response = await client.buildSellTx(request);
} catch (error) {
  if (error instanceof ExitApiError) {
    console.log("Kind:", error.kind);
    console.log("Retryable:", error.isRetryable());
    console.log("HTTP status:", error.status);
    console.log("Body:", error.body);
  }
}

내장 재시도 동작

모든 SDK에는 다음 기본값으로 자동 재시도가 포함됩니다:
설정기본값
최대 시도2
초기 백오프25 ms
최대 백오프25 ms
지터25 ms
연결 타임아웃200 ms
시도 타임아웃900 ms
isRetryable()true를 반환하는 오류(전송 장애, 5xx 응답, 429 속도 제한)에 대해서만 재시도가 트리거됩니다.

재시도 정책 사용자 정의

const client = ExitApiClient.withOptions("YOUR_API_KEY", {
  attempt_timeout_ms: 2000,
  retry_policy: {
    max_attempts: 3,
    initial_backoff_ms: 50,
    max_backoff_ms: 200,
    jitter_ms: 50,
  },
});

모범 사례

  • 400, 401, 422 오류는 재시도하지 마세요. 코드에서 수정해야 할 요청 또는 인증 문제입니다.
  • "status": "unsupported"404재시도하지 마세요. 민트에 지원되는 마켓이 없습니다.
  • "status": "not_indexed"404한 번 재시도하세요. 민트가 해석에 잠시 시간이 필요할 수 있습니다.
  • 429 응답에는 지수 백오프를 적용하세요. 내장 재시도가 자동으로 처리합니다.
  • 502503 오류에는 백오프와 함께 재시도하세요. 일시적인 인프라 문제입니다.
  • 디버깅을 위해 kind, status, body를 포함한 오류 세부사항을 기록하세요.
  • 일관된 envelope_status 오류가 보이면 mint 주소와 user_pubkey가 올바른지 확인하세요.