Introdução
ASecretCryptos APIfornece acesso seguro, simples e consistente a nossosMixereExchangeserviços. Este documento “Lite” concentra-se nos endpoints principais para você começar rapidamente.
URL base: https://api.secretcryptos.com/v1
Exemplo: GET /v1/ping – tente
Você também pode explorar a página raiz ativa emapi.secretcryptos.com.
Mais links:Links hub • Documentos API (IU Swagger) • GitHub Organization.
Authentication
- Header:
Authorization: Bearer YOUR_API_KEY - All requests must use HTTPS.
Get API Key
- Create an account or sign in atPartner.
- Open the top menu and click theAPItab.
- Copy yourAPI-KEY(keep it secret; it works for both Mixer and Exchange).
API Key Safety
cURL (server-side)
curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://api.secretcryptos.com/v1/meta/mixer"
PHP proxy
<?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
Verificação de integridade e versão simples.
GET https://api.secretcryptos.com/v1/ping
{
"ok": true,
"service": "SecretCryptos API",
"version": "1.2.6",
"ts": 1723800000
}
ts: época Unix (segundos).- Nenhuma autenticação necessária.
MIXER
TheMixer APIlets you programmatically create privacy-preserving transactions. You define thecoin, network, amount, and one or moreoutput addresseswith percent shares and optional delays. We allocate a deposit address and return a full plan (fees + outputs) so you can automate receipts, payouts, or escrow-like flows.
- Use cases: secure payment intake, automated revenue sharing, payouts to multiple wallets, delayed disbursements.
- Get limits & fees via
/v1/meta/mixerbefore creating orders. - All monetary fields are incoin unitsunless noted.
- All timestamps are Unix epoch seconds (timezone: GMT-3 on server).
MIXER / Create Order
Create a new mixer order. You provide the coin, network, amount, and one or more output addresses with percentages and delays. The system allocates a deposit address and returns order details including fees and output plan.
Validation Rules
amount: Must be between coin-specificmin_amountandmax_amountfrom/v1/meta/mixer.addresses: 1–10 outputs.percent:- Format: up to 2 decimals (e.g.,
10,10.5,10.50). - Per-address minimum:
≥ 1.00, maximum:≤ 100.00. - Total of all outputs must be exactly
100.00. - If there is only 1 output, its percent must be exactly
100.00.
- Format: up to 2 decimals (e.g.,
delay:- Accepts minutes (e.g.,
120) or label (e.g.,"2h 0m"). - Máximo:
48h(ou seja,2880minutos).
- Accepts minutes (e.g.,
service_fee(substituição opcional):- Até 2 decimais.
- Intervalo:
0.10–5.00(%). Se omitido, o padrão do sistema para a moeda será usado.
address format: Deve corresponder à rede selecionada (por exemplo, BTC legado/SegWit, ERC-200x…, TRC-20T…, SOL, etc.).destination_tag / memo: Opcional; necessário para algumas redes (por exemplo, etiqueta XRP, memorando TON).
Notas
expires_at: Quando o endereço de depósito expira (segundos de época).outputs[i].time: Tempo de saída planejado como segundos de época (com base emdelay_minutes).- Use
?pretty=1para JSON legível por humanos durante testando. - Limites de taxa: limite diário padrão por chave de API; níveis mais altos disponíveis (consulte “Limites de taxa”).
Erros comuns
{
"ok": false,
"code": "BAD_REQUEST",
"message": "Sum of percents must be exactly 100.00"
}
BAD_REQUEST: Corpo inválido, formato de endereço errado, porcentagem não 2 decimais, taxa fora do intervalo, atraso> 48h, etc.AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH: Viola mínimo/máximo por moeda.SERVICE_UNAVAILABLE: Nenhum endereço de depósito disponível para essa rede.TOO_MANY_REQUESTS: Limite diário de API atingido.UNAUTHORIZED / FORBIDDEN: Chave de API inválida/desativada.
Headers
Authorization: Bearer YOUR_API_KEYContent-Type: application/json
Request Body
{
"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
}
Request Body
{
"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: Lista de destinos de saída. Cada endereço deve ter os seguintes campos:address: O endereço de destino para onde os fundos são enviados.percent: A porcentagem do valor total a ser enviado para este endereço (por exemplo,100para o valor total ou50para metade).delay: O atraso antes da transação ser processada. Pode ser especificado em minutos (por exemplo,120) ou em formato de texto (por exemplo,"2h 0m").destination_tag: Este campo é obrigatório paraXRPeTONredes. Se não for necessário, pode ser omitido ou deixado em branco (por exemplo,"").
amount: O valor total em unidades monetárias a ser transferido. Use um ponto como separador decimal (por exemplo,10.00000000).crypto/network: A rede de moedas e blockchain (por exemplo,btc/btcpara Bitcoin).partner: Opcional, mas recomendado. SuaPARTNER KEYestá disponível emPartnerna guia API (com sua API-KEY). Quando usado, você ganha30% da taxa de serviço.service_fee: Substituição opcional da taxa de serviço em porcentagem. Se omitido, o padrão do sistema será aplicado. Se fornecido, deve ser um número entre0.1e5(inclusive).qrcode: Opcional.1retorna um URL de dados Base64 emdeposit.qr_code;0ou omitido não retorna nenhum código QR.destination_tag: Obrigatório para redesXRPeTON. Se não for necessário, ele pode ser omitido ou deixado em branco ("").
Como usar o código QR
Quandoqrcode estiver definido como1, a resposta incluirá uma imagem codificada em Base64 no campodeposit.qr_code. Este é um código QR totalmente funcional que você pode incorporar em seu frontend como uma imagem, permitindo aos usuários digitalizá-lo com seus aplicativos de carteira. Aqui está um exemplo de como exibi-lo em uma página da web:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Scan to pay" />
Os usuários podem digitalizar o código QR com seu aplicativo de carteira preferido para preencher instantaneamente o endereço de destino e o valor, facilitando uma transação rápida e segura.
Resposta
{
"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: identificador exclusivo do pedido.deposit: para onde o usuário deve enviar fundos.fees: Todos aplicados taxas.outputs: Distribuição planejada de fundos, com atrasos.timeeexpires_at: Carimbos de data e hora Unix (fuso horário GMT-3).signature_text: Assinatura digital blindada para validação.
Exemplo de 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);
EXCHANGE
AExchange APIpermite trocar umfrom_coin/ from_networkdepósito em um únicoto_coin/ to_networkdestino endereço. Alocamos um endereço de depósito, calculamos uma cotação em tempo real (limites e taxas baseadas em USD aplicados) e retornamos o objeto de pedido completo que você pode pesquisar até ser financiado e executado.
- Casos de uso: swaps instantâneos na finalização da compra, “depósito em X → receber Y”, pontes de rampa de saída/rampa entre L1/L2s.
- Obtenha limites de par e taxa padrão via
/v1/meta/exchangeantes de criar pedidos. - Todos os campos monetários estão emunidades de moedaa menos que indicado; os limites sãobaseados em USD.
- Todos os carimbos de data/hora são segundos da época Unix (fuso horário do servidor GMT‑3).
EXCHANGE / Criar pedido
Crie um novo pedido de troca. Você fornece ofrom_* lado (moeda/rede/valor) e o destinoto_addresspara o ladoto_* . Retornamos um endereço de depósito nofrom_network, uma cotação e a saída planejada.
Regras de validação
amount: O valor em USD (valor × preço da_moeda) deve estar dentro do par específicomin_usd/max_usdfrom/v1/meta/exchange.address format: deve corresponder aoto_networkselecionado (por exemplo, ERC‑200x…, TRC‑20T…, BTC, DOGE, SOL, etc.).destination_tag / memo: Opcional, mas exigido por algumas redes (por exemplo,XRPtag,TONmemo).service_fee(opcional, porcentagem):- Até 2 decimais (por exemplo,
0.6=0.60%). - Grampo global: min
0.50%, max3.00%. - Se fornecido abaixo do padrão do site para esse par, o padrão do site se aplica. Se acima
3.00%, é limitado a3.00%. - Se omitido, taxa efetiva =
max(site_default, 0.50%).
- Até 2 decimais (por exemplo,
Notas
quote.final_usd= (valor × do preço) × (1 − taxa%).quote.to.estimated_receive=final_usd÷ to_coinprice.receive.delay_label: Atraso planejado antes de enviarmos o swap (padrão0h 10m).expires_at: Janela de depósito para o endereço alocado.- Use
?pretty=1para JSON bem impresso durante o teste.
Headers
Authorization: Bearer YOUR_API_KEYContent-Type: application/json
Request Corpo
{
"from_coin": "eth",
"from_network": "eth",
"to_coin": "doge",
"to_network": "doge",
"to_address": "DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p",
"amount": "1.00000000",
"service_fee": 0.6, // optional; %0.60 → clamped by rules "partner": "YOUR_PARTNER_KEY", // optional, earns 30% of platform fee "qrcode": 1 // optional; adds base64 QR at deposit.qr_code}
Corpo da solicitação (exemplos 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"
}
Resposta
{
"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,..." // only if 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: identificador exclusivo do pedido para pesquisar o status.deposit: Where the user must sendfrom_coin.quote: Pricing snapshot and effective fee.receive/outputs: Planned swap output details.
PHP Example
<?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);
How to Use the QR Code
Whenqrcodeis set to1in Create, the response includes a Base64-encoded QR underdeposit.qr_code. Embed it directly as an <img> to let users scan the deposit address.
<img src="data:image/png;base64,..." alt="Scan to pay" />
Prices
Retrieve the latest market prices inUSDfor supported cryptocurrencies. You can query multiple symbols at once by separating them with commas.
Endpoint
Query Parameters
symbols(optional): Comma-separated list of coin symbols (e.g.,BTC,ETH,USDT). Se omitido, todas as moedas suportadas serão retornadas.
Resposta
ok:truese a solicitação foi bem-sucedida.base: SempreUSD.ts: carimbo de data/hora Unix (segundos).prices: Mapeamento de objetosSYMBOL → "price"(números de string).
Solicitação de exemplo (somente 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);
Exemplo de solicitação (todos os símbolos)
<?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);
Exemplo de resposta
{
"ok": true,
"base": "USD",
"ts": 1755600000,
"prices": {
"BTC": "117799.51713382",
"ETH": "4409.46254479",
"USDT": "1.0005594"
}
}
Códigos de erro
BAD_REQUEST: Inválidosymbolsformato.UNAUTHORIZED / FORBIDDEN: Chave de API inválida ou ausente.SERVER_ERROR: Servidor/banco de dados interno erro.
Notas
- Os tickers não suportados são simplesmente omitidos do objeto
prices. - Os valores numéricos são retornados como strings para preservar a precisão.
Status do pedido
Use um único endpoint para verificar o status de ambos os pedidosmixereexchange. Você pode definir explicitamente o tipo de pedido (mixer/ exchange) ou deixar que a API o detecte automaticamente.
Endpoint
Request Body
trackcode(obrigatório): o código de rastreamento de 16 caracteres maiúsculos do ordem.type(opcional):mixer|exchange. Se omitido, a API tentará detectar automaticamente.outputs(opcional):none|summary|full(padrão:summary).mask_addresses(opcional):true=mascarar endereços (padrão),false=retornar endereços completos.
Resposta
type:mixerouexchange.deposit.confirm_status: Status de confirmação do depósito:0: Nenhum pagamento recebido.1: Pagamento recebido, mas ainda pendente (aguardando confirmações ou ainda não totalmente financiado).2: Depósito totalmente confirmado e financiado.
deposit.delete_in_sec: Segundos restantes até a retenção de 48 horas expiração.deposit.fundingblock:waiting_balance: valor total esperado.received_balance: valor recebido até o momento.remaining_need: valor restante necessário.is_fully_funded: se totalmente financiado.can_start: apenastrue ifconfirm_status==2ANDis_fully_funded==true.
outputs:none: Não retornado.summary: Retornacount,sent_count,sent_total.full: Para cada saída:index,address(mascarado ou não),destination_tag,coin,network,share_percent,delay_label,delay_seconds,state,confirm,tx,amount,left_seconds.
status_reason: por exemplo."INSUFFICIENT_FUNDS"(if not fully funded).
Business Rules
- Orders will not startunless fully funded (
is_fully_funded=false): outputs remain unassigned and no partner payout is generated. - If
confirm_status==2ANDis_fully_funded==true:- Outputs are timestamped once and remain consistent on repeated checks.
- Affiliate earnings are credited a single time when the order becomes valid.
Example Request (PHP)
// Mixer example (full outputs, unmasked addresses)<?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);
Example Response — Fully Funded
{
"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
}
]
}
Example Response — Underfunded
{
"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"
}
}
Outputs Explanation
index: Sequential output number in the order.address: Destination address where funds are sent.destination_tag: Optional tag/memo for XRP, XLM, etc. (nullif not required).coin: Cryptocurrency code of the output (e.g.,btc,eth).network: Network name used for transfer (e.g.,btc,eth).share_percent: Porcentagem do depósito total atribuído a esta saída.#delay_label: Etiqueta legível por humanos mostrando quando esta saída será processada (por exemplo,2h 0m).delay_seconds: Atraso em segundos até que a saída possa começar a ser processada.state: Estado de saída:0→ Aguardando (depósito ainda não totalmente confirmado).1→ Processamento (agendado; começa quandodelay_secondschega a 0).2→ Concluído (transferência concluída).
confirm: Status de confirmação da transferência (relevante apenas emstate=2):0→ Transação transmitida, mas ainda não confirmada (pendente).1→ Transação confirmada (pelo menos 1 blockchain confirmação).
tx: Hash de transação Blockchain para esta saída.amount: Quantidade enviada para este endereço de saída.left_seconds: Segundos restantes até o horário de envio agendado.
Nota:Esta contagem regressiva é reiniciada uma vezdeposit.confirm_status=2(totalmente confirmada). Exemplo: se600seconds (10 minutes) is set, it starts counting down only after deposit confirmation.
Note:Payment and output data are refreshed every ~1 minute.
Error Codes
BAD_REQUEST: Missing/invalidtrackcode, malformed request body.NOT_FOUND: Order not found.UNAUTHORIZED / FORBIDDEN: API key invalid or disabled.TOO_MANY_REQUESTS: Daily request limit exceeded.SERVER_ERROR: Unexpected server error.
mask_addresses: controlled bymask_addresses(default:true).delay_seconds: numeric equivalent ofdelay_label(only returned infullmode).
Delete Order
Delete an existing order so it can no longer be accessed through the API. Once deleted, the order is permanently unavailable for further queries.
Endpoint
Request Body
trackcode(obrigatório): o código de rastreamento de 16 caracteres maiúsculos.type(opcional):mixer|exchange. Se omitido, a detecção é automática.
Resposta
ok:trueem caso de sucesso.trackcode: Eco do código de rastreamento solicitado.type: O tipo de pedido (mixerouexchange).deleted:truese o pedido tiver sido excluído.
Comportamento
- Se o pedido já foi excluído ou não encontrado, a API retorna404 NOT_FOUND.
- Se
typefor fornecido, somente esse tipo será verificado; caso contrário, a detecção será automática.
Solicitação de exemplo (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);
Exemplo de resposta — Sucesso
{
"ok": true,
"trackcode": "D391FC08747E7B04",
"type": "exchange",
"deleted": true
}
Example Response — Not Found
{
"ok": false,
"code": "NOT_FOUND",
"message": "Order not found or already deleted"
}
Error Codes
BAD_REQUEST: Invalidtrackcodeortype.NOT_FOUND: Order not found or already deleted.UNAUTHORIZED / FORBIDDEN: API key invalid or missing.SERVER_ERROR: Internal server error.
Signature Validation
Validate a digitally signed payload (Letter of Guarantee signature). Upon successful decryption, the API returns a verified subset of the related order details (mixer or exchange), suitable for client-side checks and status display.
Endpoint
Request Body
signature(required): The digital signature block, either raw Base64 or with BEGIN/END lines.
Response
ok:trueon success.message: Human‑readable status message.type:mixer|exchange.route: For mixer:confirm|deposit|mixing. For exchange:exc-deposit|exc-send.trackcode: Código de rastreamento resolvido.order:deposit_address(string)service_fee(string, 2 decimais)coin(string)network(string)waiting_balance(string, 8 decimais)created_at(integer, Unix timestamp)
outputs(matriz):coin,network,address,destination_tagshare_percent(string, 2 decimais)delay_minutes(inteiro),delay_label(por exemplo,2h 0m)amount(string, 8 decimais)
outputs_count(inteiro)
Comportamento
- A assinatura digital fornecida é validado no sistema.
- Somente pedidos recentes (dentro de 48 horas) são elegíveis para validação. Pedidos mais antigos podem ter sido removidos automaticamente.
- Se nenhum pedido válido for encontrado, a API responde com404 NOT_FOUND.
Example Request (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);
Example Response — Success
{
"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
}
Exemplo de resposta - Erros
{
"ok": false,
"error": "BAD_REQUEST",
"message": "Digital signature is required"
}
---
{
"ok": false,
"error": "INVALID_SIGNATURE",
"message": "The provided data is not valid Base64 or is too short"
}
---
{
"ok": false,
"error": "DECRYPTION_FAILED",
"message": "Decryption failed. Ensure that the provided signature is valid and retry."
}
---
{
"ok": false,
"error": "MISSING_TRACKCODE",
"message": "Trackcode is required in the signature payload."
}
---
{
"ok": false,
"error": "NOT_FOUND",
"message": "The requested order details could not be found."
}
Códigos de erro
BAD_REQUEST: faltandosignatureou carga útil malformada.INVALID_SIGNATURE: Base64 inválido ou bloco de assinatura é muito curto.DECRYPTION_FAILED: falha na descriptografia AES‑GCM.INVALID_PAYLOAD: a carga útil descriptografada não é válida JSON.MISSING_TRACKCODE:trackcampo ausente na carga útil.NOT_FOUND: pedido não encontrado nas últimas 48 horas.UNAUTHORIZED / FORBIDDEN: chave de API inválida ou ausente.SERVER_ERROR: erro interno do servidor.
Notas
- Precisão numérica:
waiting_balanceeamount→ 8 decimais (string),share_percent→ 2 decimais (string),service_fee→ 2 decimais (string). - Atrasos: tanto o rótulo humano (
delay_label) quanto os minutos legíveis por máquina (delay_minutes) são retornados.