Einführung
DieSecretCryptos APIbietet sicheren, einfachen und konsistenten Zugriff auf unsereMixerundExchangeDienstleistungen. Dieses „Lite“-Dokument konzentriert sich auf die Kernendpunkte, um Ihnen einen schnellen Einstieg zu erleichtern.
Basis-URL: https://api.secretcryptos.com/v1
Beispiel: GET /v1/ping – versuchen Sie es
Sie können auch die Live-Root-Seite unter api.secretcryptos.com.
erkunden. Weitere Links:Links hub • API-Dokumente (Swagger-Benutzeroberfläche) • GitHub Organization.
Authentifizierung
- Header:
Authorization: Bearer YOUR_API_KEY - Alle Anfragen müssen HTTPS verwenden.
API-Schlüssel abrufen
- Erstellen Sie ein Konto oder melden Sie sich an beiPartner.
- Öffnen Sie das obere Menü und klicken Sie auf die Registerkarte API.
- Kopieren IhrAPI-SCHLÜSSEL(Halten Sie ihn geheim; er funktioniert sowohl für Mixer als auch für Exchange).
API-Schlüsselsicherheit
cURL (serverseitig)
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
Einfache Gesundheitsprüfung und Version.
GET https://api.secretcryptos.com/v1/ping
{
"ok": true,
"service": "SecretCryptos API",
"version": "1.2.6",
"ts": 1723800000
}
ts: Unix-Epoche (Sekunden).- Keine Authentifizierung erforderlich.
MIXER
Mit derMixer-APIkönnen Sie datenschutzschonende Transaktionen programmgesteuert erstellen. Sie definieren dencoin, network, amount und eine oder mehrereAusgabeadressenmit prozentualen Anteilen und optionalen Verzögerungen. Wir weisen eine Einzahlungsadresse zu und senden einen vollständigen Plan (Gebühren + Ausgaben) zurück, damit Sie Einnahmen, Auszahlungen oder treuhänderische Abläufe automatisieren können.
- Anwendungsfälle: sicherer Zahlungseingang, automatisierte Umsatzbeteiligung, Auszahlungen an mehrere Wallets, verzögerte Auszahlungen.
- Erhalten Sie Limits und Gebühren über
/v1/meta/mixerbevor Sie Bestellungen erstellen. - Alle Geldfelder sind inMünzeinheitensofern nicht anders angegeben.
- Alle Zeitstempel sind Unix-Epochensekunden (Zeitzone: GMT-3 auf dem Server).
MIXER / Auftrag erstellen
Erstellen Sie einen neuen Mixerauftrag. Sie geben die Münze, das Netzwerk, den Betrag und eine oder mehrere Ausgabeadressen mit Prozentsätzen und Verzögerungen an. Das System weist eine Einzahlungsadresse zu und gibt Auftragsdetails einschließlich Gebühren und Ausgabeplan zurück.
Validierungsregeln
amount: Muss zwischen münzenspezifischmin_amountundmax_amountvon/v1/meta/mixer.addresses: 1–10 Ausgaben liegen.percent:- Format: bis zu 2 Dezimalstellen (z. B.
10,10.5,10.50). - Minimum pro Adresse:
≥ 1.00, Maximum:≤ 100.00. - Die Gesamtsumme aller Ausgaben muss genau sein.
100.00. - Wenn es nur eine Ausgabe gibt, muss ihr Prozentsatz genau sein.
100.00.
- Format: bis zu 2 Dezimalstellen (z. B.
delay:- Akzeptiert Minuten (z. B.
120) oder Beschriftung (z. B."2h 0m"). - Maximum:
48h(i.e.,2880minutes).
- Akzeptiert Minuten (z. B.
service_fee(optional override):- Up to 2 decimals.
- Range:
0.10–5.00(%). If omitted, system default for the coin is used.
address format: Must match the selected network (e.g., BTC legacy/SegWit, ERC-200x…, TRC-20T…, SOL, etc.).destination_tag / memo: Optional; required for some networks (e.g., XRP tag, TON memo).
Notes
expires_at: When the deposit address expires (epoch seconds).outputs[i].time: Planned output time as epoch seconds (based ondelay_minutes).- Use
?pretty=1for human-readable JSON during testing. - Rate limits: default per API key daily limit; higher tiers available (see “Rate Limits”).
Common Errors
{
"ok": false,
"code": "BAD_REQUEST",
"message": "Sum of percents must be exactly 100.00"
}
BAD_REQUEST: Invalid body, wrong address format, percent not 2-decimal, fee out of range, delay > 48h, etc.AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH: Verstößt gegen Min/Max pro Münze.SERVICE_UNAVAILABLE: Keine verfügbare Einzahlungsadresse für dieses Netzwerk.TOO_MANY_REQUESTS: Tägliches API-Limit erreicht.UNAUTHORIZED / FORBIDDEN: Ungültiger/deaktivierter API-Schlüssel.
Headers
Authorization: Bearer YOUR_API_KEYContent-Type: application/json
Anfrage 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: Liste der Ausgabeziele. Jede Adresse sollte die folgenden Felder haben:address: Die Zieladresse, an die das Geld gesendet wird.percent: Der Prozentsatz des Gesamtbetrags, der an diese Adresse gesendet werden soll (z. B.100für den gesamten Betrag oder50für die Hälfte).delay: Die Verzögerung, bevor die Transaktion verarbeitet wird. Es kann in Minuten (z. B.120) oder im Textformat (z. B."2h 0m") angegeben werden.destination_tag: Dieses Feld ist erforderlich für XRPundTONNetzwerke. If not required, it can be omitted or left empty (e.g.,"").
amount: The total amount in coin units to be transferred. Bitte verwenden Sie einen Punkt als Dezimaltrennzeichen (z. B.10.00000000).crypto/network: Das Münz- und Blockchain-Netzwerk (z. B.btc/btcfür Bitcoin).partner: Optional, aber empfohlen. YourPARTNER KEYis available onPartnerunder the API tab (with your API-KEY). When used, you earn30% of the service fee.service_fee: Optional override for service fee in percent. Wenn es weggelassen wird, gilt der Systemstandard. Falls angegeben, muss es eine Zahl zwischen 0,1 und 5 (einschließlich) sein.qrcode: Optional.1gibt eine Base64-Daten-URL unterdeposit.qr_code;0zurück oder wird weggelassen, es wird kein QR-Code zurückgegeben.destination_tag: Erforderlich für XRPundTONNetzwerke. Wenn es nicht benötigt wird, kann es weggelassen oder leer gelassen werden ("").
So verwenden Sie den QR-Code
Wenn qrcode auf 1 eingestellt ist, enthält die Antwort ein Base64-codiertes Bild unter dem Feld deposit.qr_code. Dabei handelt es sich um einen voll funktionsfähigen QR-Code, den Sie als Bild in Ihr Frontend einbetten können, sodass Benutzer ihn mit ihren Wallet-Anwendungen scannen können. Hier ist ein Beispiel für die Anzeige auf einer Webseite:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Scan to pay" />
Benutzer können den QR-Code mit ihrer bevorzugten Wallet-App scannen, um sofort die Zieladresse und den Betrag einzugeben und so eine schnelle und sichere Transaktion zu ermöglichen.
Antwort
{
"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: Eindeutige Bestellkennung.deposit: Wohin der Benutzer Geld senden soll.fees: Alle anfallenden Gebühren.outputs: Geplante Mittelverteilung mit Verzögerungen.timeundexpires_at: Unix-Zeitstempel (GMT-3-Zeitzone).signature_text: Digitale Panzersignatur zur Validierung.
PHP-Beispiel
<?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
TheExchange APIlets you swap afrom_coin/ from_networkdeposit into a singleto_coin/ to_networkdestination address. We allocate a deposit address, compute a live quote (USD-based limits & fee applied), and return the full order object you can poll until funded and executed.
- Use cases: instant swaps at checkout, “deposit in X → receive Y”, off-ramp/on-ramp bridges between L1/L2s.
- Get pair limits & default fee via
/v1/meta/exchangebefore creating orders. - All monetary fields are incoin unitsunless noted; limits areUSD-based.
- All timestamps are Unix epoch seconds (server timezone GMT‑3).
EXCHANGE / Create Order
Create a new exchange order. You provide thefrom_* Seite (Münze/Netzwerk/Betrag) und das Zielto_addressfür die to_* Seite. Wir geben eine Einzahlungsadresse für from_network, ein Angebot und die geplante Ausgabe zurück.
Validierungsregeln
amount: USD-Wert (Betrag × from_coin-Preis) muss innerhalb des paarspezifischen Bereichs liegenmin_usd/max_usdvon/v1/meta/exchange.address format: Muss mit dem ausgewähltento_networkübereinstimmen (z. B. ERC‑200x…, TRC‑20T…, BTC, DOGE, SOL usw.).destination_tag / memo: Optional, aber von einigen Netzwerken erforderlich (z. B.XRPtag,TONmemo).service_fee(optional, Prozent):- Bis zu 2 Dezimalstellen (z. B.
0.6=0.60%). - Globale Klemme: min
0.50%, max3.00%. - Wenn unterhalb der Site-Standardeinstellung für dieses Paar angegeben, gilt die Site-Standardeinstellung. Wenn oben
3.00%, ist die Obergrenze auf3.00%. - Wenn weggelassen, effektive Gebühr =
max(site_default, 0.50%).
- Bis zu 2 Dezimalstellen (z. B.
Anmerkungen
quote.final_usd= (Betrag × vom Preis) × (1 − Gebühr%).quote.to.estimated_receive=final_usd÷ to_coinPreis.receive.delay_label: Geplante Verzögerung, bevor wir den Swap senden (Standard0h 10m).expires_at: Hinterlegungsfenster für die zugewiesene Adresse.- Verwenden Sie
?pretty=1für schön gedrucktes JSON beim Testen.
Header
Authorization: Bearer YOUR_API_KEYContent-Type: application/json
Anfragetext
{
"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}
Anfragetext (XRP/TON-Beispiele)
{
"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"
}
Response
{
"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: Eindeutige Auftragskennung zum Abfragestatus.deposit: Wohin der Benutzer senden mussfrom_coin.quote: Preisübersicht und effektive Gebühr.receive/outputs: Geplante Swap-Ausgabedetails.
PHP-Beispiel
<?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);
So verwenden Sie den QR-Code
Wennqrcodein „Erstellen“ auf 1 eingestellt ist, enthält die Antwort eine Base64-codierte Antwort QR unterdeposit.qr_code. Betten Sie es direkt als <img> ein, damit Benutzer die Einzahlungsadresse scannen können.
<img src="data:image/png;base64,..." alt="Scan to pay" />
Preise
Rufen Sie die neuesten Marktpreise in USDfür unterstützte Kryptowährungen ab. Sie können mehrere Symbole gleichzeitig abfragen, indem Sie sie durch Kommas trennen.
Endpoint
Abfrageparameter
symbols(optional): Durch Kommas getrennte Liste von Münzsymbolen (z. B.BTC,ETH,USDT). Wenn weggelassen, werden alle unterstützten Münzen zurückgegeben.
Antwort
ok:truewenn die Anfrage erfolgreich war.base: ImmerUSD.ts: Unix-Zeitstempel (Sekunden).prices: ObjektzuordnungSYMBOL → "price"(Stringnummern).
Beispielanfrage (nur 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);
Beispiel Anfrage (Alle Symbole)
<?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);
Beispielantwort
{
"ok": true,
"base": "USD",
"ts": 1755600000,
"prices": {
"BTC": "117799.51713382",
"ETH": "4409.46254479",
"USDT": "1.0005594"
}
}
Fehlercodes
BAD_REQUEST: UngültigessymbolsFormat.UNAUTHORIZED / FORBIDDEN: API-Schlüssel ungültig oder fehlt.SERVER_ERROR: Interner Server-/Datenbankfehler.
Hinweise
- Nicht unterstützte Ticker werden einfach weggelassen das
pricesObjekt. - Numerische Werte werden als Zeichenfolgen zurückgegeben, um die Genauigkeit zu wahren.
Bestellstatus
Verwenden Sie einen einzigen Endpunkt, um den Status beidermixerundexchangeBestellungen zu überprüfen. Sie können den Bestelltyp explizit festlegen (mixer/ exchange) oder ihn von der API automatisch erkennen lassen.
Endpoint
Request Body
trackcode(erforderlich): Der 16-stellige Tracking-Code in Großbuchstaben des order.type(optional):mixer|exchange. Wenn es weggelassen wird, versucht die API eine automatische Erkennung.outputs(optional):none|summary|full(Standard:summary).mask_addresses(optional):true=Adressen maskieren (Standard),false=vollständige Adressen zurückgeben.
Antwort
type:mixeroderexchange.deposit.confirm_status: Status der Einzahlungsbestätigung:0: Keine Zahlung erhalten.1: Zahlung erhalten, aber noch ausstehend (entweder auf Bestätigungen wartend oder noch nicht vollständig finanziert).2: Einzahlung vollständig bestätigt und finanziert.
deposit.delete_in_sec: Verbleibende Sekunden bis zur 48-Stunden-Einbehaltung Ablaufdatum.deposit.fundingblock:waiting_balance: Erwarteter Gesamtbetrag.received_balance: Bisher erhaltener Betrag.remaining_need: Verbleibender Betrag erforderlich.is_fully_funded: Ob vollständig finanziert.can_start: nurtrue ifconfirm_status==2ANDis_fully_funded==true.
outputs:none: Nein zurückgegeben.summary: Gibtcount,sent_count,sent_total.fullzurück: Für jede Ausgabe:index,address(maskiert oder nicht),destination_tag,coin,network,share_percent,delay_label,delay_seconds,state,confirm,tx,amount,left_seconds.
status_reason: z.B."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: Percentage of the total deposit assigned to this output.delay_label: Human-readable label showing when this output will be processed (e.g.,2h 0m).delay_seconds: Delay in seconds until the output can start processing.state: Output state:0→ Waiting (deposit not yet fully confirmed).1→ Processing (scheduled; starts whendelay_secondsreaches 0).2→ Complete (transfer finished).
confirm: Transfer confirmation status (only relevant instate=2):0→ Transaction broadcasted but not yet confirmed (pending).1→ Transaction confirmed (at least 1 blockchain confirmation).
tx: Blockchain transaction hash for this output.amount: Amount sent to this output address.left_seconds: Remaining seconds until scheduled send time.
Note:This countdown resets oncedeposit.confirm_status=2(fully confirmed). Example: if600Sekunden (10 Minuten) eingestellt ist, beginnt der Countdown erst nach der Einzahlungsbestätigung.
Hinweis:Zahlungs- und Ausgabedaten werden alle ~1 Minute aktualisiert.
Fehlercodes
BAD_REQUEST: Fehlt/ungültigtrackcode, fehlerhafter Anforderungstext.NOT_FOUND: Bestellung nicht gefunden.UNAUTHORIZED / FORBIDDEN: API Schlüssel ungültig oder deaktiviert.TOO_MANY_REQUESTS: Tägliches Anforderungslimit überschritten.SERVER_ERROR: Unerwarteter Serverfehler.
mask_addresses: gesteuert durchmask_addresses(Standard:true).delay_seconds: numerisches Äquivalent vondelay_label(wird nur imfull-Modus zurückgegeben).
Löschen Bestellung
Löschen Sie eine bestehende Bestellung, damit nicht mehr über die API darauf zugegriffen werden kann. Nach dem Löschen ist die Bestellung für weitere Abfragen dauerhaft nicht mehr verfügbar.
Endpoint
Anfragetext
trackcode(erforderlich): Der 16-stellige Tracking-Code in Großbuchstaben.type(optional):mixer|exchange. Wenn weggelassen, erfolgt die Erkennung automatisch.
Response
ok:truebei Erfolg.trackcode: Echo des angeforderten Tracking-Codes.type: Der Auftragstyp (mixeroderexchange).deleted:truewenn der Auftrag gelöscht wurde.
Verhalten
- Wenn der Auftrag gelöscht wurde bereits gelöscht oder nicht gefunden, API gibt 404 NOT_FOUND.
- zurück. Wenn
typeangegeben ist, wird nur dieser Typ überprüft; andernfalls erfolgt die Erkennung automatisch.
Beispielanforderung (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);
Beispielantwort – Erfolgreich
{
"ok": true,
"trackcode": "D391FC08747E7B04",
"type": "exchange",
"deleted": true
}
Beispielantwort – Nicht gefunden
{
"ok": false,
"code": "NOT_FOUND",
"message": "Order not found or already deleted"
}
Fehlercodes
BAD_REQUEST: Ungültigtrackcodeodertype.NOT_FOUND: Bestellung nicht gefunden oder bereits gelöscht.UNAUTHORIZED / FORBIDDEN: API-Schlüssel ungültig oder fehlt.SERVER_ERROR: Interner Serverfehler.
Signaturvalidierung
Validieren Sie eine digital signierte Nutzlast (Letter der Garantieunterschrift). Nach erfolgreicher Entschlüsselung gibt die API eine verifizierte Teilmenge der zugehörigen Bestelldetails (Mixer oder Exchange) zurück, die für clientseitige Überprüfungen und Statusanzeigen geeignet ist.
Endpoint
Request Body
signature(erforderlich): Der digitale Signaturblock, entweder unformatiertes Base64 oder mit BEGIN/END-Zeilen.
Antwort
ok:truebei Erfolg.message: Klar lesbare Statusmeldung.type:mixer|exchange.route: Für Mixer:confirm|deposit|mixing. Zum Umtausch:exc-deposit|exc-send.trackcode: Tracking-Code aufgelöst.order:deposit_address(string)service_fee(string, 2 Dezimalstellen)coin(string)network(string)waiting_balance(string, 8 Dezimalstellen)created_at(integer, Unix Zeitstempel)
outputs(Array):coin,network,address,destination_tagshare_percent(String, 2 Dezimalstellen)delay_minutes(Ganzzahl),delay_label(z. B.2h 0m)amount(String, 8 Dezimalstellen)
outputs_count(Ganzzahl)
Verhalten
- Die bereitgestellte digitale Signatur wird validiert gegen das System.
- Nur aktuelle Bestellungen (innerhalb von 48 Stunden) können validiert werden.
- Wenn keine gültige Bestellung gefunden wird, antwortet die API mit404 NOT_FOUND.
Beispielanfrage (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);
Beispielantwort – Erfolgreich
{
"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
}
Beispielantwort – Fehler
{
"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."
}
Fehlercodes
BAD_REQUEST: Fehlendesignatureoder fehlerhafte Nutzlast.INVALID_SIGNATURE: Ungültiges Base64 oder Signaturblock ist zu kurz.DECRYPTION_FAILED: AES-GCM-Entschlüsselung fehlgeschlagen.INVALID_PAYLOAD: Entschlüsselte Nutzlast ist kein gültiges JSON.MISSING_TRACKCODE:trackFeld fehlt in Nutzlast.NOT_FOUND: Bestellung in den letzten 48 Stunden nicht gefunden.UNAUTHORIZED / FORBIDDEN: API-Schlüssel ungültig oder fehlt.SERVER_ERROR: Interner Serverfehler.
Hinweise
- Numerische Genauigkeit:
waiting_balanceundamount→ 8 Dezimalstellen (Zeichenfolge),share_percent→ 2 Dezimalstellen (Zeichenfolge),service_fee→ 2 Dezimalstellen (Zeichenfolge). - Verzögerungen: Sowohl menschliche Bezeichnung (
delay_label) als auch maschinenlesbare Minuten (delay_minutes) werden zurückgegeben.