Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Trade API — это набор эндпоинтов на transaction-v1.raydium.io (и зеркалированные пути на api-v3.raydium.io), которые выдают котировку свопа, строят подписанную готовую транзакцию Solana и возвращают её в один запрос туда-обратно. Это тот же интерфейс, который использует UI Raydium. Используйте его, когда вам нужна маршрутизация Raydium без подключения TS SDK — для бэкендов, Blink-обработчиков, ботов Telegram, приложений третьих сторон.

Когда использовать Trade API вместо SDK

SDK богаче; Trade API проще. Оба оборачивают одни и те же программы CPMM/CLMM/AMM v4, поэтому результирующий своп on-chain идентичен.

Три эндпоинта

1. GET /compute/swap-base-in

По размеру входа выбирает маршрут и возвращает котировку.
Ответ:
Поле id — это непрозрачный дескриптор котировки, передаваемый на следующий эндпоинт. Котировка стабильна примерно 30 секунд; после этого запросите новую.

2. GET /compute/swap-base-out

Инвертированная форма: «я хочу получить ровно N выходного токена; сколько мне нужно входного?»
Симметричная форма ответа относительно swap-base-in; семантика поля amount меняется.

3. POST /transaction/swap-base-in и /transaction/swap-base-out

Принимает котировку из шага 1 и возвращает подписанную готовую версионированную транзакцию:
Ответ:
Может вернуться несколько транзакций, если своп требует подготовки (например, создание ATA, оборачивание SOL). Подпишите и отправьте их по порядку.

Минимальный end-to-end пример (Python)

Это примерно 20 строк. Аналог с TS SDK — примерно 30, но дает вам больше контроля (пользовательский выбор маршрута, бюджетирование Compute Unit для каждого пула, подробные метаданные об ошибках).

Маршрутизация и выбор пула

Trade API маршрутизирует через все программы Raydium (CPMM, CLMM, AMM v4) и выбирает лучшее выполнение для запрошенного размера. Характеристики:
  • Поддерживается многоскачковая маршрутизация. Своп SOL→USDC может маршрутизироваться через wSOL→JUP→USDC, если это дешевле.
  • Разделение по нескольким пулам одной программы не поддерживается. Одна котировка проходит ровно по одному маршруту; если вам нужно разделить размер по пулам, делайте это на клиентской стороне (две котировки, два tx).
  • Стабильные vs концентрированные. Маршрутизатор предпочтительно использует CLMM, когда в диапазоне достаточно ликвидности, иначе откатывается на CPMM для длинного хвоста пар.
  • Включение AMM v4. Пулы AMM v4 включены в маршрутизацию, но выбираются только если предлагают лучшую цену, чем альтернативы CPMM/CLMM.
Чтобы принудительно направить маршрутизацию через определённый пул, используйте SDK вместо этого — Trade API не предоставляет параметр привязки к пулу.

Параметр referrer

Добавьте &referrer=<wallet_pubkey> к эндпоинту compute, чтобы получить 1% реферального вознаграждения от свопа. см. user-flows/referrals-and-blinks для деталей. При наличии:
  • referrerAmount в ответе котировки — это абсолютная сумма (в входном токене), которая будет отправлена рефереру.
  • Финальная транзакция содержит дополнительный трансфер SPL-токена на ATA рефереру.

Приоритетные комиссии

computeUnitPriceMicroLamports в запросе сборки устанавливает приоритетную комиссию для возвращённой транзакции. Правило практики:
  • 50_000 (0.00005 lamports/CU × 200k CU ≈ 0.00001 SOL): минимальная, подходит для некритичных моментов.
  • 200_000: умеренная перегруженность.
  • 1_000_000: высокая перегруженность.
Для адаптивной настройки сначала вызовите getRecentPrioritizationFees на вашем RPC и передайте медиану. см. integration-guides/priority-fee-tuning.

Версии транзакций

  • "V0" возвращает версионированную (MessageV0) транзакцию с таблицей поиска для обычных аккаунтов. Меньше, быстрее. Рекомендуется.
  • "LEGACY" возвращает legacy-транзакцию. Больше; используйте только если ваш кошелёк/инфраструктура не поддерживает V0.

Формы ошибок

API возвращает HTTP 200 с success: false для логических ошибок, HTTP 4xx/5xx для ошибок транспорта / инфраструктуры. Распространённые логические ошибки:
  • "No route found" — нет пути между двумя минтами при таком размере. Уменьшите amount или пересмотрите пару.
  • "Insufficient liquidity" — маршрут существует, но превышает slippageBps. Расширьте слиппедж.
  • "Quote expired"swapResponse старше 30 секунд. Запросите новую котировку.
  • "Unsupported mint" — минт не входит в вселенную Raydium (не листирован или на устаревшей программе).

Лимиты частоты запросов

  • Эндпоинты котировок: 120 запросов/мин на IP.
  • Эндпоинты сборки: 60 запросов/мин на IP (выше нагрузка на сервер).
  • Превышение лимитов возвращает HTTP 429 с заголовком Retry-After.
Для повышенной пропускной способности свяжитесь с отделом разработчиков Raydium; доступны ключи на уровне агрегаторов.

Архитектурный паттерн для интеграторов

Всё без состояния — единственное, что нужно передать между вызовом котировки и вызовом сборки — это сам результат котировки.

Куда дальше

  • sdk-api/typescript-sdk — богатый программный интерфейс с теми же программами.
  • sdk-api/rest-api — read-эндпоинты (информация о пулах, информация о минтах) для дополнения write-стороны Trade API.
  • user-flows/swap — полный UI-флоу свопа.
  • integration-guides/aggregator — паттерн для агрегаторов, маршрутизирующих через многие DEX’ы.
Источники:
  • Живые эндпоинты transaction-v1.raydium.io.
  • Инспекция сетевой вкладки Raydium UI (тот же используемый интерфейс).