Введение
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_KEYContent-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_KEYContent-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_tagshare_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).