Ордера размещаются через POST /api/orders (один ордер) или POST /api/orders/batch (до 15), отменяются через DELETE /api/orders/:id или DELETE /api/orders, а средства превращаются в пары и обратно через /api/split и /api/merge. На seeryx.com каждый ордер, разделение и объединение содержит объект signed, созданный ключом вашей торговой сессии: как это сделать, показано на странице Подпись ордеров; примеры на этой странице делают это за вас.
В каждом торговом POST и DELETE: 8–128 букв, цифр, _ или -, новый для каждой операции. Тот же ключ с тем же телом возвращает тот же ответ, что и первый запрос, и ничего не меняет; с другим телом запрос отклоняется. Ключи хранятся 24 часа.
Сразу исполняется против того, что предлагается по его цене или лучше, а остаток стоит в стакане, пока не исполнится, пока вы его не отмените или пока раунд не закроется.
Лимитный, «Только мейкер»
shares, limit, postOnly: true
Встаёт в стакан целиком или отклоняется (400 would_take): он никогда не забирает ликвидность, поэтому никогда не платит комиссию тейкера.
Рыночная покупка
amount, cap
Сразу тратит до amount USDC (включая комиссию) по ценам не выше cap; остаток отбрасывается и никогда не встаёт в стакан.
Рыночная продажа
shares, cap
Сразу продаёт до shares долей по ценам не ниже cap; остаток отбрасывается.
Поле
Тип
Описание
slugобязательно
string
Раунд, который торгуется (текущий или предстоящий), или открытый событийный рынок.
sideобязательно
up | down
Исход, которым вы торгуете (на событийном рынке «Да» — это up, «Нет» — down).
actionобязательно
buy | sell
Для продажи нужны ваши доли, которые не зарезервированы другой продажей в стакане.
typeобязательно
limit | market
См. выше.
sharesнеобязательно
number
Лимитные ордера и любые продажи.
amountнеобязательно
number
Рыночные покупки: максимальная сумма в USDC, включая комиссию тейкера.
limitнеобязательно
number
Лимитные ордера: цена в центах.
capнеобязательно
number
Рыночные ордера: худшая допустимая цена в центах. Покупка не заплатит больше, продажа не получит меньше.
Лимитный ордер в стакане; исполненная рыночная покупка на 5 $; рыночная покупка, у которой cap ниже лучшей цены продажи.
order — id того, что стоит в стакане, или null, если в стакане ничего нет. filled — доли, исполненные сейчас; spent и proceeds — уплаченные и полученные USDC с учётом комиссий.
Рыночный ордер добавляет requested, fee, avgPrice (центы, без комиссии), unspent или unsold, status (filled, partial или none) и, если он исполнен не полностью, reason: no_liquidity, beyond_limit (с bestPrice) или share_limit.
Рыночный ордер, который ничего не исполнил, всё равно возвращает 200, а не ошибку.
Лимитные ордера подписываются до закрытия рынка (конца раунда или closesAt события) и стоят в стакане до этого момента.
Рыночные ордера, разделения и объединения проходят расчёт за несколько секунд, поэтому подписывайте их на 5 минут, но никогда не позже закрытия. Сервер принимает срок действия от 5 секунд вперёд до закрытия.
В последние 5 секунд раунда новые ордера не принимаются (400 «Round is closing»). Ордера в стакане истекают при закрытии и отображаются в вашей активности с типом expire.
Будущие раунды. Следующие десять 5- и 15-минутных раундов (и один следующий для 1h и 1d) уже принимают ордера, поэтому бот может выставлять котировки в раунде ещё до его начала.
POST /api/orders/batch размещает до 15 ордеров одним запросом, в заданном порядке, каждый со своими проверками: ответ содержит по одному { status, body } на ордер — ровно то, что ответил бы POST /api/orders. Ордер i записывается под ключом <your key>-<i>, поэтому повтор всего пакета с тем же ключом ничего не разместит дважды. DELETE /api/orders отменяет все ваши открытые ордера, а с ?slug= — ордера одного рынка, одной транзакцией.
curl
# two orders in one request (on seeryx.com each also carries its own "signed")curl-s-X POST https://seeryx.com/api/orders/batch \
-H"X-Auth-Token: $TOKEN"-H"Idempotency-Key: $(uuidgen)"-H"Content-Type: application/json" \
-d'{"orders":[{"slug":"btc-updown-5m-1791916200","side":"up","action":"buy","type":"limit","shares":5,"limit":40},
{"slug":"btc-updown-5m-1791916200","side":"down","action":"buy","type":"limit","shares":5,"limit":40}]}'# {"results":[{"status":200,"body":{"order":21306,...}},{"status":200,"body":{"order":21307,...}}]}# cancel everything still resting in the roundcurl-s-X DELETE "https://seeryx.com/api/orders?slug=btc-updown-5m-1791916200"-H"X-Auth-Token: $TOKEN"-H"Idempotency-Key: $(uuidgen)"# {"success":true,"cancelled":[21306,21307]}
POST /api/split с { slug, amount } превращает amount USDC в столько же долей «Вверх» и «Вниз»; POST /api/merge с { slug, shares } превращает пары обратно в 1,00 $ за каждую. Без комиссии; минимум — 5 пар; на seeryx.com подписывается сообщением PMS1.
Средства. Покупки в стакане не блокируют средства, но все ваши открытые покупки на одном рынке вместе с комиссией тейкера по их лимитной цене должны укладываться в свободные средства. Средства списываются только при исполнении ордера; покупка, которую вы больше не можете оплатить, отменяется.
Ваши собственные ордера. Ордер может исполниться против ваших же ордеров в стакане и тогда платит комиссию тейкера, как любой другой; ордер «Только мейкер» в таком случае отклоняется.
Ордера в стакане. Не более 200 на аккаунт и 100 на одном рынке (400 open_orders_limit).
Частота запросов. 250 запросов на размещение, отмену, разделение и объединение за 10 секунд на аккаунт; каждый ордер пакета считается отдельно (429 rate_limited). См. Лимиты запросов и ошибки.
Если GET /api/funds сообщает onChainTrading (на seeryx.com — всегда), тело также содержит "signed", созданный ключом вашей торговой сессии: см. раздел «Подпись ордеров».
order — id той части, что стоит в стакане, или null, если в стакане ничего нет. filled — доли, исполненные сейчас; spent и proceeds — уплаченные и полученные USDC с учётом комиссий.
Рыночный ордер возвращает полный результат: requested, fee, avgPrice (центы, без комиссии), unspent (покупка) или unsold (продажа), status "filled", "partial" или "none", а при неполном исполнении — reason: "no_liquidity" (в стакане закончилась ликвидность), "beyond_limit" с bestPrice (остаток стоит дальше вашего cap) или "share_limit" (рыночная покупка, подписанная в долях, получила их все по цене ниже своего cap). Рыночный ордер, который ничего не исполнил, всё равно возвращает 200.
Статус
Когда
400
Неверные входные данные («Invalid limit», «Invalid slug»), «Round is not live», «Round is closing», «Insufficient balance», «Insufficient free shares», несовпадающий подписанный ордер
400 below_minimum
Меньше долей, чем minOrderShares; ответ дополнительно содержит "minimum"
400 would_take
Ордер «Только мейкер», который исполнился бы сразу
400 open_orders_limit
Слишком много ордеров в стакане; ответ дополнительно содержит "limit": { account, round }
400 trading_paused
Ключ сессии, подписавший ордер, был закрыт: откройте новую сессию и подпишите заново
429 rate_limited
Превышено допустимое число запросов на ордера за интервал; подождите "retryAfter" секунд
503 trading_halted
Торговля остановлена для всех (см. GET /api/notice); отмена ордеров по-прежнему работает
503
«Exchange clock unavailable»: сервер не может подтвердить время раунда; повторите через несколько секунд
POST/api/orders/batch
Разместить до 15 ордеров одним запросом
Вход + Idempotency-Key
Поле
Тип
Описание
ordersтелообязательно
array
От 1 до 15 ордеров, каждый — ровно тело POST /api/orders со своим объектом signed
Размещаются в заданном порядке, каждый со своими проверками; отклонённый ордер не останавливает остальные. Каждый ордер считается одним запросом в лимите запросов.
Ордер i записывается под ключом идемпотентности <your key>-<i> (i с 0; ваш ключ — не длиннее 125 символов), поэтому повтор всего пакета ничего не разместит дважды.
Статус
Когда
400
orders — не список от 1 до 15 ордеров
429 rate_limited
Пакет превысил бы допустимое число запросов на ордера за интервал