Быстрый старт: chains → currencies → quote → status

Официально: Quickstart · API Overview

Полный учебный цикл Relay на портале — пять шагов (как в песочнице в режиме «Обучение»). Пример из доков Relay: мост ETH Base → Arbitrum.

Внимание: исполнение steps из котировки двигает реальные средства. Первый раз — минимальная сумма. У Relay есть testnet API; учебные шаблоны портала ходят в mainnet https://api.relay.link.

Шаг 1. Сети — GET /chains#

curl -s https://api.relay.link/chains | jq '.chains[] | {id,name,disabled,tokenSupport}'

Через портал: провайдер Relay.link → шаг «Сети» (или шаблон GET /chains). Нужны numeric id: Base = 8453, Arbitrum = 42161, Ethereum = 1. Сети с disabled: true не используйте.

Native ETH обычно имеет адрес 0x0000000000000000000000000000000000000000.

Шаг 2. Валюты — POST /currencies/v2#

curl -s -X POST https://api.relay.link/currencies/v2 \
  -H "Content-Type: application/json" \
  -d '{"defaultList": true}'

Ответ: { chainId, address, symbol, decimals, vmType }. Сумма в quote — в наименьших единицах (учитывайте decimals). Для фильтра по сети:

{ "chainIds": [8453], "defaultList": false }

Снимок majors на портале: Токены и сети.

Шаг 3. Котировка — POST /quote/v2#

curl -X POST "https://api.relay.link/quote/v2" \
  -H "Content-Type: application/json" \
  -d '{
    "user": "YOUR_WALLET",
    "recipient": "YOUR_WALLET",
    "originChainId": 8453,
    "destinationChainId": 42161,
    "originCurrency": "0x0000000000000000000000000000000000000000",
    "destinationCurrency": "0x0000000000000000000000000000000000000000",
    "amount": "100000000000000",
    "tradeType": "EXACT_INPUT"
  }'

amount здесь = 0.0001 ETH (10^14 wei). tradeType: EXACT_INPUT | EXACT_OUTPUT | EXPECTED_OUTPUT.

В ответе: steps[] (что подписать/отправить) и requestId.

Опасно для исполнения: сам POST не списывает средства, но шаги из ответа — да. В песочнице шаблон помечен danger + галочка подтверждения. Для превью смотрите indicativeQuote в спецификации quote/v2.

Шаг 4. Исполнение steps (вне портала)#

Клиент обходит steps: для kind: "transaction" — sendTransaction; для kind: "signature" — подпись. Подробно: Understanding Step Execution.

Шаг 5. Статус — GET /intents/status/v3#

curl "https://api.relay.link/intents/status/v3?requestId=REQUEST_ID_FROM_QUOTE"

Типичный путь: waiting → pending → success (также refund / failure — Refunds).

Бонус: appFees#

В теле quote добавьте appFees: [{ "recipient": "0x…", "fee": "100" }] (fee в bps, 100 = 1%). Если задаёте referrer — нужен API-ключ (аутентификация, страница /api-keys-install).

На портале#

  1. Песочница → Relay.link → режим Обучение.
  2. Шаги: Сети → Валюты → Котировка → Статус → Заработок (appFees).
  3. Режим Эксперт — raw JSON и свои шаблоны в localStorage.
  4. Прокси: /api/proxy/relay/* (allowlist; ключ только на сервере).