Введение
SecretCryptos API предоставляет безопасный, простой и стабильный доступ к нашим сервисам Миксер и Обмен. Этот «Lite»-документ сосредоточен на основных конечных точках, чтобы вы могли быстро начать работу.
Базовый URL: https://api.secretcryptos.com/v1
Пример: GET /v1/ping
– попробовать
Вы также можете открыть корневую страницу в реальном времени: api.secretcryptos.com.
Дополнительные ссылки: Хаб ссылок • Документация API (Swagger UI) • Организация GitHub.
Аутентификация
- Заголовок:
Authorization: Bearer YOUR_API_KEY
- Все запросы должны использовать HTTPS.
Получить API-ключ
- Создайте аккаунт или войдите на Партнёр.
- Откройте верхнее меню и нажмите вкладку API.
- Скопируйте ваш API-KEY (держите его в секрете; он работает и для Миксера, и для Обмена).
Безопасность API-ключа
cURL (серверная сторона)
curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://api.secretcryptos.com/v1/meta/mixer"
PHP-прокси
<?php $ch = curl_init("https://api.secretcryptos.com/v1/meta/exchange"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer YOUR_API_KEY"]); echo curl_exec($ch);
Node.js (Express)
import express from "express"; import fetch from "node-fetch"; const app = express(); app.get("/api/meta/exchange", async (req, res) => { const r = await fetch("https://api.secretcryptos.com/v1/meta/exchange", { headers: { Authorization: "Bearer " + process.env.SECRETCRYPTOS_API_KEY } }); res.status(r.status).type("application/json").send(await r.text()); }); app.listen(3000);
Python (Flask)
from flask import Flask, Response import os, requests app = Flask(__name__) @app.get("/api/meta/mixer") def mixer_meta(): r = requests.get( "https://api.secretcryptos.com/v1/meta/mixer", headers={"Authorization": f"Bearer {os.environ['SECRETCRYPTOS_API_KEY']}"} ) return Response(r.content, status=r.status_code, mimetype="application/json")
Ping
Простая проверка работоспособности и версии.
GET https://api.secretcryptos.com/v1/ping
{ "ok": true, "service": "SecretCryptos API", "version": "1.2.6", "ts": 1723800000 }
ts
: Unix-время (секунды).- Аутентификация не требуется.
МИКСЕР
API Миксера позволяет программно создавать анонимные транзакции. Вы указываете монету, сеть, сумму и один или несколько адресов получателей с процентами распределения и необязательными задержками. Мы выделяем адрес для депозита и возвращаем полный план (комиссии + выводы), чтобы вы могли автоматизировать приём платежей, выплаты или схемы, похожие на эскроу.
- Примеры использования: безопасный приём платежей, автоматическое распределение доходов, выплаты на несколько кошельков, отложенные переводы.
- Получите лимиты и комиссии через
/v1/meta/mixer
перед созданием заказов. - Все денежные поля указываются в единицах монеты, если не указано иное.
- Все временные метки — Unix epoch (секунды, часовой пояс сервера: GMT-3).
МИКСЕР / Создать заказ
Создать новый заказ миксера. Вы указываете монету, сеть, сумму и один или несколько выходных адресов с процентами и задержками. Система выделяет депозитный адрес и возвращает детали заказа, включая комиссии и план распределения.
Правила валидации
amount
: Должно быть в пределахmin_amount
иmax_amount
для выбранной монеты из/v1/meta/mixer
.addresses
: от 1 до 10 выходов.percent
:- Формат: до 2 знаков после запятой (например,
10
,10.5
,10.50
). - Минимум на один адрес:
≥ 1.00
, максимум:≤ 100.00
. - Сумма всех выходов должна быть ровно
100.00
. - Если есть только 1 выход, его процент должен быть ровно
100.00
.
- Формат: до 2 знаков после запятой (например,
delay
:- Принимаются минуты (например,
120
) или метка (например,"2h 0m"
). - Максимум:
48h
(т.е.2880
минут).
- Принимаются минуты (например,
service_fee
(необязательное переопределение):- До 2 знаков после запятой.
- Диапазон:
0.10
–5.00
(%). Если не указано, используется системное значение по умолчанию для монеты.
address format
: Должен соответствовать выбранной сети (например, BTC legacy/SegWit, ERC-200x…
, TRC-20T…
, SOL и т.д.).destination_tag / memo
: Необязательно; требуется для некоторых сетей (например, XRP tag, TON memo).
Примечания
expires_at
: Когда депозитный адрес становится недействительным (epoch seconds).outputs[i].time
: Запланированное время вывода в формате epoch seconds (основано наdelay_minutes
).- Используйте
?pretty=1
для читаемого JSON во время тестирования. - Лимиты: стандартный дневной лимит на один API ключ; более высокие уровни доступны (см. «Ограничения скорости»).
Распространенные ошибки
{ "ok": false, "code": "BAD_REQUEST", "message": "Sum of percents must be exactly 100.00" }
BAD_REQUEST
: Неверное тело запроса, неправильный формат адреса, процент не с двумя десятичными, комиссия вне диапазона, задержка > 48ч и т.д.AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH
: Нарушение минимального/максимального значения для монеты.SERVICE_UNAVAILABLE
: Нет доступного депозитного адреса для этой сети.TOO_MANY_REQUESTS
: Достигнут дневной лимит API.UNAUTHORIZED / FORBIDDEN
: Неверный или отключенный API ключ.
Заголовки
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Тело запроса
{ "action": "create_order", "addresses": [ { "address": "35iMHbUZeTssxBodiHwEEkb32jpBfVueEL", "percent": "84.93", "delay": "0", }, { "address": "1P279UBChDFPAky8S4DcKGaaxKEMYBK9MM", "percent": "15.07", "delay": "120", } ], "amount": "10.00000000", "crypto": "btc", "network": "btc", "partner": "YOUR_PARTNER_KEY", "service_fee": 0.45, "qrcode": 1 }
Тело запроса
{ "action": "create_order", "addresses": [ { "address": "raGXwk3P9yCtT2mGKD7nQdRNDCPSgwb2Kb", "percent": "100", "delay": "0", "destination_tag": "435757008" } ], "amount": "10.00000000", "crypto": "btc", "network": "btc", "partner": "YOUR_PARTNER_KEY", "service_fee": 0.45, "qrcode": 1 }
addresses
: Список выходных адресов. Каждый адрес должен содержать следующие поля:address
: Конечный адрес, на который будут отправлены средства.percent
: Процент от общей суммы для отправки на этот адрес (например,100
для всей суммы или50
для половины).delay
: Задержка перед выполнением транзакции. Может быть указана в минутах (например,120
) или в текстовом формате (например,"2h 0m"
).destination_tag
: Это поле обязательно для сетей XRP и TON. Если не требуется, можно опустить или оставить пустым (например,""
).
amount
: Общая сумма в единицах монеты для перевода. Используйте точку в качестве разделителя (например,10.00000000
).crypto
/network
: Монета и блокчейн-сеть (например,btc
/btc
для Биткойна).partner
: Необязательно, но рекомендуется. Ваш PARTNER KEY доступен в Партнёрском кабинете на вкладке API (с вашим API-KEY). При использовании вы зарабатываете 30% от комиссии.service_fee
: Необязательное переопределение комиссии в процентах. Если не указано — используется системное значение. Если указано, должно быть числом от 0.1 до 5 включительно.qrcode
: Необязательно.1
возвращает Base64 data URL вdeposit.qr_code
;0
или отсутствие параметра — QR код не возвращается.destination_tag
: Обязательно для сетей XRP и TON. Если не нужно — можно опустить или оставить пустым ("").
Как использовать QR-код
Если qrcode
установлен в 1
, ответ будет содержать изображение в формате Base64 в поле deposit.qr_code
. Это полноценный QR-код, который можно встроить на фронтенд как картинку, чтобы пользователи могли сканировать его в своих кошельках. Вот пример, как отобразить его на веб-странице:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Сканируйте для оплаты" />
Пользователи могут отсканировать QR-код в своем приложении-кошельке, чтобы мгновенно заполнить адрес и сумму, обеспечивая быструю и безопасную транзакцию.
Ответ
{ "ok": true, "trackcode": "6A5FB3BA8A150EC9", "maintenance": 0, "deposit": { "address": "31wXuLH5AKBWoZsK4VJS5wG75nTUAWYnWf", "name": "Bitcoin", "symbol": "₿", "network": "btc", "network_label": "Bitcoin (BTC)", "deposit_amount": "10.00000000", "min_amount": 0.001, "max_amount": 20, "expires_at": 1755614593, "qr_code": "data:image/png;base64,iVBORw0....." }, "fees": { "service_fee_percent": 0.45, "service_fee_value": "0.04500000", "fee_per_output": "0.00005000", "fee_outputs_total": "0.00010000", "fee_total": "0.04510000" }, "outputs": [ { "id": 1, "address": "35iMHbUZeTssxBodiHwEEkb32jpBfVueEL", "destination_tag": null, "share_percent": 84.93, "delay_minutes": 0, "delay_label": "0h 0m", "amount": "8.45469657", "time": 1755441793 }, { "id": 2, "address": "1P279UBChDFPAky8S4DcKGaaxKEMYBK9MM", "destination_tag": null, "share_percent": 15.07, "delay_minutes": 120, "delay_label": "2h 0m", "amount": "1.50020343", "time": 1755448993 } ], "signature_text": "...." }
trackcode
: Уникальный идентификатор заказа.deposit
: Адрес, куда пользователь должен отправить средства.fees
: Все примененные комиссии.outputs
: Планируемое распределение средств с задержками.time
иexpires_at
: Метки времени Unix (часовой пояс GMT-3).signature_text
: Цифровая подпись для проверки.
Пример на PHP
<?php $url = "https://api.secretcryptos.com/v1/mixer/orders"; $headers = [ "Authorization: Bearer YOUR_API_KEY", "Content-Type: application/json" ]; $data = [ "action" => "create_order", "addresses" => [ ["address"=>"35iMHbUZeTssxBodiHwEEkb32jpBfVueEL", "percent"=>"84.93", "delay"=>"0"], ["address"=>"1P279UBChDFPAky8S4DcKGaaxKEMYBK9MM", "percent"=>"15.07", "delay"=>"120"] ], "amount" => "10.00000000", "crypto" => "btc", "network" => "btc", "partner" => "YOUR_PARTNER_KEY", "service_fee" => 0.45, ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($data) ]); echo curl_exec($ch); curl_close($ch);
ОБМЕН
API обмена позволяет конвертировать депозит from_coin/ from_network в один адрес назначения to_coin/ to_network. Мы выделяем адрес для депозита, рассчитываем актуальный курс (с учётом лимитов в USD и комиссии) и возвращаем полный объект заказа, который можно опрашивать до его финансирования и выполнения.
- Примеры использования: мгновенные обмены при оплате, «депозит в X → получение Y», мосты off-ramp/on-ramp между L1/L2.
- Перед созданием заказов получите лимиты пары и комиссию по умолчанию через
/v1/meta/exchange
. - Все денежные поля указываются в монетах, если не оговорено иное; лимиты рассчитываются в USD.
- Все временные метки — это Unix epoch (в секундах), часовой пояс сервера GMT-3.
ОБМЕН / Создать заказ
Создание нового ордера на обмен. Вы указываете сторону from_*
(монета/сеть/сумма) и адрес назначения to_address
для стороны to_*
. Мы возвращаем адрес депозита в сети from_network
, котировку и планируемый вывод.
Правила проверки
amount
: значение в USD (сумма × цена from_coin) должно находиться в пределахmin_usd
/max_usd
для пары из/v1/meta/exchange
.формат адреса
: должен соответствовать выбранной сетиto_network
(например, ERC-200x…
, TRC-20T…
, BTC, DOGE, SOL и др.).destination_tag / memo
: необязательное, но требуется для некоторых сетей (например, тег XRP, мемо TON).service_fee
(необязательно, в процентах):- До 2 знаков после запятой (например,
0.6
=0.60%
). - Общие рамки: минимум
0.50%
, максимум3.00%
. - Если указано ниже значения по умолчанию для пары — применяется значение по умолчанию. Если выше
3.00%
— ограничивается3.00%
. - Если не указано, эффективная комиссия =
max(значение_по_умолчанию, 0.50%)
.
- До 2 знаков после запятой (например,
Примечания
quote.final_usd
= (сумма × цена from) × (1 − комиссия%).quote.to.estimated_receive
=final_usd
÷ цена to_coin.receive.delay_label
: планируемая задержка перед отправкой обмена (по умолчанию0h 10m
).expires_at
: окно депозита для выделенного адреса.- Используйте
?pretty=1
для форматированного JSON при тестировании.
Заголовки
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Тело запроса
{ "from_coin": "eth", "from_network": "eth", "to_coin": "doge", "to_network": "doge", "to_address": "DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p", "amount": "1.00000000", "service_fee": 0.6, // необязательно; %0.60 → ограничивается правилами "partner": "YOUR_PARTNER_KEY", // необязательно, даёт 30% комиссии платформы "qrcode": 1 // необязательно; добавляет base64 QR в deposit.qr_code}
Тело запроса (примеры для XRP / TON)
{ "from_coin": "usdt", "from_network": "trx", "to_coin": "xrp", "to_network": "xrp", "to_address": "rLWyHZwAhsVrHCu8ahsfQfb9w9w7A5WTrS", "destination_tag": "123456", "amount": "250" } --- { "from_coin": "btc", "from_network": "btc", "to_coin": "ton", "to_network": "ton", "to_address": "UQDTQmCrngsFMbgBhWNX_Sg6Ko3sXUcdeliM5OoZO2Pt4NJx", "memo": "MYMEMO123", "amount": "0.015" }
Ответ
{ "ok": true, "type": "exchange", "trackcode": "D391FC08747E7B04", "pair": { "from": "ETH_eth", "to": "DOGE_doge" }, "deposit": { "address": "0x7ed2bf650d12819171a8add77fe772a18dd77a10", "name": "Ethereum", "symbol": "Ξ", "network": "eth", "network_label": "Ethereum (ERC20)", "deposit_amount": "1.00000000", "min_usd": 100, "max_usd": 88565, "expires_at": 1755781843, "qr_code": "data:image/png;base64,..." // только если qrcode=1 }, "quote": { "from": { "coin":"ETH","network":"eth","price_usd":4300.8836,"amount":"1.00000000","amount_usd":"4300.88362842" }, "to": { "coin":"DOGE","network":"doge","price_usd":0.22014648,"estimated_receive":"19419.24455241" }, "fee_percent": 0.6, "final_usd": "4275.07832665" }, "receive": { "address":"DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p", "destination_tag": null, "coin":"DOGE","network":"doge", "percent":100,"delay_minutes":10,"delay_label":"0h 10m", "amount":"19419.24455241","time":1755609642 }, "outputs":[ { "id":1, "address":"DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p", "destination_tag":null, "share_percent":100, "delay_minutes":10, "delay_label":"0h 10m", "amount":"19419.24455241", "time":1755609642 } ], "signature_text":"..." }
trackcode
: уникальный идентификатор заказа для проверки статуса.deposit
: куда пользователь должен отправить from_coin.quote
: снимок цены и применённой комиссии.receive
/outputs
: детали планируемого вывода после обмена.
Пример на PHP
<?php $url = "https://api.secretcryptos.com/v1/exchange/orders"; $headers = [ "Authorization: Bearer YOUR_API_KEY", "Content-Type: application/json" ]; $payload = [ "from_coin"=>"eth","from_network"=>"eth", "to_coin"=>"doge","to_network"=>"doge", "to_address"=>"DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p", "amount"=>"1.00000000", "service_fee"=>0.6, "partner"=>"YOUR_PARTNER_KEY", "qrcode"=>1 ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER=>true, CURLOPT_HTTPHEADER=>$headers, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>json_encode($payload, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES), ]); echo curl_exec($ch); curl_close($ch);
Как использовать QR-код
Когда qrcode
установлен в 1
при создании, ответ включает Base64-кодированный QR в deposit.qr_code
. Вставьте его напрямую как <img>, чтобы пользователи могли сканировать адрес депозита.
<img src="data:image/png;base64,..." alt="Сканируйте для оплаты" />
Цены
Получите актуальные рыночные цены в USD для поддерживаемых криптовалют. Можно запросить несколько символов сразу, разделив их запятой.
Эндпоинт
Параметры запроса
symbols
(необязательно): список символов монет через запятую (например,BTC,ETH,USDT
). Если не указано — возвращаются все поддерживаемые монеты.
Ответ
ok
:true
, если запрос выполнен успешно.base
: всегдаUSD
.ts
: временная метка Unix (секунды).prices
: объект с отображениемСИМВОЛ → "цена"
(числа в виде строки).
Пример запроса (только BTC, ETH)
<?php $url = "https://api.secretcryptos.com/v1/prices?symbols=" . urlencode("BTC,ETH"); $headers = [ "Authorization: Bearer <API_KEY>", ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_TIMEOUT => 20, ]); $result = curl_exec($ch); if ($result === false) { echo "cURL error: " . curl_error($ch); } else { echo $result; } curl_close($ch);
Пример запроса (все символы)
<?php $url = "https://api.secretcryptos.com/v1/prices"; $headers = [ "Authorization: Bearer <API_KEY>", ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_TIMEOUT => 20, ]); $result = curl_exec($ch); if ($result === false) { header("Content-Type: text/plain; charset=utf-8"); echo "cURL error: " . curl_error($ch); } else { header("Content-Type: application/json; charset=utf-8"); echo $result; } curl_close($ch);
Пример ответа
{ "ok": true, "base": "USD", "ts": 1755600000, "prices": { "BTC": "117799.51713382", "ETH": "4409.46254479", "USDT": "1.0005594" } }
Коды ошибок
BAD_REQUEST
: неверный форматsymbols
.UNAUTHORIZED / FORBIDDEN
: ключ API отсутствует или неверен.SERVER_ERROR
: внутренняя ошибка сервера/БД.
Примечания
- Неподдерживаемые тикеры просто опускаются в объекте
prices
. - Числовые значения возвращаются как строки для сохранения точности.
Статус заказа
Используйте единый endpoint для проверки статуса как mixer-, так и exchange-заказов. Вы можете явно указать тип заказа (mixer
/exchange
) или позволить API определить его автоматически.
Эндпоинт
Тело запроса
trackcode
(обязательно): 16-символьный код отслеживания заказа (заглавные буквы).type
(необязательно):mixer
|exchange
. Если не указано, API попытается определить автоматически.outputs
(необязательно):none
|summary
|full
(по умолчанию:summary
).mask_addresses
(необязательно):true
=маскировать адреса (по умолчанию),false
=возвращать полные адреса.
Ответ
type
:mixer
илиexchange
.deposit.confirm_status
: Статус подтверждения депозита:0
: Платёж не получен.1
: Платёж получен, но ещё в ожидании (ожидаются подтверждения или сумма не полностью внесена).2
: Депозит полностью подтверждён и профинансирован.
deposit.delete_in_sec
: Количество секунд до истечения 48-часового периода хранения.- Блок
deposit.funding
:waiting_balance
: Общая ожидаемая сумма.received_balance
: Уже полученная сумма.remaining_need
: Оставшаяся необходимая сумма.is_fully_funded
: Полностью ли профинансирован депозит.can_start
: true только еслиconfirm_status==2
Иis_fully_funded==true
.
outputs
:none
: Не возвращается.summary
: Возвращаетcount
,sent_count
,sent_total
.full
: Для каждого вывода:index
,address
(замаскирован или нет),destination_tag
,coin
,network
,share_percent
,delay_label
,delay_seconds
,state
,confirm
,tx
,amount
,left_seconds
.
status_reason
: например,"INSUFFICIENT_FUNDS"
(если депозит не полностью профинансирован).
Правила работы
- Заказы не начнут выполняться, пока депозит не будет полностью профинансирован (
is_fully_funded=false
): выводы остаются неназначенными, партнёрские выплаты не начисляются. - Если
confirm_status==2
Иis_fully_funded==true
:- Выводы получают временную метку один раз и остаются неизменными при последующих проверках.
- Партнёрские начисления фиксируются один раз, когда заказ становится действительным.
Пример запроса (PHP)
// Пример для миксера (полные выводы, немаскированные адреса)<?php $url = "https://api.secretcryptos.com/v1/orders/check"; $headers = [ "Authorization: Bearer <API_KEY>", "Content-Type: application/json" ]; $data = [ "trackcode" => "554FEC10054743FD", "type" => "mixer", // mixer | exchange "outputs" => "full", // none | summary | full "mask_addresses" => false // true(default)=masked, false=full ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), ]); $result = curl_exec($ch); if ($result === false) { header("Content-Type: text/plain; charset=utf-8"); echo "cURL error: " . curl_error($ch); } else { header("Content-Type: application/json; charset=utf-8"); echo $result; } curl_close($ch);
Пример ответа — полностью профинансированный заказ
{ "ok": true, "type": "mixer", "trackcode": "6A5FB3BA8A150EC9", "deposit": { "confirm_status": 2, "coin": "btc", "network": "btc", "delete_in_sec": 167812, "funding": { "waiting_balance": "10.00000000", "received_balance": "10.00000000", "remaining_need": "0.00000000", "is_fully_funded": true, "can_start": true } }, "outputs": [ { "index": 1, "address": "35iMHbUZeTssxBodiHwEEkb32jpBfVueEL", "destination_tag": null, "coin": "btc", "network": "btc", "share_percent": 84.93, "delay_label": "0h 0m", "delay_seconds": 0, "state": 2, "confirm": 1, "tx": "135f451af7f894....fafb578eee9e9c4", "amount": "8.45469657", "left_seconds": 0 }, { "index": 2, "address": "1P279UBChDFPAky8S4DcKGaaxKEMYBK9MM", "destination_tag": null, "coin": "btc", "network": "btc", "share_percent": 15.07, "delay_label": "2h 0m", "delay_seconds": 7200, "state": 1, "confirm": 0, "tx": "", "amount": "1.50020343", "left_seconds": 5916 } ] }
Пример ответа — недофинансированный заказ
{ "ok": true, "type": "exchange", "trackcode": "A1B2C3D4E5F6A7B8", "deposit": { "confirm_status": 2, "coin": "usdt", "network": "erc20", "delete_in_sec": 14321, "funding": { "waiting_balance": "500.00000000", "received_balance": "420.00000000", "remaining_need": "80.00000000", "is_fully_funded": false, "can_start": false } }, "status_reason": "INSUFFICIENT_FUNDS", "outputs": { "count": 3, "sent_count": 0, "sent_total": "0.00000000" } }
Пояснение по выводам
index
: Последовательный номер вывода в заказе.address
: Адрес назначения, куда отправляются средства.destination_tag
: Дополнительный тег/мемо для XRP, XLM и др. (null
, если не требуется).coin
: Код криптовалюты вывода (например,btc
,eth
).network
: Сеть, используемая для перевода (например,btc
,eth
).share_percent
: Процент от общего депозита, назначенный этому выводу.delay_label
: Читаемая метка времени, показывающая, когда будет обработан вывод (например,2h 0m
).delay_seconds
: Задержка в секундах до начала обработки вывода.state
: Статус вывода:0
→ Ожидание (депозит ещё не подтверждён полностью).1
→ В процессе (запланирован; начнётся, когдаdelay_seconds
достигнет 0).2
→ Завершён (перевод выполнен).
confirm
: Статус подтверждения перевода (актуален только приstate=2
):0
→ Транзакция отправлена, но ещё не подтверждена (в ожидании).1
→ Транзакция подтверждена (как минимум 1 подтверждение блокчейна).
tx
: Хэш транзакции в блокчейне для этого вывода.amount
: Сумма, отправленная на этот адрес вывода.left_seconds
: Оставшееся количество секунд до запланированной отправки.
Примечание: Этот отсчёт запускается только после того, какdeposit.confirm_status=2
(полностью подтверждён). Пример: если установлено600
секунд (10 минут), отсчёт начинается только после подтверждения депозита.
Примечание: Данные о платежах и выводах обновляются примерно раз в минуту.
Коды ошибок
BAD_REQUEST
: Отсутствует/неверныйtrackcode
, неверное тело запроса.NOT_FOUND
: Заказ не найден.UNAUTHORIZED / FORBIDDEN
: API-ключ неверен или отключён.TOO_MANY_REQUESTS
: Превышен дневной лимит запросов.SERVER_ERROR
: Неожиданная ошибка сервера.
mask_addresses
: управляется параметромmask_addresses
(по умолчанию:true
).delay_seconds
: числовой эквивалентdelay_label
(возвращается только в режимеfull
).
Удалить заказ
Удалите существующий заказ, чтобы он больше не был доступен через API. После удаления заказ становится навсегда недоступным для дальнейших запросов.
Endpoint (конечная точка)
Тело запроса
trackcode
(обязательно): 16-символьный код отслеживания в верхнем регистре.type
(необязательно):mixer
|exchange
. Если не указано — определяется автоматически.
Ответ
ok
:true
в случае успеха.trackcode
: Возврат запрошенного кода отслеживания.type
: Тип заказа (mixer
илиexchange
).deleted
:true
, если заказ был удалён.
Поведение
- Если заказ уже удалён или не найден, API возвращает 404 NOT_FOUND.
- Если указан
type
, проверяется только этот тип; иначе определяется автоматически.
Пример запроса (PHP)
<?php $url = "https://api.secretcryptos.com/v1/orders/delete"; $headers = [ "Authorization: Bearer <API_KEY>", "Content-Type: application/json" ]; $data = [ "trackcode" => "D391FC08747E7B04" // "type" => "exchange" ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), CURLOPT_TIMEOUT => 20, ]); $result = curl_exec($ch); if ($result === false) { echo "cURL error: " . curl_error($ch); } else { echo $result; } curl_close($ch);
Пример ответа — Успешно
{ "ok": true, "trackcode": "D391FC08747E7B04", "type": "exchange", "deleted": true }
Пример ответа — Не найден
{ "ok": false, "code": "NOT_FOUND", "message": "Order not found or already deleted" }
Коды ошибок
BAD_REQUEST
: Неверныйtrackcode
илиtype
.NOT_FOUND
: Заказ не найден или уже удалён.UNAUTHORIZED / FORBIDDEN
: Неверный или отсутствующий API-ключ.SERVER_ERROR
: Внутренняя ошибка сервера.
Проверка подписи
Проверка цифровой подписи (подпись Письма-гарантии). При успешной расшифровке API возвращает проверенный набор данных, связанных с заказом (mixer или exchange), пригодный для клиентской проверки и отображения статуса.
Endpoint (конечная точка)
Тело запроса
signature
(обязательно): Блок цифровой подписи, либо в формате Base64, либо с BEGIN/END строками.
Ответ
ok
:true
при успешной проверке.message
: Человекочитаемое сообщение о статусе.type
:mixer
|exchange
.route
: Для mixer:confirm
|deposit
|mixing
. Для exchange:exc-deposit
|exc-send
.trackcode
: Определённый код отслеживания.order
:deposit_address
(строка)service_fee
(строка, 2 знака после запятой)coin
(строка)network
(строка)waiting_balance
(строка, 8 знаков после запятой)created_at
(целое число, Unix-время)
outputs
(массив):coin
,network
,address
,destination_tag
share_percent
(строка, 2 знака после запятой)delay_minutes
(целое число),delay_label
(например:2ч 0м
)amount
(строка, 8 знаков после запятой)
outputs_count
(целое число)
Поведение
- Предоставленная цифровая подпись проверяется системой.
- Проверке подлежат только недавние заказы (в пределах 48 часов). Старые заказы могли быть автоматически удалены.
- Если действительный заказ не найден, API возвращает 404 NOT_FOUND.
Пример запроса (PHP)
<?php $url = "https://api.secretcryptos.com/v1/validate"; $signatureBlock = <<<SIG -----BEGIN DIGITAL SIGNATURE----- eyJ0cmFjayI6ICJEMzkxRkMwODc0N0U3QjA0IiwgInR5cGUiOiAibWl4ZXIiLCAiZXh0cmEiOiAiLi4uIn0= -----END DIGITAL SIGNATURE----- SIG; $headers = [ "Authorization: Bearer <API_KEY>", "Content-Type: application/json", "Accept: application/json", ]; $payload = [ "signature" => $signatureBlock ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES), CURLOPT_TIMEOUT => 20, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2, ]); $result = curl_exec($ch); if ($result === false) { header("Content-Type: text/plain; charset=utf-8"); echo "cURL error: " . curl_error($ch); } else { header("Content-Type: application/json; charset=utf-8"); echo $result; } curl_close($ch);
Пример ответа — Успешно
{ "ok": true, "message": "The signature has been validated successfully.", "type": "mixer", "route": "deposit", "trackcode": "6A5FB3BA8A150EC9", "order": { "deposit_address": "31wXuLH5AKBWoZsK4VJS5wG75nTUAWYnWf", "service_fee": "0.45", "coin": "btc", "network": "btc", "waiting_balance": "10.00000000", "created_at": "1755698732" }, "outputs": [ { "coin": "btc", "network": "btc", "address": "35iMHbUZeTssxBodiHwEEkb32jpBfVueEL", "destination_tag": "", "share_percent": "84.93", "delay_minutes": 0, "delay_label": "0h 0m", "amount": "8.45469657" }, { "coin": "btc", "network": "btc", "address": "1P279UBChDFPAky8S4DcKGaaxKEMYBK9MM", "destination_tag": "", "share_percent": "15.07", "delay_minutes": 120, "delay_label": "2h 0m", "amount": "1.50020343" } ], "outputs_count": 2 }
Пример ответа — Ошибки
{ "ok": false, "error": "BAD_REQUEST", "message": "Требуется цифровая подпись" } --- { "ok": false, "error": "INVALID_SIGNATURE", "message": "Предоставленные данные не являются допустимым Base64 или слишком коротки" } --- { "ok": false, "error": "DECRYPTION_FAILED", "message": "Ошибка расшифровки. Убедитесь, что предоставленная подпись действительна, и повторите попытку." } --- { "ok": false, "error": "MISSING_TRACKCODE", "message": "Trackcode обязателен в блоке подписи." } --- { "ok": false, "error": "NOT_FOUND", "message": "Не удалось найти данные о запрошенном заказе." }
Коды ошибок
BAD_REQUEST
: Отсутствуетsignature
или некорректное тело запроса.INVALID_SIGNATURE
: Неверный Base64 или блок подписи слишком короткий.DECRYPTION_FAILED
: Ошибка расшифровки AES-GCM.INVALID_PAYLOAD
: Расшифрованный блок не является корректным JSON.MISSING_TRACKCODE
: Полеtrack
отсутствует в блоке.NOT_FOUND
: Заказ не найден за последние 48 часов.UNAUTHORIZED / FORBIDDEN
: Неверный или отсутствующий API-ключ.SERVER_ERROR
: Внутренняя ошибка сервера.
Примечания
- Числовая точность:
waiting_balance
иamount
→ 8 знаков после запятой (строка),share_percent
→ 2 знака (строка),service_fee
→ 2 знака (строка). - Задержки: возвращаются и человекочитаемый формат (
delay_label
), и машинное значение в минутах (delay_minutes
).