Carregando o centro de documentação da API...
MISTURAS AO VIVO
MATIC
862 MATIC
MATIC Misturado · 1min atrás
ETH
0.039000 ETH
ETH Misturado · 1min atrás
DOT
60 DOT
DOT Misturado · 1min atrás
BTC
0.023000 BTC
BTC Misturado · 1min atrás
BTC
0.015000 BTC
BTC Misturado · 1min atrás
ADA
508 ADA
ADA Misturado · 5min atrás
USDT
1,129 USDT
USDT Misturado · 5min atrás
TON
102.008901 TON
TON Misturado · 5min atrás
TON
39.394381 TON
TON Misturado · 5min atrás
LTC
9.833244 LTC
LTC Misturado · 10min atrás
MATIC
862 MATIC
MATIC Misturado · 1min atrás
ETH
0.039000 ETH
ETH Misturado · 1min atrás
DOT
60 DOT
DOT Misturado · 1min atrás
BTC
0.023000 BTC
BTC Misturado · 1min atrás
BTC
0.015000 BTC
BTC Misturado · 1min atrás
ADA
508 ADA
ADA Misturado · 5min atrás
USDT
1,129 USDT
USDT Misturado · 5min atrás
TON
102.008901 TON
TON Misturado · 5min atrás
TON
39.394381 TON
TON Misturado · 5min atrás
LTC
9.833244 LTC
LTC Misturado · 10min atrás

Documentação da API SecretCryptos

Seguro. Rápido. Amigável para Desenvolvedores.
Interface de Programação
Integre recursos de mixing e exchange de criptomoedas no seu app ou serviço usando a API oficial da SecretCryptos.
Documentação da API SecretCryptos para integração cripto segura Guia do desenvolvedor para integração da API SecretCryptos Referência da API para mixing e exchange de criptomoedas com a SecretCryptos

Introdução


A API SecretCryptos fornece acesso seguro, simples e consistente aos nossos serviços de Mixer e Exchange. Este documento “Lite” foca nos endpoints principais para começar rapidamente.

URL Base: https://api.secretcryptos.com/v1

Exemplo: GET /v1/pingtestar

Você também pode explorar a página raiz em tempo real em api.secretcryptos.com.

Mais links: Hub de linksDocumentação da API (Swagger UI)Organização no GitHub.

Autenticação


  • Header: Authorization: Bearer YOUR_API_KEY
  • Todas as requisições devem usar HTTPS.
Nunca chame endpoints autenticados a partir de JavaScript no lado do cliente. Mantenha sua chave API no servidor e faça o proxy da resposta para o navegador.

Obter Chave API


  1. Crie uma conta ou faça login em Parceiro.
  2. Abra o menu superior e clique na aba API.
  3. Copie sua API-KEY (mantenha em segredo; funciona tanto para Mixer quanto para Exchange).

Segurança da Chave API


Nunca chame endpoints autenticados do lado do cliente. Mantenha sua chave API no servidor e faça o proxy das respostas para o navegador.

cURL (lado do servidor)

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 simples de status e versão.

GET/v1/ping
GET https://api.secretcryptos.com/v1/ping
{
  "ok": true,
  "service": "SecretCryptos API",
  "version": "1.2.6",
  "ts": 1723800000
}
  • ts: Unix epoch (segundos).
  • Não requer autenticação.

Meta


Descoberta raiz para endpoints meta disponíveis.

GET/v1/meta
GET https://api.secretcryptos.com/v1/meta
{
  "ok": true,
  "version": "1.2.6",
  "server_time": {
    "iso": "2025-08-20T16:04:53+00:00",
    "unix": 1755705893
  },
  "docs": {
    "html": "https://secretcryptos.com/api"
  },
  "endpoints": [
    {
      "name": "Ping",
      "path": "/v1/ping",
      "method": "GET",
      "auth": false,
      "desc": "Verificação simples de status."
    },
    {
      "name": "Meta (Mixer)",
      "path": "/v1/meta/mixer",
      "method": "GET",
      "auth": true,
      "desc": "Moedas/redes suportadas e regras do mixer."
    },
    {
      "name": "Meta (Exchange)",
      "path": "/v1/meta/exchange",
      "method": "GET",
      "auth": true,
      "desc": "Pares de negociação suportados e limites de exchange."
    },
    {
      "name": "Create Mixer Order",
      "path": "/v1/mixer/orders",
      "method": "POST",
      "auth": true,
      "desc": "Criar uma nova ordem de mixer."
    },
    {
      "name": "Create Exchange Order",
      "path": "/v1/exchange/orders",
      "method": "POST",
      "auth": true,
      "desc": "Criar uma nova ordem de exchange."
    },
    {
      "name": "Check Order",
      "path": "/v1/orders/check",
      "method": "POST",
      "auth": true,
      "desc": "Consultar status da ordem por trackcode."
    },
    {
      "name": "Delete Order",
      "path": "/v1/orders/delete",
      "method": "POST",
      "auth": true,
      "desc": "Excluir uma ordem (se permitido)."
    },
    {
      "name": "Prices",
      "path": "/v1/prices",
      "method": "GET",
      "auth": true,
      "desc": "Taxas de câmbio e preços atuais."
    },
    {
      "name": "Validate Signature",
      "path": "/v1/validate",
      "method": "POST",
      "auth": false,
      "desc": "Validar a assinatura de uma carta de garantia digital."
    }
  ]
}
		
  • Não requer autenticação.

Meta / Mixer


Configuração por moeda do mixer (mín/máx, rótulos de rede, taxas de serviço/por endereço, decimais, confirmações).

GET/v1/meta/mixer
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.secretcryptos.com/v1/meta/mixer"
{
  "ok": true,
  "mixer": {
    "BTC": {
      "name": "Bitcoin",
      "symbol": "₿",
      "service_fee": 0.1,
      "maintenance": 0,
      "per_address_fee": "0.00005000",
      "decimals": 8,
      "confirmations": 1,
      "networks": {
        "btc": {
          "label": "Bitcoin (BTC)",
          "min": 0.001,
          "max": 20
        }
      }
    }
  }
}
  • Autenticação obrigatória:Authorization: Bearer YOUR_API_KEY.
  • service_fee é uma porcentagem (ex.: 0.1 = 0.1%).
  • per_address_fee é uma string de 8 decimais em unidades da moeda.

Meta / Exchange


Configuração da exchange: manutenção, preços em USD ao vivo e limites/taxas por rede.

GET/v1/meta/exchange
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.secretcryptos.com/v1/meta/exchange"
{
  "ok": true,
  "exchange": {
    "maintenance": 0,
    "prices_usd": {
      "BTC": "117799.51713382",
      "ETH": "4409.46254479",
      "USDT": "1.0005594",
	  ...
    },
    "outputs": {
      "BTC": {
        "name": "Bitcoin",
        "symbol": "₿",
        "networks": {
          "btc": {
            "label": "Bitcoin (BTC)",
            "min_usd": "100",
            "max_usd": "182520",
            "service_fee": "0.5"
          }
        }
      },
	  ...
    }
  }
}
  • Autenticação obrigatória:Authorization: Bearer YOUR_API_KEY.
  • service_fee é uma string percentual (ex.: "0.5" = 0.5%).
  • prices_usd são valores em tempo real do banco de dados.

MIXER


A API Mixer permite criar transações com preservação de privacidade de forma programática. Você define a moeda, rede, quantidade e um ou mais endereços de saída com percentuais e atrasos opcionais. Nós alocamos um endereço de depósito e retornamos um plano completo (taxas + saídas) para que você possa automatizar recebimentos, pagamentos ou fluxos tipo escrow.

  • Casos de uso: recebimento de pagamentos seguros, divisão automática de receitas, pagamentos para várias carteiras, distribuições atrasadas.
  • Obtenha limites e taxas via /v1/meta/mixer antes de criar ordens.
  • Todos os campos monetários estão em unidades da moeda, salvo indicação contrária.
  • Todos os timestamps estão em segundos do Unix epoch (fuso horário: GMT-3 no servidor).

MIXER / Criar Ordem


Criar uma nova ordem de mixer. Você fornece a moeda, rede, valor e um ou mais endereços de saída com percentuais e atrasos. O sistema aloca um endereço de depósito e retorna os detalhes da ordem, incluindo taxas e plano de saída.

Regras de Validação

  • amount: Deve estar entre min_amount e max_amount específicas da moeda em /v1/meta/mixer.
  • addresses: 1–10 saídas.
  • percent:
    • Formato: até 2 decimais (ex.: 10, 10.5, 10.50).
    • Mínimo por endereço: ≥ 1.00, máximo: ≤ 100.00.
    • O total de todas as saídas deve ser exatamente 100.00.
    • Se houver apenas 1 saída, seu percentual deve ser exatamente 100.00.
  • delay:
    • Aceita minutos (ex.: 120) ou rótulo (ex.: "2h 0m").
    • Máximo: 48h (ou seja, 2880 minutos).
  • service_fee(substituição opcional):
    • Até 2 casas decimais.
    • Intervalo: 0.105.00 (%). Se omitido, o padrão do sistema para a moeda é usado.
  • formato do endereço: Deve corresponder à rede selecionada (ex.: BTC legacy/SegWit, ERC-20 0x…, TRC-20 T…, SOL etc.).
  • destination_tag / memo: Opcional; obrigatório em algumas redes (ex.: tag do XRP, memo do TON).

Notas

  • expires_at: Quando o endereço de depósito expira (epoch em segundos).
  • outputs[i].time: Hora planejada de saída em epoch segundos (baseada em delay_minutes).
  • Use ?pretty=1 para JSON legível durante os testes.
  • Limites de taxa: limite diário padrão por chave API; níveis superiores disponíveis (veja “Rate Limits”).

Erros Comuns

{
  "ok": false,
  "code": "BAD_REQUEST",
  "message": "Sum of percents must be exactly 100.00"
}
  • BAD_REQUEST: Corpo inválido, formato errado do endereço, percentual sem 2 decimais, taxa fora do intervalo, atraso > 48h etc.
  • AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH: Viola min/max por moeda.
  • SERVICE_UNAVAILABLE: Nenhum endereço de depósito disponível para essa rede.
  • TOO_MANY_REQUESTS: Limite diário da API atingido.
  • UNAUTHORIZED / FORBIDDEN: Chave API inválida/desativada.
POST/v1/mixer/orders

Cabeçalhos

  • Authorization: Bearer YOUR_API_KEY
  • Content-Type: application/json

Corpo da Requisição

{
  "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
}

Corpo da Requisição

{
  "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 serão enviados.
    • percent: O percentual do valor total a ser enviado para este endereço (ex.: 100 para o valor total ou 50 para metade).
    • delay: O atraso antes da transação ser processada. Pode ser especificado em minutos (ex.: 120) ou em formato de texto (ex.: "2h 0m").
    • destination_tag: Este campo é obrigatório para as redes XRP e TON. Caso não seja necessário, pode ser omitido ou deixado vazio (ex.: "").
  • amount: O valor total em unidades da moeda a ser transferido. Use ponto como separador decimal (ex.: 10.00000000).
  • crypto/ network: A moeda e a rede blockchain (ex.: btc/ btc para Bitcoin).
  • partner: Opcional, mas recomendado. Sua PARTNER KEY está disponível em Parceiro na aba API (junto com sua API-KEY). Quando usada, você ganha 30% da taxa de serviço.
  • service_fee: Substituição opcional da taxa de serviço em percentual. Se omitido, aplica-se o padrão do sistema. Se fornecido, deve ser um número entre 0.1 e 5 (inclusive).
  • qrcode: Opcional. 1 retorna uma URL Base64 em deposit.qr_code; 0 ou omitido não retorna QR code.
  • destination_tag: Obrigatório para as redes XRP e TON. Se não necessário, pode ser omitido ou deixado vazio ("").

Como usar o QR Code

Quando o qrcode é definido como 1, a resposta incluirá uma imagem codificada em Base64 no campo deposit.qr_code. Este é um QR code totalmente funcional que você pode incorporar no seu frontend como imagem, permitindo que os usuários o escaneiem com suas carteiras. Aqui está um exemplo de como exibi-lo em uma página web:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Escaneie para pagar" />

Os usuários podem escanear o QR code com o app 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 único da ordem.
  • deposit: Onde o usuário deve enviar os fundos.
  • fees: Todas as taxas aplicadas.
  • outputs: Distribuição planejada dos fundos, com atrasos.
  • time e expires_at: Timestamps Unix (fuso horário GMT-3).
  • signature_text: Assinatura digital blindada para validação.

Exemplo em 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


A Exchange API permite trocar um depósito de from_coin/ from_network em um único endereço de destino to_coin/ to_network. Nós alocamos um endereço de depósito, calculamos uma cotação em tempo real (limites baseados em USD + taxa aplicada) e retornamos o objeto completo da ordem que você pode consultar até ser financiada e executada.

  • Casos de uso: trocas instantâneas no checkout, “depositar em X → receber Y”, pontes off-ramp/on-ramp entre L1/L2.
  • Obtenha limites de pares e taxa padrão via /v1/meta/exchange antes de criar ordens.
  • Todos os campos monetários estão em unidades da moeda, salvo indicação; limites são baseados em USD.
  • Todos os timestamps estão em segundos de época Unix (fuso horário do servidor GMT-3).

EXCHANGE / Criar Ordem


Criar uma nova ordem de exchange. Você fornece o lado from_* (moeda/rede/quantia) e o to_address de destino para o lado to_* . Retornamos um endereço de depósito na from_network, uma cotação e o plano de saída.

Regras de Validação

  • amount: O valor em USD (quantia × preço da moeda de origem) deve estar dentro de min_usd/ max_usd específicos do par em /v1/meta/exchange.
  • formato do endereço: Deve corresponder à to_network selecionada (ex.: ERC-20 0x…, TRC-20 T…, BTC, DOGE, SOL etc.).
  • destination_tag / memo: Opcional, mas exigido em algumas redes (ex.: tag XRP, memo TON).
  • service_fee (opcional, porcentagem):
    • Até 2 casas decimais (ex.: 0.6 = 0.60%).
    • Limite global: mín 0.50%, máx 3.00%.
    • Se informado abaixo do padrão do site para o par, aplica-se o padrão do site. Se acima de 3.00%, é limitado a 3.00%.
    • Se omitido, taxa efetiva = max(padrão do site, 0.50%).

Notas

  • quote.final_usd = (quantia × preço de origem) × (1 − taxa%).
  • quote.to.estimated_receive = final_usd ÷ preço da to_coin.
  • receive.delay_label: Atraso planejado antes de enviarmos o swap (padrão 0h 10m).
  • expires_at: Janela de depósito para o endereço alocado.
  • Use ?pretty=1 para JSON formatado durante os testes.
POST/v1/exchange/orders

Cabeçalhos

  • Authorization: Bearer YOUR_API_KEY
  • Content-Type: application/json

Corpo da Requisição

{
  "from_coin": "eth",
  "from_network": "eth",
  "to_coin": "doge",
  "to_network": "doge",
  "to_address": "DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p",
  "amount": "1.00000000",
  "service_fee": 0.6,           // opcional; %0.60 → limitado pelas regras  "partner": "YOUR_PARTNER_KEY", // opcional, rende 30% da taxa da plataforma  "qrcode": 1                    // opcional; adiciona QR em base64 em deposit.qr_code}

Corpo da Requisiçã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,..."  // somente se 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 único da ordem para consultar status.
  • deposit: Onde o usuário deve enviar o from_coin.
  • quote: Cotação e taxa efetiva.
  • receive/ outputs: Detalhes planejados da saída do swap.

Exemplo em 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);

Como usar o QR Code

Quando qrcode é definido como 1 em Create, a resposta inclui um QR em Base64 em deposit.qr_code. Insira-o diretamente como <img> para permitir que os usuários escaneiem o endereço de depósito.

<img src="data:image/png;base64,..." alt="Escaneie para pagar" />

Preços


Recupere os preços de mercado mais recentes em USD para criptomoedas suportadas. Você pode consultar múltiplos símbolos de uma vez separando-os por vírgula.

Endpoint

GET/v1/prices?symbols=BTC,ETH,DOGE

Parâmetros de Consulta

  • symbols(opcional): Lista separada por vírgulas de símbolos de moedas (ex.: BTC,ETH,USDT). Se omitido, retorna todas as moedas suportadas.

Resposta

  • ok: true se a requisição foi bem-sucedida.
  • base: Sempre USD.
  • ts: Timestamp Unix (segundos).
  • prices: Objeto mapeando SÍMBOLO → "preço" (números em string).

Exemplo de Requisição (Apenas 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 Requisiçã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: Formato inválido de symbols.
  • UNAUTHORIZED / FORBIDDEN: API key inválida ou ausente.
  • SERVER_ERROR: Erro interno no servidor/banco de dados.

Notas

  • Tickers não suportados simplesmente são omitidos do objeto prices.
  • Valores numéricos são retornados como strings para preservar precisão.

Status da Ordem


Use um único endpoint para verificar o status de pedidos de mixer e de exchange. Você pode definir explicitamente o tipo de pedido (mixer/exchange) ou deixar a API detectar automaticamente.

Endpoint

POST/v1/orders/check

Corpo da Requisição

  • trackcode(obrigatório): O código de rastreamento de 16 caracteres em maiúsculas do pedido.
  • type(opcional): mixer | exchange. Se omitido, a API tentará detectar automaticamente.
  • outputs(opcional): none | summary | full (padrão: summary).
  • mask_addresses(opcional): true=endereços mascarados (padrão), false=retornar endereços completos.

Resposta

  • type: mixer ou exchange.
  • deposit.confirm_status: Status de confirmação do depósito:
    • 0: Nenhum pagamento recebido.
    • 1: Pagamento recebido, mas ainda pendente (aguardando confirmações ou não totalmente financiado).
    • 2: Depósito totalmente confirmado e financiado.
  • deposit.delete_in_sec: Segundos restantes até a expiração de retenção de 48 horas.
  • Bloco deposit.funding:
    • waiting_balance: Valor total esperado.
    • received_balance: Valor recebido até agora.
    • remaining_need: Valor restante necessário.
    • is_fully_funded: Indica se está totalmente financiado.
    • can_start: somente verdadeiro se confirm_status==2 E is_fully_funded==true.
  • outputs:
    • none: Não retornado.
    • summary: Retorna count, 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: Ex.: "INSUFFICIENT_FUNDS" (se não estiver totalmente financiado).

Regras de Negócio

  • Os pedidos não iniciarão a menos que estejam totalmente financiados (is_fully_funded=false): as saídas permanecem não atribuídas e nenhum pagamento de afiliado é gerado.
  • Se confirm_status==2 E is_fully_funded==true:
    • As saídas recebem carimbo de data/hora uma vez e permanecem consistentes em verificações repetidas.
    • Os ganhos de afiliados são creditados uma única vez quando o pedido se torna válido.

Exemplo de Requisição (PHP)

// Exemplo Mixer (saídas completas, endereços não mascarados)<?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);

Exemplo de Resposta — Totalmente Financiado

{
  "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
    }
  ]
}

Exemplo de Resposta — Parcialmente Financiado

{
  "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"
  }
}

Explicação das Saídas

  • index: Número sequencial da saída no pedido.
  • address: Endereço de destino para onde os fundos são enviados.
  • destination_tag: Tag/memo opcional para XRP, XLM, etc. (null se não for necessário).
  • coin: Código da criptomoeda da saída (ex.: btc, eth).
  • network: Nome da rede usada para a transferência (ex.: btc, eth).
  • share_percent: Percentual do depósito total atribuído a esta saída.
  • delay_label: Rótulo legível indicando quando essa saída será processada (ex.: 2h 0m).
  • delay_seconds: Atraso em segundos até a saída começar a ser processada.
  • state: Estado da saída:
    • 0 → Aguardando (depósito ainda não totalmente confirmado).
    • 1 → Processando (agendado; inicia quando delay_seconds chega a 0).
    • 2 → Concluído (transferência finalizada).
  • confirm: Status da confirmação da transferência (apenas relevante em state=2):
    • 0 → Transação transmitida, mas ainda não confirmada (pendente).
    • 1 → Transação confirmada (pelo menos 1 confirmação na blockchain).
  • tx: Hash da transação blockchain para esta saída.
  • amount: Valor enviado para este endereço de saída.
  • left_seconds: Segundos restantes até o horário agendado de envio.
    Nota: Essa contagem regressiva começa apenas após deposit.confirm_status=2 (totalmente confirmado). Exemplo: se 600 segundos (10 minutos) for definido, começa a contar apenas após a confirmação do depósito.

Nota: Os dados de pagamento e saídas são atualizados a cada ~1 minuto.

Códigos de Erro

  • BAD_REQUEST: trackcode ausente/inválido, corpo de requisição malformado.
  • NOT_FOUND: Pedido não encontrado.
  • UNAUTHORIZED / FORBIDDEN: Chave da API inválida ou desativada.
  • TOO_MANY_REQUESTS: Limite diário de requisições excedido.
  • SERVER_ERROR: Erro inesperado do servidor.

  • mask_addresses: controlado por mask_addresses (padrão: true).
  • delay_seconds: equivalente numérico de delay_label (retornado apenas no modo full).

Excluir Ordem


Exclui um pedido existente para que não possa mais ser acessado através da API. Uma vez excluído, o pedido fica permanentemente indisponível para consultas futuras.

Endpoint

POST/v1/orders/delete

Corpo da Requisição

  • trackcode(obrigatório): O código de rastreamento em maiúsculas com 16 caracteres.
  • type(opcional): mixer | exchange. Se omitido, a detecção é automática.

Resposta

  • ok: true em caso de sucesso.
  • trackcode: Eco do código de rastreamento solicitado.
  • type: O tipo de pedido ( mixer ou exchange).
  • deleted: true se o pedido foi excluído.

Comportamento

  • Se o pedido já estiver excluído ou não for encontrado, a API retorna 404 NOT_FOUND.
  • Se type for fornecido, apenas esse tipo será verificado; caso contrário, a detecção é automática.

Exemplo de Requisição (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
}

Exemplo de Resposta — Não Encontrado

{
  "ok": false,
  "code": "NOT_FOUND",
  "message": "Order not found or already deleted"
}

Códigos de Erro

  • BAD_REQUEST: trackcode ou type inválido.
  • NOT_FOUND: Pedido não encontrado ou já excluído.
  • UNAUTHORIZED / FORBIDDEN: Chave de API inválida ou ausente.
  • SERVER_ERROR: Erro interno do servidor.

Validação de Assinatura


Valida uma carga assinada digitalmente (assinatura da Carta de Garantia). Após a descriptografia bem-sucedida, a API retorna um subconjunto verificado dos detalhes do pedido relacionado (mixer ou exchange), adequado para verificações no cliente e exibição de status.

Endpoint

POST/v1/validate

Corpo da Requisição

  • signature(obrigatório): O bloco de assinatura digital, em Base64 bruto ou com as linhas BEGIN/END.

Resposta

  • ok: true em caso de sucesso.
  • message: Mensagem de status legível por humanos.
  • type: mixer | exchange.
  • route: Para mixer: confirm | deposit | mixing. Para 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 (inteiro, timestamp Unix)
  • outputs (array):
    • coin, network, address, destination_tag
    • share_percent (string, 2 decimais)
    • delay_minutes (inteiro), delay_label (ex.: 2h 0m)
    • amount (string, 8 decimais)
  • outputs_count (inteiro)

Comportamento

  • A assinatura digital fornecida é validada contra o sistema.
  • Apenas 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 com 404 NOT_FOUND.

Exemplo de Requisição (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);

Exemplo de Resposta — Sucesso

{
  "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": "Assinatura digital é obrigatória"
}
---
{
  "ok": false,
  "error": "INVALID_SIGNATURE",
  "message": "Os dados fornecidos não são Base64 válidos ou são muito curtos"
}
---
{
  "ok": false,
  "error": "DECRYPTION_FAILED",
  "message": "Falha na descriptografia. Certifique-se de que a assinatura fornecida é válida e tente novamente."
}
---
{
  "ok": false,
  "error": "MISSING_TRACKCODE",
  "message": "O trackcode é obrigatório no payload da assinatura."
}
---
{
  "ok": false,
  "error": "NOT_FOUND",
  "message": "Os detalhes do pedido solicitado não puderam ser encontrados."
}

Códigos de Erro

  • BAD_REQUEST: Falta signature ou payload malformado.
  • INVALID_SIGNATURE: Base64 inválido ou bloco de assinatura muito curto.
  • DECRYPTION_FAILED: Falha na descriptografia AES-GCM.
  • INVALID_PAYLOAD: O payload descriptografado não é um JSON válido.
  • MISSING_TRACKCODE: O campo track está ausente no payload.
  • 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_balance e amount → 8 decimais (string), share_percent → 2 decimais (string), service_fee → 2 decimais (string).
  • Atrasos: são retornados tanto o rótulo humano ( delay_label) quanto os minutos legíveis pela máquina ( delay_minutes).

Limites de Taxa


Limite: 1000 requisições / dia / chave de API.