> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spreader.sh/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Spreader is a web service that tracks arbitrage spreads between crypto exchanges. This documentation covers only what a user of the service sees and does.
> Page paths starting with /en/ are English. Translations live under /ru/ and /uk/ with the same file names.
> Screenshots are illustrations. Every screenshot is accompanied by text that states the same facts, so you do not need to see the image.

# Ссылки на страницу спреда

> Грамматика адреса страницы спреда /spread?long=exchange:type:NAME&short=exchange:type:NAME, две формы имени маркета, кодирование и что сервер делает с неточным адресом.

У каждой страницы спреда есть стабильный адрес, который можно собрать в своей программе или боте. Грамматика ниже используется и ботом Spreader, и каждой ссылкой, которую пишет сайт.

## Формат

```
/spread?long=<leg>&short=<leg>
leg = exchange:type:NAME
```

| Часть | Что это | Примеры |
| - | - | - |
| `exchange` | Код биржи из таблицы [Биржи](https://docs.spreader.sh/ru/exchanges/overview.md) | `binance`, `okx`, `bybit`, `gate`, `whitebit`, `hyperliquid`, `bybitfi`, `gatefi`, `binancedex` |
| `type` | Тип маркета | `spot`, `perp` (бессрочный контракт), `margin` (шорт на марже, спотовый маркет с маржинальной торговлей) |
| `NAME` | Имя маркета в одной из двух форм, см. ниже | `BTC/USDT`, `xyz:GOLD` |

Регистр не важен для биржи, типа, монеты и котировки: `OKX:Perp:btc/usdt` и `okx:perp:BTC/USDT` — одно и то же. Порядок двух параметров не важен. `long` — нога, которую вы покупаете, `short` — нога, которую продаёте.

## Читаемая форма: `COIN/QUOTE`

Так внешняя программа собирает ссылку и так сайт пишет почти все свои ссылки. Монета и котировка — **как их называет биржа**, а не как Spreader называет актив: контракт на тысячу PEPE на Binance — `1000PEPE/USDT`, а не `PEPE/USDT`, золото на Bybit TradFi — `XAUUSD+/USD`.

```
/spread?long=okx:perp:BTC/USDT&short=whitebit:margin:BTC/USDT
/spread?long=binance:perp:1000PEPE/USDT&short=gate:perp:PEPE/USDT
/spread?long=gate:spot:NEAR/USDT&short=okx:perp:NEAR/USDT
```

Котировку можно опустить (`okx:perp:ETH`), когда у монеты одна котировка на этой бирже и в этом типе. При нескольких котировках страница показывает список для выбора.

## Точная форма: символ биржи

Имя маркета буква в букву, как его называет биржа: `BTC-USDT-SWAP` на OKX, `xyz:GOLD` на builder-DEX Hyperliquid, `PF_XBTUSD` на Kraken. Она нужна, когда читаемой формы недостаточно:

* **Двойники**: у биржи два маркета одного типа по одной монете и котировке, например `xyz:AAOI` и `para:AAOI` на Hyperliquid, `AAPLx/USD` и `AAPLSPV/USD` на Kraken, два токена Binance Alpha с одним тикером. Такие маркеты сайт пишет по символу, чтобы ссылка всегда открывала именно тот маркет, который вы нажали.
* **Снятые с торгов маркеты**: только точная форма открывает их страницу с плашкой о снятии и сохранённой историей.

```
/spread?long=kraken:perp:PF_XBTUSD&short=okx:perp:BTC/USDT
/spread?long=bybitfi:perp:AAOI/USD&short=hyperliquid:perp:xyz:AAOI
```

## Кодирование

`:` и `/` пишутся как есть. Кодируются только символы, запрещённые в адресе: `&` → `%26`, пробел → `%20`, `$` → `%24`, нелатинские буквы — как UTF-8. `bybitfi:perp:AT&T/USD` становится `bybitfi:perp:AT%26T/USD`. Браузеры делают это сами. В коде используйте стандартный кодировщик компонентов URL и верните `:` и `/` обратно.

## Что сервер делает с набранным адресом

Сервер не угадывает. Для каждой ноги, в пределах биржи и типа (для `margin` — среди спотовых маркетов с маржинальной торговлей):

1. **Точное имя.** Если `NAME` равно символу маркета, это он, в любом статусе (так открываются снятые с торгов маркеты). Если `NAME` содержит `/`, часть до последнего `/` равна символу, а часть после — его котировке, это тоже он (`hyperliquid:perp:xyz:GOLD/USDC`).
2. **По монете и котировке** среди торгуемых и снимаемых маркетов: часть до последнего `/` — монета, после — котировка. Ровно один маркет: он. Несколько: страница **Ноге лонг подходят несколько маркетов — выберите** с точной ссылкой на каждого кандидата. Ни одного: **Ноге лонг не подходит ни один маркет. Котировки этой монеты там: …** с котировками монеты на этой бирже.
3. **Без котировки** (`okx:perp:ETH`): одна котировка — этот маркет. Несколько: список.

Пара целиком должна быть двумя разными маркетами одного актива в допустимом типе: спот только длинной ногой, маржа только короткой, спот против спота только на разных биржах. Иначе страница показывает **Ноги принадлежат разным активам**, **Обе ноги указывают на один маркет** или **Не удалось разобрать ногу лонг**, но никогда не пустой экран. Адрес, который нельзя разобрать вовсе, включая старую форму `/spread?p=…`, открывает сканер.

## Как сайт пишет свои ссылки

Каждый объект маркета, который сайт отправляет в браузер, несёт готовый токен ноги: читаемую форму, если у маркета нет двойника среди торгуемых маркетов того же типа, монеты и котировки, иначе символ. Когда вы открываете пару нажатием без ссылки (поиск, Конструктор пары, стрелки), страница заменяет адрес в браузере на читаемую форму без записи в истории, так что скопированный адрес всегда одинаков.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.