Memuat pusat dokumentasi API...
MIX LANGSUNG
BTC
0.015000 BTC
BTC Dicampur · 46d lalu
ADA
508 ADA
ADA Dicampur · 3m lalu
USDT
1,129 USDT
USDT Dicampur · 3m lalu
TON
102.008901 TON
TON Dicampur · 3m lalu
TON
39.394381 TON
TON Dicampur · 4m lalu
LTC
9.833244 LTC
LTC Dicampur · 8m lalu
USDT
2,845 USDT
USDT Dicampur · 11m lalu
BTC
0.009999 BTC
BTC Dicampur · 11m lalu
BTC
0.037000 BTC
BTC Dicampur · 11m lalu
DOGE
12,220 DOGE
DOGE Dicampur · 11m lalu
BTC
0.015000 BTC
BTC Dicampur · 46d lalu
ADA
508 ADA
ADA Dicampur · 3m lalu
USDT
1,129 USDT
USDT Dicampur · 3m lalu
TON
102.008901 TON
TON Dicampur · 3m lalu
TON
39.394381 TON
TON Dicampur · 4m lalu
LTC
9.833244 LTC
LTC Dicampur · 8m lalu
USDT
2,845 USDT
USDT Dicampur · 11m lalu
BTC
0.009999 BTC
BTC Dicampur · 11m lalu
BTC
0.037000 BTC
BTC Dicampur · 11m lalu
DOGE
12,220 DOGE
DOGE Dicampur · 11m lalu

Dokumentasi API SecretCryptos

Aman. Cepat. Ramah Pengembang.
Antarmuka Pemrograman
Integrasikan fitur mixing dan pertukaran kripto ke dalam aplikasi atau layanan Anda menggunakan SecretCryptos API resmi.
Dokumentasi API SecretCryptos untuk integrasi kripto yang aman Panduan pengembang untuk integrasi API SecretCryptos Referensi API untuk mixing dan pertukaran kripto dengan SecretCryptos

Pendahuluan


SecretCryptos API menyediakan akses yang aman, sederhana, dan konsisten ke layanan Mixer dan Exchange kami. Dokumen "Lite" ini berfokus pada endpoint inti untuk memulai dengan cepat.

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

Contoh: GET /v1/pingcoba sekarang

Anda juga dapat menjelajahi halaman root langsung di api.secretcryptos.com.

Tautan lain: Pusat tautanDokumentasi API (Swagger UI)Organisasi GitHub.

Otentikasi


  • Header: Authorization: Bearer YOUR_API_KEY
  • Semua permintaan harus menggunakan HTTPS.
Jangan pernah memanggil endpoint yang membutuhkan autentikasi dari JavaScript sisi klien. Simpan API key Anda di server dan teruskan respons ke browser.

Dapatkan API Key


  1. Buat akun atau masuk di Partner.
  2. Buka menu atas dan klik tab API.
  3. Salin API-KEY Anda (simpan dengan aman; berlaku untuk Mixer dan Exchange).

Keamanan API Key


Jangan pernah memanggil endpoint yang membutuhkan autentikasi dari JavaScript sisi klien. Simpan API key di server dan teruskan respons ke browser.

cURL (server-side)

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


Pemeriksaan kesehatan sederhana dan versi.

GET/v1/ping
GET https://api.secretcryptos.com/v1/ping
{
  "ok": true,
  "service": "SecretCryptos API",
  "version": "1.2.6",
  "ts": 1723800000
}
  • ts: Unix epoch (detik).
  • Tidak memerlukan autentikasi.

Meta


Root discovery untuk endpoint meta yang tersedia.

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": "Pemeriksaan kesehatan sederhana."
    },
    {
      "name": "Meta (Mixer)",
      "path": "/v1/meta/mixer",
      "method": "GET",
      "auth": true,
      "desc": "Koin/jaringan yang didukung dan aturan mixer."
    },
    {
      "name": "Meta (Exchange)",
      "path": "/v1/meta/exchange",
      "method": "GET",
      "auth": true,
      "desc": "Pasangan perdagangan yang didukung dan batas exchange."
    },
    {
      "name": "Create Mixer Order",
      "path": "/v1/mixer/orders",
      "method": "POST",
      "auth": true,
      "desc": "Buat pesanan mixer baru."
    },
    {
      "name": "Create Exchange Order",
      "path": "/v1/exchange/orders",
      "method": "POST",
      "auth": true,
      "desc": "Buat pesanan exchange baru."
    },
    {
      "name": "Check Order",
      "path": "/v1/orders/check",
      "method": "POST",
      "auth": true,
      "desc": "Query status pesanan dengan trackcode."
    },
    {
      "name": "Delete Order",
      "path": "/v1/orders/delete",
      "method": "POST",
      "auth": true,
      "desc": "Hapus pesanan (jika diizinkan)."
    },
    {
      "name": "Prices",
      "path": "/v1/prices",
      "method": "GET",
      "auth": true,
      "desc": "Kurs dan harga saat ini."
    },
    {
      "name": "Validate Signature",
      "path": "/v1/validate",
      "method": "POST",
      "auth": false,
      "desc": "Validasi tanda tangan surat jaminan digital."
    }
  ]
}
		
  • Tidak memerlukan autentikasi.

Meta / Mixer


Konfigurasi mixer per koin (min/maks, label jaringan, biaya layanan/per-alamat, desimal, konfirmasi).

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
        }
      }
    }
  }
}
  • Butuh otentikasi:Authorization: Bearer YOUR_API_KEY.
  • service_fee adalah persentase (misalnya, 0.1 = 0.1%).
  • per_address_fee adalah string 8 desimal dalam satuan koin.

Meta / Exchange


Konfigurasi exchange: pemeliharaan, harga USD langsung, dan batas/biaya per jaringan.

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"
          }
        }
      },
	  ...
    }
  }
}
  • Butuh otentikasi:Authorization: Bearer YOUR_API_KEY.
  • service_fee adalah string persentase (misalnya, "0.5" = 0.5%).
  • prices_usd adalah nilai langsung dari database.

MIXER


Mixer API memungkinkan Anda membuat transaksi yang menjaga privasi secara terprogram. Anda menentukan koin, jaringan, jumlah, dan satu atau lebih alamat keluaran dengan persentase pembagian dan penundaan opsional. Kami menyediakan alamat deposit dan mengembalikan rencana penuh (biaya + output) sehingga Anda dapat mengotomatisasi penerimaan, pembayaran, atau alur seperti escrow.

  • Kasus penggunaan: penerimaan pembayaran aman, pembagian pendapatan otomatis, pembayaran ke banyak dompet, pencairan tertunda.
  • Dapatkan batas & biaya melalui /v1/meta/mixer sebelum membuat pesanan.
  • Semua bidang moneter menggunakan satuan koin kecuali disebutkan lain.
  • Semua timestamp dalam detik Unix epoch (zona waktu: GMT-3 di server).

MIXER / Buat Pesanan


Buat pesanan mixer baru. Anda memberikan koin, jaringan, jumlah, dan satu atau lebih alamat keluaran dengan persentase serta penundaan. Sistem akan menyediakan alamat deposit dan mengembalikan detail pesanan termasuk biaya dan rencana distribusi.

Aturan Validasi

  • amount: Harus berada di antara min_amount dan max_amount khusus koin dari /v1/meta/mixer.
  • addresses: 1–10 keluaran.
  • percent:
    • Format: maksimal 2 desimal (misalnya, 10, 10.5, 10.50).
    • Minimum per alamat: ≥ 1.00, maksimum: ≤ 100.00.
    • Total semua keluaran harus tepat 100.00.
    • Jika hanya ada 1 keluaran, persentasenya harus tepat 100.00.
  • delay:
    • Menerima menit (misalnya, 120) atau label (misalnya, "2h 0m").
    • Maksimum: 48h (yaitu, 2880 menit).
  • service_fee(opsional override):
    • Maksimal 2 desimal.
    • Rentang: 0.105.00 (%). Jika tidak diisi, sistem akan menggunakan default untuk koin tersebut.
  • address format: Harus sesuai dengan jaringan yang dipilih (misalnya, BTC legacy/SegWit, ERC-20 0x…, TRC-20 T…, SOL, dll.).
  • destination_tag / memo: Opsional; wajib untuk beberapa jaringan (misalnya, tag XRP, memo TON).

Catatan

  • expires_at: Waktu kadaluarsa alamat deposit (epoch seconds).
  • outputs[i].time: Waktu keluaran terjadwal dalam epoch seconds (berdasarkan delay_minutes).
  • Gunakan ?pretty=1 untuk JSON yang mudah dibaca manusia saat pengujian.
  • Batas permintaan: default limit harian per API key; tier lebih tinggi tersedia (lihat “Rate Limits”).

Kesalahan Umum

{
  "ok": false,
  "code": "BAD_REQUEST",
  "message": "Sum of percents must be exactly 100.00"
}
  • BAD_REQUEST: Badan permintaan tidak valid, format alamat salah, persentase bukan 2-desimal, biaya di luar jangkauan, penundaan > 48h, dll.
  • AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH: Melanggar batas min/maks per koin.
  • SERVICE_UNAVAILABLE: Tidak ada alamat deposit yang tersedia untuk jaringan tersebut.
  • TOO_MANY_REQUESTS: Limit API harian tercapai.
  • UNAUTHORIZED / FORBIDDEN: API key tidak valid/dinonaktifkan.
POST/v1/mixer/orders

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: Daftar tujuan keluaran. Setiap alamat harus memiliki field berikut:
    • address: Alamat tujuan tempat dana dikirim.
    • percent: Persentase dari jumlah total yang akan dikirim ke alamat ini (misalnya, 100 untuk seluruh jumlah atau 50 untuk setengahnya).
    • delay: Penundaan sebelum transaksi diproses. Bisa dalam menit (misalnya, 120) atau dalam format teks (misalnya, "2h 0m").
    • destination_tag: Field ini wajib untuk jaringan XRP dan TON. Jika tidak diperlukan, bisa dihilangkan atau dikosongkan (misalnya, "").
  • amount: Jumlah total dalam satuan koin yang akan ditransfer. Gunakan titik sebagai pemisah desimal (misalnya, 10.00000000).
  • crypto/ network: Koin dan jaringan blockchain (misalnya, btc/ btc untuk Bitcoin).
  • partner: Opsional tetapi direkomendasikan. PARTNER KEY Anda tersedia di Partner di bawah tab API (bersama API-KEY Anda). Jika digunakan, Anda akan mendapat 30% dari biaya layanan.
  • service_fee: Opsional override untuk biaya layanan dalam persen. Jika tidak diisi, sistem menggunakan default. Jika diberikan, harus berupa angka antara 0.1 dan 5 (inklusif).
  • qrcode: Opsional. 1 mengembalikan Base64 data URL di bawah deposit.qr_code; 0 atau kosong tidak mengembalikan QR code.
  • destination_tag: Wajib untuk jaringan XRP dan TON. Jika tidak diperlukan, dapat dihilangkan atau dikosongkan ("").

Cara Menggunakan QR Code

Jika qrcode diset ke 1, respons akan menyertakan gambar yang dienkode Base64 di field deposit.qr_code. Ini adalah QR code yang sepenuhnya berfungsi dan dapat Anda sematkan di frontend sebagai gambar, sehingga pengguna dapat memindainya dengan aplikasi dompet mereka. Berikut contoh cara menampilkannya di halaman web:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="Pindai untuk membayar" />

Pengguna dapat memindai QR code dengan aplikasi dompet pilihan mereka untuk langsung mengisi alamat tujuan dan jumlah, sehingga transaksi menjadi cepat dan aman.

Respons

{
  "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: Pengidentifikasi unik pesanan.
  • deposit: Tempat pengguna harus mengirim dana.
  • fees: Semua biaya yang dikenakan.
  • outputs: Rencana distribusi dana, dengan penundaan.
  • time dan expires_at: Unix timestamps (zona waktu GMT-3).
  • signature_text: Tanda tangan digital untuk validasi.

Contoh 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


Exchange API memungkinkan Anda menukar setoran from_coin/ from_network menjadi satu alamat tujuan to_coin/ to_network. Kami menyediakan alamat deposit, menghitung kutipan langsung (dengan batas & biaya berbasis USD), dan mengembalikan objek pesanan penuh yang dapat Anda pantau hingga didanai dan dieksekusi.

  • Kasus penggunaan: pertukaran instan saat checkout, “deposit X → terima Y”, jembatan off-ramp/on-ramp antara L1/L2.
  • Dapatkan batas pasangan & biaya default melalui /v1/meta/exchange sebelum membuat pesanan.
  • Semua bidang moneter dalam satuan koin kecuali dinyatakan lain; batas berbasis USD.
  • Semua stempel waktu dalam detik Unix epoch (zona waktu server GMT-3).

EXCHANGE / Buat Pesanan


Buat pesanan pertukaran baru. Anda memberikan sisi from_* (koin/jaringan/jumlah) dan to_address tujuan untuk sisi to_* . Kami mengembalikan alamat deposit di from_network, kutipan, dan output yang direncanakan.

Aturan Validasi

  • amount: Nilai USD (jumlah × harga from_coin) harus dalam min_usd/ max_usd spesifik pasangan dari /v1/meta/exchange.
  • format alamat: Harus sesuai dengan to_network yang dipilih (misalnya, ERC-20 0x…, TRC-20 T…, BTC, DOGE, SOL, dll.).
  • destination_tag / memo: Opsional tetapi diperlukan oleh beberapa jaringan (misalnya, tag XRP, memo TON).
  • service_fee (opsional, persen):
    • Hingga 2 desimal (misalnya, 0.6 = 0.60%).
    • Batas global: min 0.50%, maks 3.00%.
    • Jika diberikan di bawah default situs untuk pasangan itu, default situs berlaku. Jika di atas 3.00%, akan dibatasi pada 3.00%.
    • Jika diabaikan, biaya efektif = max(default situs, 0.50%).

Catatan

  • quote.final_usd = (jumlah × harga from) × (1 − biaya%).
  • quote.to.estimated_receive = final_usd ÷ harga to_coin.
  • receive.delay_label: Penundaan yang direncanakan sebelum kami mengirim swap (default 0j 10m).
  • expires_at: Jendela deposit untuk alamat yang dialokasikan.
  • Gunakan ?pretty=1 untuk JSON yang diformat saat pengujian.
POST/v1/exchange/orders

Header

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

Badan Permintaan

{
  "from_coin": "eth",
  "from_network": "eth",
  "to_coin": "doge",
  "to_network": "doge",
  "to_address": "DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p",
  "amount": "1.00000000",
  "service_fee": 0.6,           // opsional; %0.60 → dibatasi oleh aturan  "partner": "YOUR_PARTNER_KEY", // opsional, mendapat 30% dari biaya platform  "qrcode": 1                    // opsional; menambahkan QR base64 di deposit.qr_code}

Badan Permintaan (contoh 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"
}

Respons

{
  "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,..."  // hanya jika 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: Pengidentifikasi unik pesanan untuk memantau status.
  • deposit: Tempat pengguna harus mengirim from_coin.
  • quote: Cuplikan harga dan biaya efektif.
  • receive/ outputs: Detail output swap yang direncanakan.

Contoh 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);

Cara Menggunakan Kode QR

Saat qrcode diset ke 1 dalam Create, respons menyertakan QR yang dikodekan Base64 di bawah deposit.qr_code. Sematkan langsung sebagai <img> agar pengguna dapat memindai alamat deposit.

<img src="data:image/png;base64,..." alt="Pindai untuk membayar" />

Harga


Ambil harga pasar terbaru dalam USD untuk cryptocurrency yang didukung. Anda dapat meminta beberapa simbol sekaligus dengan memisahkannya dengan koma.

Endpoint

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

Parameter Kuery

  • symbols(opsional): Daftar simbol koin yang dipisahkan koma (misalnya, BTC,ETH,USDT). Jika diabaikan, semua koin yang didukung dikembalikan.

Respons

  • ok: true jika permintaan berhasil.
  • base: Selalu USD.
  • ts: Stempel waktu Unix (detik).
  • prices: Objek yang memetakan SYMBOL → "price" (angka string).

Contoh Permintaan (Hanya 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);

Contoh Permintaan (Semua Simbol)

<?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);

Contoh Respons

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

Kode Kesalahan

  • BAD_REQUEST: Format symbols tidak valid.
  • UNAUTHORIZED / FORBIDDEN: API key tidak valid atau hilang.
  • SERVER_ERROR: Kesalahan internal server/database.

Catatan

  • Ticker yang tidak didukung akan diabaikan dari objek prices.
  • Nilai numerik dikembalikan sebagai string untuk menjaga presisi.

Status Pesanan


Gunakan satu endpoint untuk memeriksa status pesanan mixer dan exchange. Anda dapat secara eksplisit menetapkan jenis pesanan (mixer/exchange) atau membiarkan API mendeteksinya secara otomatis.

Endpoint

POST/v1/orders/check

Badan Permintaan

  • trackcode(wajib): Kode pelacakan 16 karakter huruf besar dari pesanan.
  • type(opsional): mixer | exchange. Jika tidak diisi, API akan mencoba mendeteksi secara otomatis.
  • outputs(opsional): none | summary | full (default: summary).
  • mask_addresses(opsional): true=alamat disembunyikan (default), false=kembalikan alamat penuh.

Respons

  • type: mixer atau exchange.
  • deposit.confirm_status: Status konfirmasi deposit:
    • 0: Tidak ada pembayaran diterima.
    • 1: Pembayaran diterima tetapi masih tertunda (menunggu konfirmasi atau belum sepenuhnya terdanai).
    • 2: Deposit sepenuhnya dikonfirmasi dan terdanai.
  • deposit.delete_in_sec: Sisa detik hingga kedaluwarsa retensi 48 jam.
  • Blok deposit.funding:
    • waiting_balance: Jumlah total yang diharapkan.
    • received_balance: Jumlah yang sudah diterima.
    • remaining_need: Jumlah yang masih dibutuhkan.
    • is_fully_funded: Apakah sudah sepenuhnya terdanai.
    • can_start: hanya true jika confirm_status==2 DAN is_fully_funded==true.
  • outputs:
    • none: Tidak dikembalikan.
    • summary: Mengembalikan count, sent_count, sent_total.
    • full: Untuk setiap output: index, address (disembunyikan atau tidak), destination_tag, coin, network, share_percent, delay_label, delay_seconds, state, confirm, tx, amount, left_seconds.
  • status_reason: misalnya "INSUFFICIENT_FUNDS" (jika belum sepenuhnya terdanai).

Aturan Bisnis

  • Pesanan tidak akan dimulai kecuali sepenuhnya terdanai (is_fully_funded=false): output tetap tidak ditugaskan dan tidak ada pembayaran afiliasi yang dihasilkan.
  • Jika confirm_status==2 DAN is_fully_funded==true:
    • Output diberi stempel waktu sekali dan tetap konsisten pada pemeriksaan berulang.
    • Pendapatan afiliasi dikreditkan satu kali saat pesanan menjadi valid.

Contoh Permintaan (PHP)

// Contoh Mixer (output penuh, alamat tidak disembunyikan)<?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);

Contoh Respons — Sepenuhnya Terdanai

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

Contoh Respons — Kurang Dana

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

Penjelasan Output

  • index: Nomor urut output dalam pesanan.
  • address: Alamat tujuan tempat dana dikirim.
  • destination_tag: Tag/memo opsional untuk XRP, XLM, dll. (null jika tidak diperlukan).
  • coin: Kode mata uang kripto untuk output (misalnya, btc, eth).
  • network: Nama jaringan yang digunakan untuk transfer (misalnya, btc, eth).
  • share_percent: Persentase dari total deposit yang ditugaskan ke output ini.
  • delay_label: Label yang mudah dibaca menunjukkan kapan output ini akan diproses (misalnya, 2h 0m).
  • delay_seconds: Waktu tunda dalam detik hingga output dapat mulai diproses.
  • state: Status output:
    • 0 → Menunggu (deposit belum sepenuhnya dikonfirmasi).
    • 1 → Sedang diproses (dijadwalkan; dimulai saat delay_seconds mencapai 0).
    • 2 → Selesai (transfer selesai).
  • confirm: Status konfirmasi transfer (hanya relevan pada state=2):
    • 0 → Transaksi disiarkan tetapi belum dikonfirmasi (tertunda).
    • 1 → Transaksi dikonfirmasi (setidaknya 1 konfirmasi blockchain).
  • tx: Hash transaksi blockchain untuk output ini.
  • amount: Jumlah yang dikirim ke alamat output ini.
  • left_seconds: Sisa detik hingga waktu pengiriman terjadwal.
    Catatan: Hitungan mundur ini dimulai ulang setelah deposit.confirm_status=2 (sepenuhnya dikonfirmasi). Contoh: jika ditetapkan 600 detik (10 menit), hitungan mundur hanya dimulai setelah konfirmasi deposit.

Catatan: Data pembayaran dan output diperbarui setiap ~1 menit.

Kode Kesalahan

  • BAD_REQUEST: trackcode hilang/tidak valid, badan permintaan rusak.
  • NOT_FOUND: Pesanan tidak ditemukan.
  • UNAUTHORIZED / FORBIDDEN: Kunci API tidak valid atau dinonaktifkan.
  • TOO_MANY_REQUESTS: Batas permintaan harian terlampaui.
  • SERVER_ERROR: Kesalahan server yang tidak terduga.

  • mask_addresses: dikendalikan oleh mask_addresses (default: true).
  • delay_seconds: setara numerik dari delay_label (hanya dikembalikan dalam mode full).

Hapus Pesanan


Hapus pesanan yang ada sehingga tidak dapat lagi diakses melalui API. Setelah dihapus, pesanan tidak akan tersedia secara permanen untuk permintaan lebih lanjut.

Endpoint

POST/v1/orders/delete

Badan Permintaan

  • trackcode(wajib): Kode pelacakan huruf besar 16 karakter.
  • type(opsional): mixer | exchange. Jika tidak diisi, deteksi otomatis.

Respon

  • ok: true jika berhasil.
  • trackcode: Pantulan dari kode pelacakan yang diminta.
  • type: Jenis pesanan ( mixer atau exchange).
  • deleted: true jika pesanan telah dihapus.

Perilaku

  • Jika pesanan sudah dihapus atau tidak ditemukan, API mengembalikan 404 NOT_FOUND.
  • Jika type diberikan, hanya jenis itu yang diperiksa; jika tidak, deteksi otomatis.

Contoh Permintaan (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);

Contoh Respon — Berhasil

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

Contoh Respon — Tidak Ditemukan

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

Kode Error

  • BAD_REQUEST: trackcode atau type tidak valid.
  • NOT_FOUND: Pesanan tidak ditemukan atau sudah dihapus.
  • UNAUTHORIZED / FORBIDDEN: API key tidak valid atau hilang.
  • SERVER_ERROR: Kesalahan server internal.

Validasi Tanda Tangan


Validasi payload yang ditandatangani secara digital (tanda tangan Letter of Guarantee). Setelah berhasil didekripsi, API mengembalikan subset terverifikasi dari detail pesanan terkait (mixer atau exchange), cocok untuk pengecekan sisi klien dan tampilan status.

Endpoint

POST/v1/validate

Badan Permintaan

  • signature(wajib): Blok tanda tangan digital, baik dalam bentuk Base64 mentah atau dengan baris BEGIN/END.

Respon

  • ok: true jika berhasil.
  • message: Pesan status yang dapat dibaca manusia.
  • type: mixer | exchange.
  • route: Untuk mixer: confirm | deposit | mixing. Untuk exchange: exc-deposit | exc-send.
  • trackcode: Kode pelacakan yang diuraikan.
  • order:
    • deposit_address (string)
    • service_fee (string, 2 desimal)
    • coin (string)
    • network (string)
    • waiting_balance (string, 8 desimal)
    • created_at (integer, Unix timestamp)
  • outputs (array):
    • coin, network, address, destination_tag
    • share_percent (string, 2 desimal)
    • delay_minutes (integer), delay_label (contoh: 2h 0m)
    • amount (string, 8 desimal)
  • outputs_count (integer)

Perilaku

  • Tanda tangan digital yang diberikan divalidasi terhadap sistem.
  • Hanya pesanan terbaru (dalam 48 jam) yang memenuhi syarat untuk validasi. Pesanan lama mungkin telah dihapus otomatis.
  • Jika tidak ada pesanan valid yang ditemukan, API merespons dengan 404 NOT_FOUND.

Contoh Permintaan (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);

Contoh Respon — Berhasil

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

Contoh Respon — Error

{
  "ok": false,
  "error": "BAD_REQUEST",
  "message": "Tanda tangan digital diperlukan"
}
---
{
  "ok": false,
  "error": "INVALID_SIGNATURE",
  "message": "Data yang diberikan bukan Base64 yang valid atau terlalu pendek"
}
---
{
  "ok": false,
  "error": "DECRYPTION_FAILED",
  "message": "Dekripsi gagal. Pastikan tanda tangan yang diberikan valid lalu coba lagi."
}
---
{
  "ok": false,
  "error": "MISSING_TRACKCODE",
  "message": "Trackcode diperlukan dalam payload tanda tangan."
}
---
{
  "ok": false,
  "error": "NOT_FOUND",
  "message": "Detail pesanan yang diminta tidak dapat ditemukan."
}

Kode Error

  • BAD_REQUEST: signature hilang atau payload rusak.
  • INVALID_SIGNATURE: Base64 tidak valid atau blok tanda tangan terlalu pendek.
  • DECRYPTION_FAILED: Dekripsi AES-GCM gagal.
  • INVALID_PAYLOAD: Payload hasil dekripsi bukan JSON yang valid.
  • MISSING_TRACKCODE: Kolom track tidak ada dalam payload.
  • NOT_FOUND: Pesanan tidak ditemukan dalam 48 jam terakhir.
  • UNAUTHORIZED / FORBIDDEN: API key tidak valid atau hilang.
  • SERVER_ERROR: Kesalahan server internal.

Catatan

  • Presisi numerik: waiting_balance dan amount → 8 desimal (string), share_percent → 2 desimal (string), service_fee → 2 desimal (string).
  • Delay: baik label manusia ( delay_label) maupun menit yang dapat dibaca mesin ( delay_minutes) dikembalikan.

Batas Permintaan


Batas: 1000 permintaan / hari / API key.