Introduzione
La SecretCryptos API offre un accesso sicuro, semplice e coerente ai nostri servizi di Mixer e Exchange. Questo documento “Lite” si concentra sugli endpoint principali per iniziare rapidamente.
Base URL: https://api.secretcryptos.com/v1
Esempio: GET /v1/ping
– provalo
Puoi anche esplorare la root page live su api.secretcryptos.com.
Altri link: Hub dei link • Documentazione API (Swagger UI) • Organizzazione GitHub.
Autenticazione
- Header:
Authorization: Bearer YOUR_API_KEY
- Tutte le richieste devono utilizzare HTTPS.
Ottieni API Key
- Crea un account o accedi su Partner.
- Apri il menu superiore e clicca sulla scheda API.
- Copia la tua API-KEY (mantienila segreta; funziona sia per Mixer che per Exchange).
Sicurezza API Key
cURL (lato server)
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
Controllo semplice dello stato e della versione.
GET https://api.secretcryptos.com/v1/ping
{ "ok": true, "service": "SecretCryptos API", "version": "1.2.6", "ts": 1723800000 }
ts
: Unix epoch (secondi).- Nessuna autenticazione richiesta.
MIXER
La Mixer API consente di creare transazioni che preservano la privacy in modo programmatico. Definisci la moneta, la rete, l’importo e uno o più indirizzi di output con percentuali e ritardi opzionali. Viene allocato un indirizzo di deposito e restituito un piano completo (commissioni + output) per automatizzare incassi, pagamenti o flussi simili ad escrow.
- Casi d’uso: incasso sicuro di pagamenti, revenue sharing automatizzato, pagamenti a più wallet, erogazioni ritardate.
- Recupera limiti e commissioni tramite
/v1/meta/mixer
prima di creare ordini. - Tutti i campi monetari sono in unità di moneta salvo diversa indicazione.
- Tutti i timestamp sono in secondi epoch Unix (fuso orario: GMT-3 sul server).
MIXER / Crea Ordine
Crea un nuovo ordine mixer. Fornisci moneta, rete, importo e uno o più indirizzi di output con percentuali e ritardi. Il sistema assegna un indirizzo di deposito e restituisce i dettagli dell’ordine inclusi commissioni e piano di output.
Regole di validazione
amount
: Deve essere compreso tramin_amount
emax_amount
specifici per moneta da/v1/meta/mixer
.addresses
: 1–10 output.percent
:- Formato: fino a 2 decimali (es.
10
,10.5
,10.50
). - Minimo per indirizzo:
≥ 1.00
, massimo:≤ 100.00
. - Il totale di tutti gli output deve essere esattamente
100.00
. - Se c’è un solo output, la percentuale deve essere esattamente
100.00
.
- Formato: fino a 2 decimali (es.
delay
:- Accetta minuti (es.
120
) o etichetta (es."2h 0m"
). - Massimo:
48h
(cioè2880
minuti).
- Accetta minuti (es.
service_fee
(sovrascrittura opzionale):- Fino a 2 decimali.
- Intervallo:
0.10
–5.00
(%). Se omesso, viene usato il valore predefinito del sistema per la moneta.
address format
: Deve corrispondere alla rete selezionata (es. BTC legacy/SegWit, ERC-200x…
, TRC-20T…
, SOL, ecc.).destination_tag / memo
: Opzionale; richiesto per alcune reti (es. tag XRP, memo TON).
Note
expires_at
: Quando scade l’indirizzo di deposito (epoch seconds).outputs[i].time
: Orario previsto dell’output in epoch seconds (basato sudelay_minutes
).- Usa
?pretty=1
per JSON leggibile durante i test. - Limiti di richiesta: limite giornaliero predefinito per chiave API; disponibili livelli superiori (vedi “Rate Limits”).
Errori comuni
{ "ok": false, "code": "BAD_REQUEST", "message": "Sum of percents must be exactly 100.00" }
BAD_REQUEST
: Corpo non valido, formato indirizzo errato, percentuale non a 2 decimali, commissione fuori intervallo, ritardo > 48h, ecc.AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH
: Viola i min/max per moneta.SERVICE_UNAVAILABLE
: Nessun indirizzo di deposito disponibile per quella rete.TOO_MANY_REQUESTS
: Raggiunto il limite giornaliero API.UNAUTHORIZED / FORBIDDEN
: API key non valida/disabilitata.
Headers
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
: Elenco delle destinazioni di output. Ogni indirizzo deve avere i seguenti campi:address
: L’indirizzo di destinazione a cui vengono inviati i fondi.percent
: Percentuale dell’importo totale da inviare a questo indirizzo (es.100
per l’intero importo o50
per metà).delay
: Il ritardo prima che la transazione venga elaborata. Può essere specificato in minuti (es.120
) o in formato testuale (es."2h 0m"
).destination_tag
: Campo richiesto per le reti XRP e TON. Se non richiesto, può essere omesso o lasciato vuoto (es.""
).
amount
: Importo totale in unità di moneta da trasferire. Utilizza un punto come separatore decimale (es.10.00000000
).crypto
/network
: La moneta e la rete blockchain (es.btc
/btc
per Bitcoin).partner
: Opzionale ma consigliato. La tua PARTNER KEY è disponibile su Partner nella scheda API (insieme alla tua API-KEY). Se utilizzata, guadagni il 30% della commissione di servizio.service_fee
: Sovrascrittura opzionale della commissione di servizio in percentuale. Se omesso, si applica il valore predefinito di sistema. Se fornito, deve essere un numero compreso tra 0.1 e 5 (inclusi).qrcode
: Opzionale.1
restituisce un data URL Base64 sottodeposit.qr_code
;0
o omesso non restituisce alcun QR code.destination_tag
: Richiesto per le reti XRP e TON. Se non necessario, può essere omesso o lasciato vuoto ("").
Come utilizzare il QR Code
Quando qrcode
è impostato su 1
, la risposta includerà un’immagine codificata in Base64 nel campo deposit.qr_code
. Si tratta di un QR code pienamente funzionale che puoi incorporare nel tuo frontend come immagine, consentendo agli utenti di scannerizzarlo con le loro applicazioni wallet. Ecco un esempio di come mostrarlo in una pagina web:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Scansiona per pagare" />
Gli utenti possono scansionare il QR code con la loro app wallet preferita per compilare immediatamente indirizzo di destinazione e importo, facilitando una transazione rapida e sicura.
Risposta
{ "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
: Identificatore univoco dell’ordine.deposit
: Dove l’utente deve inviare i fondi.fees
: Tutte le commissioni applicate.outputs
: Distribuzione pianificata dei fondi, con ritardi.time
eexpires_at
: Timestamp Unix (fuso orario GMT-3).signature_text
: Firma digitale blindata per la validazione.
Esempio 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
L’API Exchange consente di scambiare un deposito from_coin/ from_network in un unico indirizzo di destinazione to_coin/ to_network. Viene allocato un indirizzo di deposito, calcolato un preventivo in tempo reale (limiti in USD e commissioni applicate) e restituito l’oggetto completo dell’ordine che puoi monitorare fino al finanziamento ed esecuzione.
- Casi d’uso: swap istantanei al checkout, “depositare in X → ricevere Y”, bridge off-ramp/on-ramp tra L1/L2.
- Ottieni i limiti di coppia e la commissione predefinita tramite
/v1/meta/exchange
prima di creare ordini. - Tutti i campi monetari sono in unità di moneta se non diversamente indicato; i limiti sono in USD.
- Tutti i timestamp sono secondi epoch Unix (fuso orario del server GMT-3).
EXCHANGE / Crea Ordine
Crea un nuovo ordine di exchange. Fornisci la parte from_*
(moneta/rete/importo) e l’indirizzo di destinazione to_address
per la parte to_*
. Ti restituiamo un indirizzo di deposito sulla from_network
, un preventivo e l’output pianificato.
Regole di validazione
amount
: il valore in USD (importo × prezzo from_coin) deve rientrare neimin_usd
/max_usd
specifici della coppia da/v1/meta/exchange
.formato dell’indirizzo
: deve corrispondere allato_network
selezionata (ad es. ERC-200x…
, TRC-20T…
, BTC, DOGE, SOL, ecc.).destination_tag / memo
: Opzionale ma richiesto da alcune reti (es. tag XRP, memo TON).service_fee
(opzionale, percentuale):- Fino a 2 decimali (ad es.
0.6
=0.60%
). - Limite globale: minimo
0.50%
, massimo3.00%
. - Se fornito al di sotto del valore predefinito del sito per quella coppia, si applica quello predefinito. Se superiore a
3.00%
, viene limitato a3.00%
. - Se omesso, la commissione effettiva =
max(predefinito_sito, 0.50%)
.
- Fino a 2 decimali (ad es.
Note
quote.final_usd
= (importo × prezzo from) × (1 − fee%).quote.to.estimated_receive
=final_usd
÷ prezzo di to_coin.receive.delay_label
: Ritardo pianificato prima di inviare lo swap (predefinito0h 10m
).expires_at
: Finestra di deposito per l’indirizzo assegnato.- Usa
?pretty=1
per JSON leggibile durante i test.
Headers
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Corpo della richiesta
{ "from_coin": "eth", "from_network": "eth", "to_coin": "doge", "to_network": "doge", "to_address": "DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p", "amount": "1.00000000", "service_fee": 0.6, // opzionale; %0.60 → limitato dalle regole "partner": "YOUR_PARTNER_KEY", // opzionale, guadagni il 30% della commissione della piattaforma "qrcode": 1 // opzionale; aggiunge QR base64 in deposit.qr_code}
Corpo della richiesta (esempi 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" }
Risposta
{ "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 se qrcode=1 }, "quote": { "from": { "coin":"ETH","network":"eth","price_usd":4300.8836,"amount":"1.00000000","amount_usd":"4300.88362842" }, "to": { "coin":"DOGE","network":"doge","price_usd":0.22014648,"estimated_receive":"19419.24455241" }, "fee_percent": 0.6, "final_usd": "4275.07832665" }, "receive": { "address":"DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p", "destination_tag": null, "coin":"DOGE","network":"doge", "percent":100,"delay_minutes":10,"delay_label":"0h 10m", "amount":"19419.24455241","time":1755609642 }, "outputs":[ { "id":1, "address":"DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p", "destination_tag":null, "share_percent":100, "delay_minutes":10, "delay_label":"0h 10m", "amount":"19419.24455241", "time":1755609642 } ], "signature_text":"..." }
trackcode
: Identificatore univoco dell’ordine per monitorare lo stato.deposit
: Dove l’utente deve inviare il from_coin.quote
: Snapshot dei prezzi e commissione effettiva.receive
/outputs
: Dettagli dell’output previsto dello swap.
Esempio 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);
Come usare il QR Code
Quando qrcode
è impostato a 1
in Create, la risposta include un QR codificato Base64 in deposit.qr_code
. Incorporalo direttamente come <img> per consentire agli utenti di scansionare l’indirizzo di deposito.
<img src="data:image/png;base64,..." alt="Scansiona per pagare" />
Prezzi
Recupera i prezzi di mercato più recenti in USD per le criptovalute supportate. Puoi interrogare più simboli contemporaneamente separandoli con virgole.
Endpoint
Parametri della query
symbols
(opzionale): Elenco separato da virgole di simboli di monete (ad es.BTC,ETH,USDT
). Se omesso, vengono restituiti tutti i coin supportati.
Risposta
ok
:true
se la richiesta è stata completata con successo.base
: SempreUSD
.ts
: Timestamp Unix (secondi).prices
: Oggetto che mappaSIMBOLO → "prezzo"
(numeri in stringa).
Esempio di richiesta (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);
Esempio di richiesta (tutti i simboli)
<?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);
Esempio di risposta
{ "ok": true, "base": "USD", "ts": 1755600000, "prices": { "BTC": "117799.51713382", "ETH": "4409.46254479", "USDT": "1.0005594" } }
Codici di errore
BAD_REQUEST
: Formatosymbols
non valido.UNAUTHORIZED / FORBIDDEN
: API key non valida o mancante.SERVER_ERROR
: Errore interno server/database.
Note
- I ticker non supportati vengono semplicemente omessi dall’oggetto
prices
. - I valori numerici vengono restituiti come stringhe per preservare la precisione.
Stato Ordine
Usa un unico endpoint per controllare lo stato sia degli ordini di mixer che di exchange. Puoi impostare esplicitamente il tipo di ordine (mixer
/exchange
) oppure lasciare che l’API lo rilevi automaticamente.
Endpoint
Corpo della richiesta
trackcode
(obbligatorio): Il codice di tracciamento dell’ordine a 16 caratteri maiuscoli.type
(opzionale):mixer
|exchange
. Se omesso, l’API tenterà di rilevarlo automaticamente.outputs
(opzionale):none
|summary
|full
(predefinito:summary
).mask_addresses
(opzionale):true
=maschera gli indirizzi (predefinito),false
=restituisce indirizzi completi.
Risposta
type
:mixer
oexchange
.deposit.confirm_status
: Stato di conferma del deposito:0
: Nessun pagamento ricevuto.1
: Pagamento ricevuto ma ancora in sospeso (in attesa di conferme o non ancora completamente finanziato).2
: Deposito completamente confermato e finanziato.
deposit.delete_in_sec
: Secondi rimanenti fino alla scadenza di conservazione di 48 ore.- Blocco
deposit.funding
:waiting_balance
: Importo totale previsto.received_balance
: Importo ricevuto finora.remaining_need
: Importo residuo necessario.is_fully_funded
: Se è completamente finanziato.can_start
: solo true seconfirm_status==2
Eis_fully_funded==true
.
outputs
:none
: Non restituito.summary
: Restituiscecount
,sent_count
,sent_total
.full
: Per ogni output:index
,address
(mascherato o meno),destination_tag
,coin
,network
,share_percent
,delay_label
,delay_seconds
,state
,confirm
,tx
,amount
,left_seconds
.
status_reason
: ad es."INSUFFICIENT_FUNDS"
(se non completamente finanziato).
Regole di business
- Gli ordini non inizieranno se non sono completamente finanziati (
is_fully_funded=false
): gli output restano non assegnati e non viene generato alcun pagamento affiliato. - Se
confirm_status==2
Eis_fully_funded==true
:- Gli output ricevono un timestamp una sola volta e restano consistenti nei controlli successivi.
- I guadagni degli affiliati vengono accreditati una sola volta quando l’ordine diventa valido.
Esempio di richiesta (PHP)
// Esempio Mixer (output completi, indirizzi non mascherati)<?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);
Esempio di risposta — Completamente finanziato
{ "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 } ] }
Esempio di risposta — Sottofinanziato
{ "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" } }
Spiegazione degli output
index
: Numero sequenziale dell’output nell’ordine.address
: Indirizzo di destinazione a cui vengono inviati i fondi.destination_tag
: Tag/memo opzionale per XRP, XLM, ecc. (null
se non richiesto).coin
: Codice della criptovaluta dell’output (es.btc
,eth
).network
: Nome della rete utilizzata per il trasferimento (es.btc
,eth
).share_percent
: Percentuale del deposito totale assegnata a questo output.delay_label
: Etichetta leggibile che mostra quando questo output verrà elaborato (es.2h 0m
).delay_seconds
: Ritardo in secondi fino a quando l’output può iniziare l’elaborazione.state
: Stato dell’output:0
→ In attesa (deposito non ancora completamente confermato).1
→ In elaborazione (programmato; inizia quandodelay_seconds
raggiunge 0).2
→ Completato (trasferimento terminato).
confirm
: Stato di conferma del trasferimento (rilevante solo instate=2
):0
→ Transazione trasmessa ma non ancora confermata (in sospeso).1
→ Transazione confermata (almeno 1 conferma blockchain).
tx
: Hash della transazione blockchain per questo output.amount
: Importo inviato a questo indirizzo di output.left_seconds
: Secondi rimanenti fino al tempo di invio programmato.
Nota: Questo conto alla rovescia si avvia solo dopo chedeposit.confirm_status=2
(completamente confermato). Esempio: se sono impostati600
secondi (10 minuti), parte solo dopo la conferma del deposito.
Nota: Dati di pagamento e output aggiornati ogni ~1 minuto.
Codici di errore
BAD_REQUEST
:trackcode
mancante/non valido, corpo della richiesta non valido.NOT_FOUND
: Ordine non trovato.UNAUTHORIZED / FORBIDDEN
: API key non valida o disabilitata.TOO_MANY_REQUESTS
: Limite giornaliero di richieste superato.SERVER_ERROR
: Errore imprevisto del server.
mask_addresses
: controllato damask_addresses
(predefinito:true
).delay_seconds
: equivalente numerico didelay_label
(restituito solo in modalitàfull
).
Elimina Ordine
Elimina un ordine esistente in modo che non sia più accessibile tramite l’API. Una volta eliminato, l’ordine non sarà più disponibile per ulteriori query.
Endpoint
Request Body
trackcode
(obbligatorio): Il codice di tracciamento di 16 caratteri in maiuscolo.type
(opzionale):mixer
|exchange
. Se omesso, il rilevamento è automatico.
Risposta
ok
:true
in caso di successo.trackcode
: Echo del codice di tracciamento richiesto.type
: Il tipo di ordine (mixer
oexchange
).deleted
:true
se l’ordine è stato eliminato.
Comportamento
- Se l’ordine è già stato eliminato o non trovato, l’API restituisce 404 NOT_FOUND.
- Se viene fornito
type
, viene controllato solo quel tipo; altrimenti, il rilevamento è automatico.
Esempio di richiesta (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);
Esempio di risposta — Successo
{ "ok": true, "trackcode": "D391FC08747E7B04", "type": "exchange", "deleted": true }
Esempio di risposta — Non trovato
{ "ok": false, "code": "NOT_FOUND", "message": "Order not found or already deleted" }
Codici di errore
BAD_REQUEST
:trackcode
otype
non validi.NOT_FOUND
: Ordine non trovato o già eliminato.UNAUTHORIZED / FORBIDDEN
: API key non valida o mancante.SERVER_ERROR
: Errore interno del server.
Validazione Firma
Valida un payload firmato digitalmente (firma della Lettera di Garanzia). In caso di decrittazione riuscita, l’API restituisce un sottoinsieme verificato dei dettagli relativi all’ordine (mixer o exchange), adatto a controlli lato client e alla visualizzazione dello stato.
Endpoint
Request Body
signature
(obbligatorio): Il blocco della firma digitale, in formato Base64 grezzo oppure con linee BEGIN/END.
Risposta
ok
:true
in caso di successo.message
: Messaggio di stato leggibile.type
:mixer
|exchange
.route
: Per mixer:confirm
|deposit
|mixing
. Per exchange:exc-deposit
|exc-send
.trackcode
: Codice di tracciamento risolto.order
:deposit_address
(stringa)service_fee
(stringa, 2 decimali)coin
(stringa)network
(stringa)waiting_balance
(stringa, 8 decimali)created_at
(intero, timestamp Unix)
outputs
(array):coin
,network
,address
,destination_tag
share_percent
(stringa, 2 decimali)delay_minutes
(intero),delay_label
(es.2h 0m
)amount
(stringa, 8 decimali)
outputs_count
(intero)
Comportamento
- La firma digitale fornita viene validata rispetto al sistema.
- Solo gli ordini recenti (entro 48 ore) sono idonei alla validazione. Gli ordini più vecchi potrebbero essere stati rimossi automaticamente.
- Se non viene trovato alcun ordine valido, l’API risponde con 404 NOT_FOUND.
Esempio di richiesta (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);
Esempio di risposta — Successo
{ "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 }
Esempio di risposta — Errori
{ "ok": false, "error": "BAD_REQUEST", "message": "La firma digitale è obbligatoria" } --- { "ok": false, "error": "INVALID_SIGNATURE", "message": "I dati forniti non sono Base64 valido o sono troppo brevi" } --- { "ok": false, "error": "DECRYPTION_FAILED", "message": "Decrittazione fallita. Assicurati che la firma fornita sia valida e riprova." } --- { "ok": false, "error": "MISSING_TRACKCODE", "message": "Il trackcode è obbligatorio nel payload della firma." } --- { "ok": false, "error": "NOT_FOUND", "message": "I dettagli dell’ordine richiesto non sono stati trovati." }
Codici di errore
BAD_REQUEST
:signature
mancante o payload non valido.INVALID_SIGNATURE
: Base64 non valido o blocco firma troppo corto.DECRYPTION_FAILED
: Decrittazione AES-GCM fallita.INVALID_PAYLOAD
: Il payload decrittato non è JSON valido.MISSING_TRACKCODE
: Il campotrack
è assente nel payload.NOT_FOUND
: Ordine non trovato nelle ultime 48 ore.UNAUTHORIZED / FORBIDDEN
: API key non valida o mancante.SERVER_ERROR
: Errore interno del server.
Note
- Precisione numerica:
waiting_balance
eamount
→ 8 decimali (stringa),share_percent
→ 2 decimali (stringa),service_fee
→ 2 decimali (stringa). - Ritardi: sia etichetta leggibile (
delay_label
) che minuti leggibili dalla macchina (delay_minutes
) vengono restituiti.