Documentation Index
Fetch the complete documentation index at: https://docs.lasersell.io/llms.txt
Use this file to discover all available pages before exploring further.
HTTP коды статусов
| Статус | Значение | Повторяемый |
|---|
| 200 | Успех | Н/Д |
| 400 | Неверный запрос (невалидные параметры, невалидный минт, неподдерживаемая программа токенов) | Нет |
| 401 | Не авторизован (отсутствующий или неверный API ключ) | Нет |
| 404 | Неподдерживаемый рынок или минт ещё не проиндексирован | Нет (см. ниже) |
| 422 | Необрабатываемый (валидный запрос, но нет жизнеспособного маршрута) | Нет |
| 429 | Превышен лимит запросов | Да |
| 502 | Bad gateway (сбой вышестоящего RPC или DEX) | Да |
| 503 | Сервис недоступен (маршрутизатор не готов или приостановлен) | Да |
| 500 | Внутренняя ошибка сервера | Да |
Конверты ответов
Успех
{
"status": "ok",
"tx": "base64-encoded unsigned transaction",
"route": { "market_type": "pumpswap", "pool_id": "..." }
}
Неподдерживаемый рынок
Возвращается, когда у минта нет жизнеспособного маршрута на любом поддерживаемом DEX. Поле message содержит человекочитаемое и ИИ-читаемое объяснение.
{
"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_route | 404 | Ни один поддерживаемый DEX не имеет пула для этого минта |
invalid_mint | 400 | Адрес минта не существует в блокчейне |
unsupported_token_program | 400 | Токен использует программу, отличную от 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 предоставляет ExitApiError (или эквивалент) с дискриминатором kind:
| Kind | Триггер | Повторяемый |
|---|
transport | Сбой сети, ошибка DNS, таймаут | Да |
http_status | Не-2xx 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 мс |
| Макс. задержка | 25 мс |
| Джиттер | 25 мс |
| Таймаут подключения | 200 мс |
| Таймаут попытки | 900 мс |
Повторные попытки срабатывают только для ошибок, где 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. Они указывают на проблему в запросе или аутентификации, которую нужно исправить в коде.
- Не повторяйте
404 со "status": "unsupported". У минта нет поддерживаемого рынка.
- Повторите один раз при
404 со "status": "not_indexed". Минту может потребоваться время для разрешения.
- Используйте экспоненциальную задержку при ответах
429. Встроенные повторные попытки обрабатывают это автоматически.
- Повторяйте с задержкой при ошибках
502 и 503. Это временные проблемы инфраструктуры.
- Логируйте детали ошибок, включая
kind, status и body для отладки.
- Если вы видите постоянные ошибки
envelope_status, проверьте корректность вашего адреса mint и user_pubkey.