Cargando el centro de documentación de la API...
MEZCLAS EN VIVO
BTC
0.015000 BTC
BTC Mezclado · 43s atrás
ADA
508 ADA
ADA Mezclado · 3m atrás
USDT
1,129 USDT
USDT Mezclado · 3m atrás
TON
102.008901 TON
TON Mezclado · 3m atrás
TON
39.394381 TON
TON Mezclado · 4m atrás
LTC
9.833244 LTC
LTC Mezclado · 8m atrás
USDT
2,845 USDT
USDT Mezclado · 11m atrás
BTC
0.009999 BTC
BTC Mezclado · 11m atrás
BTC
0.037000 BTC
BTC Mezclado · 11m atrás
DOGE
12,220 DOGE
DOGE Mezclado · 11m atrás
BTC
0.015000 BTC
BTC Mezclado · 43s atrás
ADA
508 ADA
ADA Mezclado · 3m atrás
USDT
1,129 USDT
USDT Mezclado · 3m atrás
TON
102.008901 TON
TON Mezclado · 3m atrás
TON
39.394381 TON
TON Mezclado · 4m atrás
LTC
9.833244 LTC
LTC Mezclado · 8m atrás
USDT
2,845 USDT
USDT Mezclado · 11m atrás
BTC
0.009999 BTC
BTC Mezclado · 11m atrás
BTC
0.037000 BTC
BTC Mezclado · 11m atrás
DOGE
12,220 DOGE
DOGE Mezclado · 11m atrás

Documentación de la API de SecretCryptos

Segura. Rápida. Amigable para desarrolladores.
Interfaz de Programación
Integra funciones de mezcla e intercambio de criptomonedas en tu aplicación o servicio usando la API oficial de SecretCryptos.
Documentación de la API de SecretCryptos para integración segura de criptomonedas Guía para desarrolladores sobre la integración de la API de SecretCryptos Referencia de la API para mezcla e intercambio de criptomonedas con SecretCryptos

Introducción


La API de SecretCryptos ofrece acceso seguro, simple y consistente a nuestros servicios de Mezclador y Exchange. Este documento “Lite” se centra en los endpoints principales para empezar rápidamente.

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

Ejemplo: GET /v1/pingprobarlo

También puedes explorar la página raíz en vivo en api.secretcryptos.com.

Más enlaces: Centro de enlacesDocumentación de la API (Swagger UI)Organización de GitHub.

Autenticación


  • Encabezado: Authorization: Bearer YOUR_API_KEY
  • Todas las solicitudes deben usar HTTPS.
Nunca llames a endpoints autenticados desde JavaScript del lado del cliente. Mantén tu API key en el servidor y haz proxy de la respuesta al navegador.

Obtener API Key


  1. Crea una cuenta o inicia sesión en Partner.
  2. Abre el menú superior y haz clic en la pestaña API.
  3. Copia tu API-KEY (mantenla en secreto; funciona tanto para Mezclador como para Exchange).

Seguridad de la API Key


Nunca llames a endpoints autenticados desde JavaScript del lado del cliente. Mantén tu API key en el servidor y haz proxy de las respuestas al navegador.

cURL (lado del 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


Chequeo de estado simple y versión.

GET/v1/ping
GET https://api.secretcryptos.com/v1/ping
{
  "ok": true,
  "service": "SecretCryptos API",
  "version": "1.2.6",
  "ts": 1723800000
}
  • ts: Época Unix (segundos).
  • No requiere autenticación.

Meta


Descubrimiento raíz de los endpoints meta disponibles.

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": "Chequeo de estado simple."
    },
    {
      "name": "Meta (Mixer)",
      "path": "/v1/meta/mixer",
      "method": "GET",
      "auth": true,
      "desc": "Monedas/redes soportadas y reglas del mezclador."
    },
    {
      "name": "Meta (Exchange)",
      "path": "/v1/meta/exchange",
      "method": "GET",
      "auth": true,
      "desc": "Pares de trading soportados y límites de exchange."
    },
    {
      "name": "Create Mixer Order",
      "path": "/v1/mixer/orders",
      "method": "POST",
      "auth": true,
      "desc": "Crear una nueva orden de mezclador."
    },
    {
      "name": "Create Exchange Order",
      "path": "/v1/exchange/orders",
      "method": "POST",
      "auth": true,
      "desc": "Crear una nueva orden de exchange."
    },
    {
      "name": "Check Order",
      "path": "/v1/orders/check",
      "method": "POST",
      "auth": true,
      "desc": "Consultar estado de orden por trackcode."
    },
    {
      "name": "Delete Order",
      "path": "/v1/orders/delete",
      "method": "POST",
      "auth": true,
      "desc": "Eliminar una orden (si está permitido)."
    },
    {
      "name": "Prices",
      "path": "/v1/prices",
      "method": "GET",
      "auth": true,
      "desc": "Tasas de cambio y precios actuales."
    },
    {
      "name": "Validate Signature",
      "path": "/v1/validate",
      "method": "POST",
      "auth": false,
      "desc": "Validar la firma de una carta de garantía digital."
    }
  ]
}
		
  • No requiere autenticación.

Meta / Mezclador


Configuración por moneda del mezclador (mín/máx, etiquetas de red, comisiones por servicio/dirección, decimales, confirmaciones).

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
        }
      }
    }
  }
}
  • Auth requerido:Authorization: Bearer YOUR_API_KEY.
  • service_fee es un porcentaje (ej., 0.1 = 0.1%).
  • per_address_fee es una cadena con 8 decimales en unidades de la moneda.

Meta / Exchange


Configuración de exchange: mantenimiento, precios en USD en vivo y límites/comisiones por red.

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"
          }
        }
      },
	  ...
    }
  }
}
  • Auth requerido:Authorization: Bearer YOUR_API_KEY.
  • service_fee es una cadena de porcentaje (ej., "0.5" = 0.5%).
  • prices_usd son valores en vivo desde la base de datos.

MEZCLADOR


La API de Mezclador te permite crear transacciones con privacidad de manera programática. Defines la moneda, red, monto y una o más direcciones de salida con porcentajes y retrasos opcionales. Asignamos una dirección de depósito y devolvemos un plan completo (comisiones + salidas) para que puedas automatizar ingresos, pagos o flujos tipo escrow.

  • Casos de uso: recepción de pagos segura, reparto automático de ingresos, pagos a múltiples wallets, desembolsos con retraso.
  • Consulta límites y comisiones vía /v1/meta/mixer antes de crear órdenes.
  • Todos los campos monetarios están en unidades de moneda salvo que se indique lo contrario.
  • Todas las marcas de tiempo están en segundos de época Unix (zona horaria: GMT-3 en el servidor).

MEZCLADOR / Crear Orden


Crear una nueva orden de mixer. Proporcionas la moneda, red, monto y una o más direcciones de salida con porcentajes y retrasos. El sistema asigna una dirección de depósito y devuelve los detalles de la orden incluyendo comisiones y plan de salida.

Reglas de Validación

  • amount: Debe estar entre min_amount y max_amount específicos de la moneda desde /v1/meta/mixer.
  • addresses: 1–10 salidas.
  • percent:
    • Formato: hasta 2 decimales (ej., 10, 10.5, 10.50).
    • Mínimo por dirección: ≥ 1.00, máximo: ≤ 100.00.
    • El total de todas las salidas debe ser exactamente 100.00.
    • Si solo hay 1 salida, su porcentaje debe ser exactamente 100.00.
  • delay:
    • Acepta minutos (ej., 120) o etiqueta (ej., "2h 0m").
    • Máximo: 48h (i.e., 2880 minutos).
  • service_fee(sobrescritura opcional):
    • Hasta 2 decimales.
    • Rango: 0.105.00 (%). Si se omite, se usa el valor por defecto del sistema para la moneda.
  • formato de dirección: Debe coincidir con la red seleccionada (ej., BTC legacy/SegWit, ERC-20 0x…, TRC-20 T…, SOL, etc.).
  • destination_tag / memo: Opcional; requerido para algunas redes (ej., etiqueta XRP, memo TON).

Notas

  • expires_at: Cuando expira la dirección de depósito (segundos epoch).
  • outputs[i].time: Hora de salida planificada en segundos epoch (basado en delay_minutes).
  • Usa ?pretty=1 para JSON legible durante pruebas.
  • Límites de uso: límite diario por API key por defecto; niveles superiores disponibles (ver “Rate Limits”).

Errores Comunes

{
  "ok": false,
  "code": "BAD_REQUEST",
  "message": "Sum of percents must be exactly 100.00"
}
  • BAD_REQUEST: Cuerpo inválido, formato de dirección erróneo, porcentaje no con 2 decimales, comisión fuera de rango, retraso > 48h, etc.
  • AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH: Viola min/max por moneda.
  • SERVICE_UNAVAILABLE: No hay dirección de depósito disponible para esa red.
  • TOO_MANY_REQUESTS: Límite diario de API alcanzado.
  • UNAUTHORIZED / FORBIDDEN: API key inválida o deshabilitada.
POST/v1/mixer/orders

Cabeceras

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

Cuerpo de la Petición

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

Cuerpo de la Petición

{
  "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 salida. Cada dirección debe tener los siguientes campos:
    • address: Dirección de destino donde se envían los fondos.
    • percent: Porcentaje del monto total a enviar a esta dirección (ej., 100 para todo el monto o 50 para la mitad).
    • delay: El retraso antes de procesar la transacción. Puede especificarse en minutos (ej., 120) o en formato de texto (ej., "2h 0m").
    • destination_tag: Este campo es requerido para redes XRP y TON. Si no se requiere, puede omitirse o dejarse vacío (ej., "").
  • amount: El monto total en unidades de moneda a transferir. Usa un punto como separador decimal (ej., 10.00000000).
  • crypto/ network: La moneda y red blockchain (ej., btc/ btc para Bitcoin).
  • partner: Opcional pero recomendado. Tu PARTNER KEY está disponible en Partner bajo la pestaña API (junto con tu API-KEY). Al usarlo, ganas 30% de la comisión del servicio.
  • service_fee: Sobrescritura opcional de la comisión en %. Si se omite, aplica el valor por defecto. Si se indica, debe estar entre 0.1 y 5 (inclusive).
  • qrcode: Opcional. 1 devuelve una URL de datos Base64 en deposit.qr_code; 0 o vacío no devuelve QR.
  • destination_tag: Requerido para redes XRP y TON. Si no es necesario, puede omitirse o dejarse vacío ("").

Cómo Usar el Código QR

Cuando qrcode se establece en 1, la respuesta incluirá una imagen codificada en Base64 bajo el campo deposit.qr_code. Es un código QR totalmente funcional que puedes incrustar en tu frontend como imagen, permitiendo a los usuarios escanearlo con sus aplicaciones de billetera. Ejemplo para mostrarlo en una página web:

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

Los usuarios pueden escanear el código QR con su billetera preferida para rellenar automáticamente la dirección y el monto, facilitando una transacción rápida y segura.

Respuesta

{
  "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 de la orden.
  • deposit: Dónde el usuario debe enviar fondos.
  • fees: Todas las comisiones aplicadas.
  • outputs: Distribución planificada de fondos, con retrasos.
  • time y expires_at: Timestamps Unix (zona horaria GMT-3).
  • signature_text: Firma digital blindada para validación.

Ejemplo en 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


La API de Exchange te permite intercambiar un depósito from_coin/ from_network en una única dirección de destino to_coin/ to_network. Asignamos una dirección de depósito, calculamos una cotización en vivo (límites y comisión en USD aplicados) y devolvemos el objeto completo de la orden que puedes consultar hasta que sea financiada y ejecutada.

  • Casos de uso: intercambios instantáneos en checkout, “depositar en X → recibir Y”, puentes on-ramp/off-ramp entre L1/L2.
  • Obtén límites de pares y comisión por defecto vía /v1/meta/exchange antes de crear órdenes.
  • Todos los campos monetarios están en unidades de moneda salvo indicación; los límites están basados en USD.
  • Todos los timestamps son segundos epoch Unix (zona horaria del servidor GMT-3).

EXCHANGE / Crear Orden


Crear una nueva orden de intercambio. Debes indicar el lado from_* (moneda/red/monto) y la to_address de destino para el lado to_* . Te devolvemos una dirección de depósito en la from_network, una cotización y el plan de salida.

Reglas de validación

  • amount: El valor en USD (monto × precio de la moneda origen) debe estar dentro de los min_usd/ max_usd específicos del par desde /v1/meta/exchange.
  • formato de dirección: Debe coincidir con la to_network seleccionada (ej.: ERC-20 0x…, TRC-20 T…, BTC, DOGE, SOL, etc.).
  • destination_tag / memo: Opcional pero requerido en algunas redes (ej.: etiqueta de XRP, memo de TON).
  • service_fee (opcional, porcentaje):
    • Hasta 2 decimales (ej.: 0.6 = 0.60%).
    • Límite global: mínimo 0.50%, máximo 3.00%.
    • Si se indica por debajo del valor predeterminado del sitio para ese par, se aplicará el valor por defecto. Si es superior a 3.00%, se limita a 3.00%.
    • Si se omite, la comisión efectiva = max(por_defecto, 0.50%).

Notas

  • quote.final_usd = (monto × precio origen) × (1 − %comisión).
  • quote.to.estimated_receive = final_usd ÷ precio de la moneda destino.
  • receive.delay_label: Retraso planificado antes de enviar el swap (por defecto 0h 10m).
  • expires_at: Ventana de depósito para la dirección asignada.
  • Usa ?pretty=1 para JSON legible durante pruebas.
POST/v1/exchange/orders

Cabeceras

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

Cuerpo de la petición

{
  "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 por reglas  "partner": "YOUR_PARTNER_KEY", // opcional, gana 30% de la comisión de la plataforma  "qrcode": 1                    // opcional; añade QR en base64 en deposit.qr_code}

Cuerpo de la petición (ejemplos 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"
}

Respuesta

{
  "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,..."  // solo si 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 de la orden para consultar estado.
  • deposit: Dónde el usuario debe enviar el from_coin.
  • quote: Cotización y comisión efectiva.
  • receive/ outputs: Detalles planificados de salida del swap.

Ejemplo en 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);

Cómo usar el código QR

Cuando qrcode se establece en 1 al crear, la respuesta incluye un QR en Base64 en deposit.qr_code. Insértalo directamente como <img> para que los usuarios escaneen la dirección de depósito.

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

Precios


Obtén los últimos precios de mercado en USD de las criptomonedas soportadas. Puedes consultar múltiples símbolos a la vez separándolos con comas.

Endpoint

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

Parámetros de consulta

  • symbols(opcional): Lista separada por comas de símbolos (ej.: BTC,ETH,USDT). Si se omite, se devuelven todas las monedas soportadas.

Respuesta

  • ok: true si la petición fue exitosa.
  • base: Siempre USD.
  • ts: Marca de tiempo Unix (segundos).
  • prices: Objeto que mapea SÍMBOLO → "precio" (números en texto).

Ejemplo de petición (Solo 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);

Ejemplo de petición (Todos los 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);

Ejemplo de respuesta

{
  "ok": true,
  "base": "USD",
  "ts": 1755600000,
  "prices": {
    "BTC": "117799.51713382",
    "ETH": "4409.46254479",
    "USDT": "1.0005594"
  }
}

Códigos de error

  • BAD_REQUEST: Formato inválido de symbols.
  • UNAUTHORIZED / FORBIDDEN: API key inválida o ausente.
  • SERVER_ERROR: Error interno de servidor/base de datos.

Notas

  • Los tickers no soportados simplemente se omiten en el objeto prices.
  • Los valores numéricos se devuelven como cadenas para preservar la precisión.

Estado de Orden


Usa un único endpoint para comprobar el estado de pedidos de mixer y de exchange. Puedes establecer explícitamente el tipo de pedido (mixer/exchange) o dejar que la API lo detecte automáticamente.

Endpoint

POST/v1/orders/check

Cuerpo de la solicitud

  • trackcode(obligatorio): El código de seguimiento de 16 caracteres en mayúsculas del pedido.
  • type(opcional): mixer | exchange. Si se omite, la API intentará detectarlo automáticamente.
  • outputs(opcional): none | summary | full (por defecto: summary).
  • mask_addresses(opcional): true=enmascarar direcciones (por defecto), false=devolver direcciones completas.

Respuesta

  • type: mixer o exchange.
  • deposit.confirm_status: Estado de confirmación del depósito:
    • 0: No se ha recibido pago.
    • 1: Pago recibido pero aún pendiente (esperando confirmaciones o no totalmente financiado).
    • 2: Depósito completamente confirmado y financiado.
  • deposit.delete_in_sec: Segundos restantes hasta la expiración del período de retención de 48 horas.
  • Bloque deposit.funding:
    • waiting_balance: Monto total esperado.
    • received_balance: Monto recibido hasta ahora.
    • remaining_need: Monto restante necesario.
    • is_fully_funded: Si está totalmente financiado.
    • can_start: solo true si confirm_status==2 Y is_fully_funded==true.
  • outputs:
    • none: No se devuelve.
    • summary: Devuelve count, sent_count, sent_total.
    • full: Para cada salida: index, address (enmascarada o no), destination_tag, coin, network, share_percent, delay_label, delay_seconds, state, confirm, tx, amount, left_seconds.
  • status_reason: ej. "INSUFFICIENT_FUNDS" (si no está totalmente financiado).

Reglas de negocio

  • Los pedidos no comenzarán a menos que estén totalmente financiados (is_fully_funded=false): las salidas permanecen sin asignar y no se genera comisión de afiliado.
  • Si confirm_status==2 Y is_fully_funded==true:
    • Las salidas se sellan con una marca de tiempo una sola vez y permanecen consistentes en comprobaciones repetidas.
    • Las ganancias de afiliados se acreditan una única vez cuando el pedido se valida.

Ejemplo de solicitud (PHP)

// Ejemplo Mixer (salidas completas, direcciones sin enmascarar)<?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);

Ejemplo de respuesta — 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
    }
  ]
}

Ejemplo de respuesta — No financiado completamente

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

Explicación de las salidas

  • index: Número secuencial de la salida en el pedido.
  • address: Dirección de destino donde se envían los fondos.
  • destination_tag: Tag/memo opcional para XRP, XLM, etc. (null si no es requerido).
  • coin: Código de la criptomoneda de la salida (ej. btc, eth).
  • network: Nombre de la red usada para la transferencia (ej. btc, eth).
  • share_percent: Porcentaje del depósito total asignado a esta salida.
  • delay_label: Etiqueta legible que muestra cuándo se procesará esta salida (ej. 2h 0m).
  • delay_seconds: Retraso en segundos hasta que la salida pueda empezar a procesarse.
  • state: Estado de la salida:
    • 0 → Esperando (depósito aún no totalmente confirmado).
    • 1 → Procesando (programado; comienza cuando delay_seconds llega a 0).
    • 2 → Completado (transferencia finalizada).
  • confirm: Estado de confirmación de la transferencia (solo relevante en state=2):
    • 0 → Transacción transmitida pero aún sin confirmar (pendiente).
    • 1 → Transacción confirmada (al menos 1 confirmación en blockchain).
  • tx: Hash de transacción en blockchain para esta salida.
  • amount: Monto enviado a esta dirección de salida.
  • left_seconds: Segundos restantes hasta el tiempo de envío programado.
    Nota: Esta cuenta regresiva comienza solo después de que deposit.confirm_status=2 (totalmente confirmado). Ejemplo: si se configuran 600 segundos (10 minutos), empieza a contar únicamente tras la confirmación del depósito.

Nota: Los datos de pagos y salidas se actualizan aproximadamente cada 1 minuto.

Códigos de error

  • BAD_REQUEST: trackcode faltante/inválido, cuerpo de solicitud malformado.
  • NOT_FOUND: Pedido no encontrado.
  • UNAUTHORIZED / FORBIDDEN: API key inválida o deshabilitada.
  • TOO_MANY_REQUESTS: Límite diario de solicitudes superado.
  • SERVER_ERROR: Error inesperado del servidor.

  • mask_addresses: controlado por mask_addresses (por defecto: true).
  • delay_seconds: equivalente numérico de delay_label (solo se devuelve en modo full).

Eliminar Orden


Elimina una orden existente para que ya no pueda ser accedida a través de la API. Una vez eliminada, la orden queda permanentemente inaccesible para futuras consultas.

Endpoint

POST/v1/orders/delete

Cuerpo de la solicitud

  • trackcode(obligatorio): El código de seguimiento en mayúsculas de 16 caracteres.
  • type(opcional): mixer | exchange. Si se omite, la detección es automática.

Respuesta

  • ok: true en caso de éxito.
  • trackcode: Eco del código de seguimiento solicitado.
  • type: El tipo de orden ( mixer o exchange).
  • deleted: true si la orden ha sido eliminada.

Comportamiento

  • Si la orden ya está eliminada o no se encuentra, la API devuelve 404 NOT_FOUND.
  • Si se proporciona type, solo se comprueba ese tipo; de lo contrario, la detección es automática.

Ejemplo de solicitud (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);

Ejemplo de respuesta — Éxito

{
  "ok": true,
  "trackcode": "D391FC08747E7B04",
  "type": "exchange",
  "deleted": true
}

Ejemplo de respuesta — No encontrada

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

Códigos de error

  • BAD_REQUEST: trackcode o type inválido.
  • NOT_FOUND: Orden no encontrada o ya eliminada.
  • UNAUTHORIZED / FORBIDDEN: API key inválida o ausente.
  • SERVER_ERROR: Error interno del servidor.

Validación de Firma


Valida una carga firmada digitalmente (firma de la Carta de Garantía). Tras una descifrado exitoso, la API devuelve un subconjunto verificado de los detalles de la orden relacionada (mixer o exchange), adecuado para comprobaciones en cliente y visualización de estado.

Endpoint

POST/v1/validate

Cuerpo de la solicitud

  • signature(obligatorio): El bloque de firma digital, ya sea en Base64 crudo o con las líneas BEGIN/END.

Respuesta

  • ok: true en caso de éxito.
  • message: Mensaje de estado legible por humanos.
  • type: mixer | exchange.
  • route: Para mixer: confirm | deposit | mixing. Para exchange: exc-deposit | exc-send.
  • trackcode: Código de seguimiento resuelto.
  • order:
    • deposit_address (string)
    • service_fee (string, 2 decimales)
    • coin (string)
    • network (string)
    • waiting_balance (string, 8 decimales)
    • created_at (integer, timestamp Unix)
  • outputs (array):
    • coin, network, address, destination_tag
    • share_percent (string, 2 decimales)
    • delay_minutes (integer), delay_label (ej. 2h 0m)
    • amount (string, 8 decimales)
  • outputs_count (integer)

Comportamiento

  • La firma digital proporcionada se valida contra el sistema.
  • Solo las órdenes recientes (dentro de las 48 horas) son elegibles para validación. Las órdenes más antiguas pueden haber sido eliminadas automáticamente.
  • Si no se encuentra una orden válida, la API responde con 404 NOT_FOUND.

Ejemplo de solicitud (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);

Ejemplo de respuesta — Éxito

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

Ejemplo de respuesta — Errores

{
  "ok": false,
  "error": "BAD_REQUEST",
  "message": "Se requiere firma digital"
}
---
{
  "ok": false,
  "error": "INVALID_SIGNATURE",
  "message": "Los datos proporcionados no son Base64 válido o son demasiado cortos"
}
---
{
  "ok": false,
  "error": "DECRYPTION_FAILED",
  "message": "Error de descifrado. Asegúrese de que la firma proporcionada es válida e inténtelo de nuevo."
}
---
{
  "ok": false,
  "error": "MISSING_TRACKCODE",
  "message": "El trackcode es obligatorio en la carga de la firma."
}
---
{
  "ok": false,
  "error": "NOT_FOUND",
  "message": "No se pudieron encontrar los detalles de la orden solicitada."
}

Códigos de error

  • BAD_REQUEST: Falta signature o carga malformada.
  • INVALID_SIGNATURE: Base64 inválido o el bloque de firma es demasiado corto.
  • DECRYPTION_FAILED: Error en el descifrado AES-GCM.
  • INVALID_PAYLOAD: La carga descifrada no es un JSON válido.
  • MISSING_TRACKCODE: El campo track falta en la carga.
  • NOT_FOUND: Orden no encontrada en las últimas 48 horas.
  • UNAUTHORIZED / FORBIDDEN: API key inválida o ausente.
  • SERVER_ERROR: Error interno del servidor.

Notas

  • Precisión numérica: waiting_balance y amount → 8 decimales (string), share_percent → 2 decimales (string), service_fee → 2 decimales (string).
  • Retrasos: se devuelven tanto la etiqueta legible por humanos ( delay_label) como los minutos legibles por máquina ( delay_minutes).

Límites de Uso


Límite: 1000 solicitudes / día / API key.