Einführung
Die SecretCryptos API bietet sicheren, einfachen und konsistenten Zugriff auf unsere Mixer- und Exchange-Dienste. Dieses „Lite“-Dokument konzentriert sich auf die wichtigsten Endpunkte, um Ihnen den schnellen Einstieg zu erleichtern.
Basis-URL: https://api.secretcryptos.com/v1
Beispiel: GET /v1/ping
– ausprobieren
Sie können auch die Live-Root-Seite unter api.secretcryptos.com erkunden.
Weitere Links: Link-Hub • API-Dokumentation (Swagger UI) • GitHub-Organisation.
Authentifizierung
- Header:
Authorization: Bearer YOUR_API_KEY
- Alle Anfragen müssen HTTPS verwenden.
API-Schlüssel erhalten
- Erstellen Sie ein Konto oder melden Sie sich an unter Partner.
- Öffnen Sie das obere Menü und klicken Sie auf den Reiter API.
- Kopieren Sie Ihren API-KEY (geheim halten; 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
Die Mixer API ermöglicht es Ihnen, programmgesteuert transaktionsbasierte Datenschutzvorgänge zu erstellen. Sie definieren die Coin, das Netzwerk, den Betrag und eine oder mehrere Ausgabeadressen mit Prozentanteilen und optionalen Verzögerungen. Wir stellen eine Einzahlungsadresse bereit und geben einen vollständigen Plan zurück (Gebühren + Ausgaben), damit Sie Eingänge, Auszahlungen oder escrow-ähnliche Abläufe automatisieren können.
- Anwendungsfälle: sichere Zahlungsannahme, automatisierte Umsatzaufteilung, Auszahlungen an mehrere Wallets, verzögerte Ausschüttungen.
- Abrufen von Limits & Gebühren über
/v1/meta/mixer
, bevor Sie Bestellungen erstellen. - Alle Geldfelder sind in Coin-Einheiten, sofern nicht anders angegeben.
- Alle Zeitstempel sind Unix-Epochen-Sekunden (Zeitzone: GMT-3 auf dem Server).
MIXER / Bestellung erstellen
Erstellen Sie eine neue Mixer-Bestellung. Sie geben Coin, Netzwerk, Betrag und eine oder mehrere Ausgabeadressen mit Prozentsätzen und Verzögerungen an. Das System weist eine Einzahlungsadresse zu und gibt Bestelldetails einschließlich Gebühren und Auszahlungsplan zurück.
Validierungsregeln
amount
: Muss zwischen coin-spezifischemmin_amount
undmax_amount
aus/v1/meta/mixer
liegen.addresses
: 1–10 Ausgaben.percent
:- Format: bis zu 2 Dezimalstellen (z. B.
10
,10.5
,10.50
). - Mindestbetrag pro Adresse:
≥ 1.00
, Maximum:≤ 100.00
. - Die Summe aller Ausgaben muss genau
100.00
betragen. - Wenn es nur 1 Ausgabe gibt, muss ihr Prozentsatz genau
100.00
sein.
- Format: bis zu 2 Dezimalstellen (z. B.
delay
:- Akzeptiert Minuten (z. B.
120
) oder Label (z. B."2h 0m"
). - Maximum:
48h
(d. h.2880
Minuten).
- Akzeptiert Minuten (z. B.
service_fee
(optionales Override):- Bis zu 2 Dezimalstellen.
- Bereich:
0.10
–5.00
(%). Falls weggelassen, wird der Systemstandard für den Coin verwendet.
address format
: Muss dem ausgewählten Netzwerk entsprechen (z. B. BTC Legacy/SegWit, ERC-200x…
, TRC-20T…
, SOL usw.).destination_tag / memo
: Optional; erforderlich für einige Netzwerke (z. B. XRP-Tag, TON-Memo).
Hinweise
expires_at
: Zeitpunkt, wann die Einzahlungsadresse abläuft (Epoch-Sekunden).outputs[i].time
: Geplante Auszahlungszeit in Epoch-Sekunden (basierend aufdelay_minutes
).- Verwenden Sie
?pretty=1
für menschenlesbares JSON während des Testens. - Rate Limits: Standard-Tageslimit pro API-Key; höhere Stufen verfügbar (siehe „Rate Limits“).
Häufige Fehler
{ "ok": false, "code": "BAD_REQUEST", "message": "Sum of percents must be exactly 100.00" }
BAD_REQUEST
: Ungültiger Body, falsches Adressformat, Prozent nicht mit 2 Dezimalstellen, Gebühr außerhalb des Bereichs, Verzögerung > 48h usw.AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH
: Verstößt gegen min/max pro Coin.SERVICE_UNAVAILABLE
: Keine verfügbare Einzahlungsadresse für dieses Netzwerk.TOO_MANY_REQUESTS
: Tägliches API-Limit erreicht.UNAUTHORIZED / FORBIDDEN
: Ungültiger/deaktivierter API-Key.
Header
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Request Body
{ "action": "create_order", "addresses": [ { "address": "35iMHbUZeTssxBodiHwEEkb32jpBfVueEL", "percent": "84.93", "delay": "0", }, { "address": "1P279UBChDFPAky8S4DcKGaaxKEMYBK9MM", "percent": "15.07", "delay": "120", } ], "amount": "10.00000000", "crypto": "btc", "network": "btc", "partner": "YOUR_PARTNER_KEY", "service_fee": 0.45, "qrcode": 1 }
Request Body
{ "action": "create_order", "addresses": [ { "address": "raGXwk3P9yCtT2mGKD7nQdRNDCPSgwb2Kb", "percent": "100", "delay": "0", "destination_tag": "435757008" } ], "amount": "10.00000000", "crypto": "btc", "network": "btc", "partner": "YOUR_PARTNER_KEY", "service_fee": 0.45, "qrcode": 1 }
addresses
: Liste der Ausgabedestinationen. Jede Adresse sollte die folgenden Felder haben:address
: Die Zieladresse, an die die Gelder gesendet werden.percent
: Der Prozentsatz des Gesamtbetrags, der an diese Adresse gesendet wird (z. B.100
für den Gesamtbetrag oder50
für die Hälfte).delay
: Die Verzögerung, bevor die Transaktion verarbeitet wird. Kann in Minuten angegeben werden (z. B.120
) oder im Textformat (z. B."2h 0m"
).destination_tag
: Dieses Feld ist für XRP- und TON-Netzwerke erforderlich. Falls nicht benötigt, kann es weggelassen oder leer gelassen werden (z. B.""
).
amount
: Der Gesamtbetrag in Coin-Einheiten, der übertragen werden soll. Bitte verwenden Sie einen Punkt als Dezimaltrennzeichen (z. B.10.00000000
).crypto
/network
: Coin und Blockchain-Netzwerk (z. B.btc
/btc
für Bitcoin).partner
: Optional, aber empfohlen. Ihr PARTNER KEY ist unter Partner unter dem API-Tab (mit Ihrem API-KEY) verfügbar. Bei Verwendung verdienen Sie 30% der Servicegebühr.service_fee
: Optionales Override für die Servicegebühr in Prozent. Wenn weggelassen, gilt der Systemstandard. Falls angegeben, muss es eine Zahl zwischen 0.1 und 5 sein (einschließlich).qrcode
: Optional.1
liefert eine Base64-Daten-URL unterdeposit.qr_code
;0
oder weggelassen liefert keinen QR-Code.destination_tag
: Erforderlich für XRP- und TON-Netzwerke. Falls nicht benötigt, kann es weggelassen oder leer gelassen werden ("").
So verwenden Sie den QR-Code
Wenn qrcode
auf 1
gesetzt ist, enthält die Antwort ein Base64-kodiertes Bild im Feld deposit.qr_code
. Dies ist ein vollständig funktionaler QR-Code, den Sie in Ihr Frontend als Bild einbetten können, sodass Benutzer ihn mit ihren Wallet-Anwendungen scannen können. Hier ein Beispiel, wie man ihn auf einer Webseite anzeigt:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Zum Bezahlen scannen" />
Benutzer können den QR-Code mit ihrer bevorzugten Wallet-App scannen, um Zieladresse und Betrag sofort auszufüllen 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 Gelder senden soll.fees
: Alle angewendeten Gebühren.outputs
: Geplante Verteilung der Gelder mit Verzögerungen.time
undexpires_at
: Unix-Zeitstempel (Zeitzone: GMT-3).signature_text
: Digitale gepanzerte Signatur 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
Die Exchange API ermöglicht es Ihnen, eine Einzahlung in from_coin/ from_network in eine einzelne Zieladresse mit to_coin/ to_network zu tauschen. Wir stellen eine Einzahlungsadresse bereit, berechnen ein Live-Angebot (USD-basierte Limits & angewandte Gebühr) und geben das vollständige Bestellobjekt zurück, das Sie abfragen können, bis es finanziert und ausgeführt wird.
- Anwendungsfälle: sofortige Swaps beim Checkout, „Einzahlung in X → Empfang Y“, Off-Ramp/On-Ramp-Brücken zwischen L1/L2s.
- Abrufen von Paar-Limits & Standardgebühr über
/v1/meta/exchange
, bevor Bestellungen erstellt werden. - Alle Geldfelder sind in Coin-Einheiten, sofern nicht anders angegeben; Limits sind USD-basiert.
- Alle Zeitstempel sind Unix-Epochen-Sekunden (Server-Zeitzone GMT-3).
EXCHANGE / Bestellung erstellen
Erstellen Sie eine neue Exchange-Bestellung. Sie geben die from_*
-Seite (Coin/Netzwerk/Betrag) und die Ziel-to_address
für die to_*
-Seite an. Wir geben eine Einzahlungsadresse im from_network
, ein Angebot und die geplante Ausgabe zurück.
Validierungsregeln
amount
: USD-Wert (Betrag × from_coin-Preis) muss innerhalb der paar-spezifischenmin_usd
/max_usd
von/v1/meta/exchange
liegen.address format
: Muss dem ausgewähltento_network
entsprechen (z. B. ERC-200x…
, TRC-20T…
, BTC, DOGE, SOL usw.).destination_tag / memo
: Optional, aber für einige Netzwerke erforderlich (z. B. XRP-Tag, TON-Memo).service_fee
(optional, Prozent):- Bis zu 2 Dezimalstellen (z. B.
0.6
=0.60%
). - Globaler Rahmen: min
0.50%
, max3.00%
. - Wenn unterhalb des Seitenstandards für dieses Paar angegeben, gilt der Seitenstandard. Wenn über
3.00%
, wird es auf3.00%
begrenzt. - Falls weggelassen, gilt: effektive Gebühr =
max(seitenstandard, 0.50%)
.
- Bis zu 2 Dezimalstellen (z. B.
Hinweise
quote.final_usd
= (Betrag × from-Preis) × (1 − Gebühr%).quote.to.estimated_receive
=final_usd
÷ to_coin-Preis.receive.delay_label
: Geplante Verzögerung, bevor wir den Swap senden (Standard0h 10m
).expires_at
: Einzahlungsfenster für die zugewiesene Adresse.- Verwenden Sie
?pretty=1
für formatiertes JSON beim Testen.
Header
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Request Body
{ "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 → durch Regeln begrenzt "partner": "YOUR_PARTNER_KEY", // optional, verdient 30% der Plattformgebühr "qrcode": 1 // optional; fügt Base64-QR bei deposit.qr_code hinzu}
Request Body (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" }
Antwort
{ "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,..." // nur wenn 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
: Eindeutiger Bestell-Identifier zum Abfragen des Status.deposit
: Wohin der Benutzer from_coin senden muss.quote
: Preis-Snapshot 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
Wenn qrcode
in Create auf 1
gesetzt ist, enthält die Antwort einen Base64-kodierten QR unter deposit.qr_code
. Betten Sie ihn direkt als <img> ein, damit Benutzer die Einzahlungsadresse scannen können.
<img src="data:image/png;base64,..." alt="Zum Bezahlen scannen" />
Preise
Abrufen der neuesten Marktpreise in USD für unterstützte Kryptowährungen. Sie können mehrere Symbole gleichzeitig abfragen, indem Sie sie durch Kommas trennen.
Endpunkt
Abfrageparameter
symbols
(optional): Kommagetrennte Liste von Coin-Symbolen (z. B.BTC,ETH,USDT
). Wenn weggelassen, werden alle unterstützten Coins zurückgegeben.
Antwort
ok
:true
, wenn die Anfrage erfolgreich war.base
: ImmerUSD
.ts
: Unix-Timestamp (Sekunden).prices
: ObjektzuordnungSYMBOL → "Preis"
(Zahlen als Strings).
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);
Beispielanfrage (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ültigessymbols
-Format.UNAUTHORIZED / FORBIDDEN
: API-Key ungültig oder fehlt.SERVER_ERROR
: Interner Server-/Datenbankfehler.
Hinweise
- Nicht unterstützte Ticker werden einfach aus dem
prices
-Objekt weggelassen. - Numerische Werte werden als Strings zurückgegeben, um die Genauigkeit zu erhalten.
Bestellstatus
Verwenden Sie einen einzigen Endpunkt, um den Status von Mixer- und Exchange-Bestellungen zu prüfen. Sie können den Bestelltyp explizit setzen (mixer
/ exchange
) oder die API automatisch erkennen lassen.
Endpunkt
Request Body
trackcode
(erforderlich): Der 16-stellige Tracking-Code der Bestellung in Großbuchstaben.type
(optional):mixer
|exchange
. Wenn weggelassen, versucht die API, automatisch zu erkennen.outputs
(optional):none
|summary
|full
(Standard:summary
).mask_addresses
(optional):true
=Adressen maskieren (Standard),false
=volle Adressen zurückgeben.
Antwort
type
:mixer
oderexchange
.deposit.confirm_status
: Status der Einzahlung:0
: Keine Zahlung eingegangen.1
: Zahlung eingegangen, aber noch ausstehend (entweder wartend auf Bestätigungen oder noch nicht vollständig gedeckt).2
: Einzahlung vollständig bestätigt und gedeckt.
deposit.delete_in_sec
: Verbleibende Sekunden bis zum Ablauf der 48-Stunden-Aufbewahrung.deposit.funding
-Block:waiting_balance
: Gesamterwartungsbetrag.received_balance
: Bisher erhaltener Betrag.remaining_need
: Noch benötigter Betrag.is_fully_funded
: Ob vollständig gedeckt.can_start
: nur true, wennconfirm_status==2
UNDis_fully_funded==true
.
outputs
:none
: Nicht zurückgegeben.summary
: Gibtcount
,sent_count
,sent_total
zurück.full
: 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"
(falls nicht vollständig gedeckt).
Geschäftsregeln
- Bestellungen starten nicht, solange sie nicht vollständig gedeckt sind (
is_fully_funded=false
): Ausgaben bleiben unzugewiesen und keine Partnervergütung wird generiert. - Wenn
confirm_status==2
UNDis_fully_funded==true
:- Ausgaben werden einmal mit Zeitstempeln versehen und bleiben bei wiederholten Abfragen konsistent.
- Partnervergütungen werden einmalig gutgeschrieben, wenn die Bestellung gültig wird.
Beispielanfrage (PHP)
// Mixer-Beispiel (volle Ausgaben, unmaskierte Adressen)<?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);
Beispielantwort — Vollständig gedeckt
{ "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 } ] }
Beispielantwort — Unterdeckt
{ "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" } }
Ausgabenerklärung
index
: Fortlaufende Ausgabennummer in der Bestellung.address
: Zieladresse, an die Gelder gesendet werden.destination_tag
: Optionales Tag/Memo für XRP, XLM usw. (null
, falls nicht erforderlich).coin
: Kryptowährungscode der Ausgabe (z. B.btc
,eth
).network
: Netzwerkname, der für die Übertragung verwendet wird (z. B.btc
,eth
).share_percent
: Prozentsatz der Gesamteinzahlung, der dieser Ausgabe zugewiesen wird.delay_label
: Menschlich lesbares Label, wann diese Ausgabe verarbeitet wird (z. B.2h 0m
).delay_seconds
: Verzögerung in Sekunden, bis die Ausgabe verarbeitet werden kann.state
: Ausgabestatus:0
→ Wartend (Einzahlung noch nicht vollständig bestätigt).1
→ Verarbeitung (geplant; beginnt, wenndelay_seconds
0 erreicht).2
→ Abgeschlossen (Übertragung beendet).
confirm
: Transferbestätigungsstatus (nur relevant beistate=2
):0
→ Transaktion gesendet, aber noch nicht bestätigt (ausstehend).1
→ Transaktion bestätigt (mindestens 1 Blockchain-Bestätigung).
tx
: Blockchain-Transaktionshash für diese Ausgabe.amount
: An diese Ausgabedresse gesendeter Betrag.left_seconds
: Verbleibende Sekunden bis zur geplanten Sendezeit.
Hinweis: Dieser Countdown startet erst, wenndeposit.confirm_status=2
(vollständig bestätigt) ist. Beispiel: wenn600
Sekunden (10 Minuten) eingestellt sind, beginnt der Countdown erst nach Einzahlungsbestätigung.
Hinweis: Zahlungs- und Ausgabedaten werden etwa jede Minute aktualisiert.
Fehlercodes
BAD_REQUEST
: Fehlender/ungültigertrackcode
, fehlerhafter Request Body.NOT_FOUND
: Bestellung nicht gefunden.UNAUTHORIZED / FORBIDDEN
: API-Key ungültig oder deaktiviert.TOO_MANY_REQUESTS
: Tägliches Anfrage-Limit überschritten.SERVER_ERROR
: Unerwarteter Serverfehler.
mask_addresses
: gesteuert durchmask_addresses
(Standard:true
).delay_seconds
: numerisches Äquivalent zudelay_label
(nur imfull
-Modus zurückgegeben).
Bestellung löschen
Löschen Sie eine bestehende Bestellung, sodass sie nicht mehr über die API zugänglich ist. Nach dem Löschen ist die Bestellung dauerhaft für weitere Abfragen nicht verfügbar.
Endpunkt
Request Body
trackcode
(erforderlich): Der 16-stellige Tracking-Code in Großbuchstaben.type
(optional):mixer
|exchange
. Wenn weggelassen, erfolgt die Erkennung automatisch.
Antwort
ok
:true
bei Erfolg.trackcode
: Echo des angefragten Tracking-Codes.type
: Der Bestelltyp (mixer
oderexchange
).deleted
:true
, wenn die Bestellung gelöscht wurde.
Verhalten
- Wenn die Bestellung bereits gelöscht oder nicht gefunden wurde, gibt die API 404 NOT_FOUND zurück.
- Wenn
type
angegeben ist, wird nur dieser Typ geprüft; andernfalls erfolgt die Erkennung automatisch.
Beispielanfrage (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 — Erfolg
{ "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ültigertrackcode
odertype
.NOT_FOUND
: Bestellung nicht gefunden oder bereits gelöscht.UNAUTHORIZED / FORBIDDEN
: API-Key ungültig oder fehlt.SERVER_ERROR
: Interner Serverfehler.
Signaturprüfung
Validieren Sie eine digital signierte Nutzlast (Letter-of-Guarantee-Signatur). Bei erfolgreicher Entschlüsselung gibt die API eine verifizierte Teilmenge der zugehörigen Bestelldetails (Mixer oder Exchange) zurück, geeignet für Client-seitige Prüfungen und Statusanzeigen.
Endpunkt
Request Body
signature
(erforderlich): Der digitale Signaturblock, entweder als Base64-Rohwert oder mit BEGIN/END-Zeilen.
Antwort
ok
:true
bei Erfolg.message
: Menschlich lesbare Statusmeldung.type
:mixer
|exchange
.route
: Für Mixer:confirm
|deposit
|mixing
. Für Exchange:exc-deposit
|exc-send
.trackcode
: Aufgelöster Tracking-Code.order
:deposit_address
(String)service_fee
(String, 2 Dezimalstellen)coin
(String)network
(String)waiting_balance
(String, 8 Dezimalstellen)created_at
(Integer, Unix-Timestamp)
outputs
(Array):coin
,network
,address
,destination_tag
share_percent
(String, 2 Dezimalstellen)delay_minutes
(Integer),delay_label
(z. B.2h 0m
)amount
(String, 8 Dezimalstellen)
outputs_count
(Integer)
Verhalten
- Die bereitgestellte digitale Signatur wird gegen das System validiert.
- Nur aktuelle Bestellungen (innerhalb von 48 Stunden) sind für die Validierung zulässig. Ältere Bestellungen können automatisch entfernt worden sein.
- Wenn keine gültige Bestellung gefunden wird, antwortet die API mit 404 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 — Erfolg
{ "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": "Digitale Signatur ist erforderlich" } --- { "ok": false, "error": "INVALID_SIGNATURE", "message": "Die bereitgestellten Daten sind kein gültiges Base64 oder zu kurz" } --- { "ok": false, "error": "DECRYPTION_FAILED", "message": "Entschlüsselung fehlgeschlagen. Stellen Sie sicher, dass die bereitgestellte Signatur gültig ist, und versuchen Sie es erneut." } --- { "ok": false, "error": "MISSING_TRACKCODE", "message": "Trackcode wird im Signatur-Payload benötigt." } --- { "ok": false, "error": "NOT_FOUND", "message": "Die angeforderten Bestelldetails konnten nicht gefunden werden." }
Fehlercodes
BAD_REQUEST
: Fehlendesignature
oder fehlerhaftes Payload.INVALID_SIGNATURE
: Ungültiges Base64 oder Signaturblock zu kurz.DECRYPTION_FAILED
: AES-GCM-Entschlüsselung fehlgeschlagen.INVALID_PAYLOAD
: Entschlüsseltes Payload ist kein gültiges JSON.MISSING_TRACKCODE
:track
-Feld fehlt im Payload.NOT_FOUND
: Bestellung in den letzten 48 Stunden nicht gefunden.UNAUTHORIZED / FORBIDDEN
: API-Key ungültig oder fehlt.SERVER_ERROR
: Interner Serverfehler.
Hinweise
- Numerische Präzision:
waiting_balance
undamount
→ 8 Dezimalstellen (String),share_percent
→ 2 Dezimalstellen (String),service_fee
→ 2 Dezimalstellen (String). - Verzögerungen: Sowohl menschliches Label (
delay_label
) als auch maschinenlesbare Minuten (delay_minutes
) werden zurückgegeben.