Skip to main content

ExitApiError Kinds

Every SDK exposes an ExitApiError (or equivalent) with a kind discriminator:
KindTriggerRetryable
transportNetwork failure, DNS error, timeoutYes
http_statusNon 2xx HTTP responseYes if status >= 500 or 429
envelope_statusServer returned { "status": "error" }No
parseResponse body could not be parsed as JSONNo

Checking Retryability

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);
  }
}

Built in Retry Behavior

All SDKs include automatic retry with these defaults:
SettingDefault Value
Max attempts2
Initial backoff25 ms
Max backoff25 ms
Jitter25 ms
Connect timeout200 ms
Attempt timeout900 ms
Retries only trigger for errors where isRetryable() returns true (transport failures, 5xx responses, and 429 rate limits).

Customizing Retry Policy

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,
  },
});