소개
SecretCryptos API는 믹서와 거래소 서비스를 안전하고 단순하며 일관성 있게 접근할 수 있도록 합니다. 이 “간단 문서”는 핵심 엔드포인트를 빠르게 시작할 수 있도록 안내합니다.
기본 URL: https://api.secretcryptos.com/v1
예시: GET /v1/ping
– 실행하기
실시간 루트 페이지를 api.secretcryptos.com 에서 탐색할 수도 있습니다.
추가 링크: 링크 허브 • API 문서 (Swagger UI) • GitHub 조직.
인증
- 헤더:
Authorization: Bearer YOUR_API_KEY
- 모든 요청은 HTTPS를 사용해야 합니다.
API 키 받기
- 파트너 페이지에서 계정을 만들거나 로그인하세요.
- 상단 메뉴에서 API 탭을 클릭하세요.
- API-KEY를 복사하세요 (비밀로 유지해야 하며, 믹서와 거래소 모두에서 작동합니다).
API 키 안전
cURL (서버 측)
curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://api.secretcryptos.com/v1/meta/mixer"
PHP 프록시
<?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
간단한 상태 확인 및 버전 정보.
GET https://api.secretcryptos.com/v1/ping
{ "ok": true, "service": "SecretCryptos API", "version": "1.2.6", "ts": 1723800000 }
ts
: 유닉스 에포크 (초 단위).- 인증 필요 없음.
믹서
믹서 API를 사용하면 프라이버시를 보호하는 거래를 프로그래밍 방식으로 생성할 수 있습니다. 코인, 네트워크, 금액, 그리고 하나 이상의 출금 주소를 비율과 지연 옵션과 함께 정의합니다. 우리는 입금 주소를 할당하고 전체 계획(수수료 + 출금)을 반환하므로 수금, 지급, 에스크로와 같은 흐름을 자동화할 수 있습니다.
- 사용 사례: 안전한 결제 수납, 자동 수익 분배, 여러 지갑으로 지급, 지연된 분배.
/v1/meta/mixer
를 통해 주문 생성 전에 한도와 수수료를 확인하세요.- 모든 금액 필드는 별도 표시가 없는 한 코인 단위로 표시됩니다.
- 모든 타임스탬프는 유닉스 에포크 초 단위 (서버 시간대: GMT-3)입니다.
믹서 / 주문 생성
새 믹서 주문을 생성합니다. 코인, 네트워크, 금액, 그리고 하나 이상의 출력 주소(비율 및 지연 시간 포함)를 제공합니다. 시스템은 입금 주소를 할당하고 수수료 및 출력 계획을 포함한 주문 세부 정보를 반환합니다.
검증 규칙
amount
: 반드시/v1/meta/mixer
에서 제공하는 코인별min_amount
와max_amount
범위 내여야 합니다.addresses
: 1–10개의 출력 주소.percent
:- 형식: 소수점 둘째 자리까지 (예:
10
,10.5
,10.50
). - 주소별 최소:
≥ 1.00
, 최대:≤ 100.00
. - 모든 출력의 합계는 정확히
100.00
이어야 합니다. - 출력이 하나뿐이라면 그 비율은 반드시
100.00
이어야 합니다.
- 형식: 소수점 둘째 자리까지 (예:
delay
:- 분 단위(예:
120
) 또는 라벨(예:"2h 0m"
) 허용. - 최대:
48h
(즉,2880
분).
- 분 단위(예:
service_fee
(선택적 재정의):- 최대 소수점 둘째 자리까지.
- 범위:
0.10
–5.00
(%). 생략 시 시스템 기본값 사용.
address format
: 선택한 네트워크 형식과 일치해야 함 (예: BTC legacy/SegWit, ERC-200x…
, TRC-20T…
, SOL 등).destination_tag / memo
: 선택 사항. 일부 네트워크(XRP 태그, TON 메모 등)에서는 필수.
참고 사항
expires_at
: 입금 주소 만료 시점 (epoch 초).outputs[i].time
: 계획된 출력 시간(epoch 초,delay_minutes
기준).- 테스트 시 사람이 읽기 쉬운 JSON 출력을 원하면
?pretty=1
사용. - 요청 제한: 기본적으로 API 키당 일일 제한 있음. 상위 등급은 “Rate Limits” 참조.
자주 발생하는 오류
{ "ok": false, "code": "BAD_REQUEST", "message": "Sum of percents must be exactly 100.00" }
BAD_REQUEST
: 잘못된 요청 본문, 주소 형식 오류, 소수점 두 자리 규칙 위반, 수수료 범위 초과, 지연 48h 초과 등.AMOUNT_TOO_LOW / AMOUNT_TOO_HIGH
: 코인별 최소/최대 한도 위반.SERVICE_UNAVAILABLE
: 해당 네트워크에 사용 가능한 입금 주소 없음.TOO_MANY_REQUESTS
: 일일 API 요청 한도 도달.UNAUTHORIZED / FORBIDDEN
: 잘못되었거나 비활성화된 API 키.
헤더
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
요청 본문
{ "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 }
요청 본문
{ "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
: 출력 주소 목록. 각 주소는 다음 필드를 포함해야 합니다:address
: 송금될 목적지 주소.percent
: 총 금액 중 이 주소로 보낼 비율 (예: 전체는100
, 절반은50
).delay
: 거래 처리 전 지연 시간. 분 단위(예:120
) 또는 텍스트 형식(예:"2h 0m"
)으로 지정 가능.destination_tag
: XRP 및 TON 네트워크에서는 필수. 필요하지 않으면 생략 또는 빈 문자열(예:""
).
amount
: 전송할 총 금액 (코인 단위). 소수점 구분자는 반드시 점(.) 사용 (예:10.00000000
).crypto
/network
: 코인 및 블록체인 네트워크 (예: 비트코인btc
/btc
).partner
: 선택 사항이지만 권장. 파트너 페이지 페이지의 API 탭에서 PARTNER KEY 확인 가능 (API-KEY와 함께). 사용 시 서비스 수수료의 30%를 획득.service_fee
: 선택적 수수료 재정의. 생략 시 기본값 적용. 지정 시 0.1 ~ 5 범위여야 함.qrcode
: 선택 사항.1
이면 응답에 Base64 데이터 URL 형태로deposit.qr_code
포함.0
또는 생략 시 QR 코드 없음.destination_tag
: XRP와 TON 네트워크에서 필수. 필요 없으면 생략 또는 빈 문자열("").
QR 코드 사용 방법
qrcode
가 1
로 설정되면 응답의 deposit.qr_code
필드에 Base64 인코딩된 이미지가 포함됩니다. 이를 프론트엔드에 이미지로 삽입하면 사용자가 지갑 앱으로 스캔 가능.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="스캔하여 결제" />
사용자는 QR 코드를 지갑 앱으로 스캔하여 자동으로 목적지 주소와 금액을 채울 수 있어 빠르고 안전한 거래가 가능합니다.
응답
{ "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
: 고유 주문 식별자.deposit
: 사용자가 송금해야 할 입금 주소.fees
: 적용된 모든 수수료.outputs
: 지연을 포함한 계획된 분배.time
및expires_at
: Unix 타임스탬프 (GMT-3 서버 시간).signature_text
: 검증용 디지털 서명.
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 API를 사용하면 from_coin/from_network 입금을 단일 to_coin/to_network 목적지 주소로 교환할 수 있습니다. 시스템은 입금 주소를 할당하고, 실시간 견적(USD 기반 한도 및 수수료 적용)을 계산하며, 자금이 입금되고 실행될 때까지 조회 가능한 전체 주문 객체를 반환합니다.
- 사용 사례: 결제 시 즉시 스왑, “X로 입금 → Y로 수령”, L1/L2 간 오프램프/온램프 브릿지.
- 주문 생성 전
/v1/meta/exchange
에서 거래쌍 한도 및 기본 수수료 확인. - 모든 금액 필드는 별도 표시가 없는 한 코인 단위. 한도는 USD 기준.
- 모든 타임스탬프는 Unix epoch 초 (서버 시간대 GMT-3).
거래소 / 주문 생성
새로운 교환 주문을 생성합니다. from_*
측(코인/네트워크/수량)과 대상 to_address
를 to_*
측에 제공합니다. 우리는 from_network
에 대한 입금 주소, 견적(quote), 그리고 계획된 출력을 반환합니다.
검증 규칙
amount
: USD 값 (수량 × from_coin 가격)은/v1/meta/exchange
에서 쌍별min_usd
/max_usd
범위 내에 있어야 합니다.address format
: 선택한to_network
형식과 일치해야 합니다. (예: ERC-200x…
, TRC-20T…
, BTC, DOGE, SOL 등)destination_tag / memo
: 선택 사항이지만 일부 네트워크에서는 필수입니다 (예: XRP 태그, TON 메모).service_fee
(선택, 퍼센트):- 소수점 2자리까지 가능 (예:
0.6
=0.60%
). - 전역 제한: 최소
0.50%
, 최대3.00%
. - 제공된 값이 쌍별 사이트 기본값보다 낮으면 기본값이 적용됩니다.
3.00%
초과 시3.00%
로 제한됩니다. - 입력하지 않으면 적용 수수료 =
max(사이트 기본값, 0.50%)
.
- 소수점 2자리까지 가능 (예:
비고
quote.final_usd
= (수량 × from 가격) × (1 − 수수료%).quote.to.estimated_receive
=final_usd
÷ to_coin 가격.receive.delay_label
: 스왑 전송 전 계획된 지연 (기본값0h 10m
).expires_at
: 할당된 주소의 입금 가능 시간.- 테스트 시
?pretty=1
를 사용하여 사람이 읽기 좋은 JSON 출력.
헤더
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
요청 본문
{ "from_coin": "eth", "from_network": "eth", "to_coin": "doge", "to_network": "doge", "to_address": "DLPaeuaJi2JLUcvYHD4ddLxadwnGaVSt4p", "amount": "1.00000000", "service_fee": 0.6, // 선택; %0.60 → 규칙에 의해 제한됨 "partner": "YOUR_PARTNER_KEY", // 선택, 플랫폼 수수료의 30% 획득 "qrcode": 1 // 선택; deposit.qr_code에 base64 QR 추가}
요청 본문 (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" }
응답
{ "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,..." // 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
: 상태 조회를 위한 고유 주문 식별자.deposit
: 사용자가 from_coin을 입금해야 하는 곳.quote
: 가격 스냅샷 및 적용 수수료.receive
/outputs
: 계획된 스왑 출력 세부사항.
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);
QR 코드 사용 방법
Create 시 qrcode
를 1
로 설정하면 응답에 deposit.qr_code
에 Base64 인코딩된 QR이 포함됩니다. 이를 <img>로 직접 삽입하면 사용자가 입금 주소를 스캔할 수 있습니다.
<img src="data:image/png;base64,..." alt="스캔하여 결제" />
가격
지원되는 암호화폐의 최신 시장 가격을 USD 단위로 가져옵니다. 여러 심볼을 한 번에 조회하려면 쉼표로 구분하세요.
엔드포인트
쿼리 매개변수
symbols
(선택): 코인 심볼을 쉼표로 구분한 목록 (예:BTC,ETH,USDT
). 생략하면 지원되는 모든 코인이 반환됩니다.
응답
ok
: 요청이 성공했을 경우true
.base
: 항상USD
.ts
: 유닉스 타임스탬프 (초).prices
:SYMBOL → "price"
(문자열 숫자) 매핑 객체.
예시 요청 (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);
예시 요청 (전체 심볼)
<?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);
예시 응답
{ "ok": true, "base": "USD", "ts": 1755600000, "prices": { "BTC": "117799.51713382", "ETH": "4409.46254479", "USDT": "1.0005594" } }
에러 코드
BAD_REQUEST
: 잘못된symbols
형식.UNAUTHORIZED / FORBIDDEN
: API 키가 잘못되었거나 누락됨.SERVER_ERROR
: 내부 서버/데이터베이스 오류.
비고
- 지원되지 않는 티커는 단순히
prices
객체에서 생략됩니다. - 숫자 값은 정밀도를 보존하기 위해 문자열로 반환됩니다.
주문 상태
단일 엔드포인트를 사용하여 믹서 및 교환 주문의 상태를 확인할 수 있습니다. 주문 유형( mixer
/ exchange
)을 명시적으로 설정하거나 API가 자동으로 감지하도록 둘 수 있습니다.
엔드포인트
요청 본문
trackcode
(필수): 주문의 16자 대문자 추적 코드.type
(선택):mixer
|exchange
. 생략하면 API가 자동 감지를 시도합니다.outputs
(선택):none
|summary
|full
(기본값:summary
).mask_addresses
(선택):true
=주소 마스킹 (기본),false
=전체 주소 반환.
응답
type
:mixer
또는exchange
.deposit.confirm_status
: 입금 확인 상태:0
: 결제 수신되지 않음.1
: 결제는 수신되었지만 아직 대기 중 (확인 중이거나 완전히 자금이 충전되지 않음).2
: 입금이 완전히 확인되고 충전됨.
deposit.delete_in_sec
: 48시간 보존 만료까지 남은 초.deposit.funding
블록:waiting_balance
: 총 예상 금액.received_balance
: 현재까지 수신된 금액.remaining_need
: 추가로 필요한 금액.is_fully_funded
: 완전히 충전되었는지 여부.can_start
: 오직confirm_status==2
이고is_fully_funded==true
일 때만 true.
outputs
:none
: 반환되지 않음.summary
:count
,sent_count
,sent_total
반환.full
: 각 출력에 대해:index
,address
(마스킹 여부),destination_tag
,coin
,network
,share_percent
,delay_label
,delay_seconds
,state
,confirm
,tx
,amount
,left_seconds
.
status_reason
: 예:"INSUFFICIENT_FUNDS"
(자금 부족 시).
비즈니스 규칙
- 주문은 완전히 충전되지 않으면 시작되지 않습니다 (
is_fully_funded=false
): 출력은 할당되지 않고 파트너 수익도 발생하지 않습니다. confirm_status==2
이고is_fully_funded==true
이면:- 출력은 한 번 타임스탬프가 기록되며 반복 확인 시에도 일관성을 유지합니다.
- 제휴 수익은 주문이 유효해질 때 단 한 번 적립됩니다.
예시 요청 (PHP)
// 믹서 예시 (전체 출력, 마스킹되지 않은 주소)<?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);
예시 응답 — 완전 충전됨
{ "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 } ] }
예시 응답 — 미충전
{ "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" } }
출력 설명
index
: 주문에서 출력의 순번.address
: 자금이 전송되는 대상 주소.destination_tag
: XRP, XLM 등에서 선택적 태그/메모 (필요하지 않으면null
).coin
: 출력의 암호화폐 코드 (예:btc
,eth
).network
: 전송에 사용되는 네트워크 이름 (예:btc
,eth
).share_percent
: 이 출력에 할당된 총 입금 비율.delay_label
: 사람이 읽을 수 있는 지연 라벨 (예:2h 0m
).delay_seconds
: 출력이 시작되기까지의 지연 시간(초).state
: 출력 상태:0
→ 대기 중 (입금이 아직 완전히 확인되지 않음).1
→ 처리 중 (예약됨;delay_seconds
가 0이 되면 시작).2
→ 완료 (전송 종료).
confirm
: 전송 확인 상태 (state=2
에서만 해당):0
→ 트랜잭션이 브로드캐스트 되었지만 아직 확인되지 않음 (대기 중).1
→ 트랜잭션이 확인됨 (최소 1 블록체인 확인).
tx
: 이 출력의 블록체인 트랜잭션 해시.amount
: 이 출력 주소로 전송된 금액.left_seconds
: 예약된 전송 시간까지 남은 초.
참고: 이 카운트다운은deposit.confirm_status=2
(완전히 확인됨) 이후에만 시작됩니다. 예:600
초(10분)가 설정된 경우, 입금 확인 후 카운트다운 시작.
참고: 결제 및 출력 데이터는 약 1분마다 새로 고침됩니다.
에러 코드
BAD_REQUEST
:trackcode
누락/잘못됨, 요청 본문 오류.NOT_FOUND
: 주문을 찾을 수 없음.UNAUTHORIZED / FORBIDDEN
: API 키가 잘못되었거나 비활성화됨.TOO_MANY_REQUESTS
: 일일 요청 제한 초과.SERVER_ERROR
: 예기치 못한 서버 오류.
mask_addresses
:mask_addresses
에 의해 제어됨 (기본값:true
).delay_seconds
:delay_label
의 숫자 값 (full
모드에서만 반환).
주문 삭제
기존 주문을 삭제하여 더 이상 API를 통해 액세스할 수 없도록 합니다. 삭제된 주문은 영구적으로 조회할 수 없습니다.
엔드포인트
요청 본문
trackcode
(필수): 16자리 대문자 추적 코드.type
(선택):mixer
|exchange
. 생략 시 자동 감지됩니다.
응답
ok
: 성공 시true
.trackcode
: 요청된 추적 코드의 에코.type
: 주문 유형 (mixer
또는exchange
).deleted
: 주문이 삭제되었으면true
.
동작
- 주문이 이미 삭제되었거나 찾을 수 없는 경우, API는 404 NOT_FOUND를 반환합니다.
type
이 제공되면 해당 유형만 확인하며, 그렇지 않으면 자동 감지됩니다.
예시 요청 (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);
예시 응답 — 성공
{ "ok": true, "trackcode": "D391FC08747E7B04", "type": "exchange", "deleted": true }
예시 응답 — 찾을 수 없음
{ "ok": false, "code": "NOT_FOUND", "message": "Order not found or already deleted" }
에러 코드
BAD_REQUEST
: 잘못된trackcode
또는type
.NOT_FOUND
: 주문을 찾을 수 없거나 이미 삭제됨.UNAUTHORIZED / FORBIDDEN
: API 키가 잘못되었거나 누락됨.SERVER_ERROR
: 내부 서버 오류.
서명 검증
디지털 서명된 페이로드(보증서 서명)를 검증합니다. 복호화에 성공하면 API는 관련 주문 세부 정보(믹서 또는 익스체인지)의 검증된 일부를 반환하여 클라이언트 측 확인 및 상태 표시용으로 사용할 수 있습니다.
엔드포인트
요청 본문
signature
(필수): 디지털 서명 블록, 원시 Base64 또는 BEGIN/END 라인 포함 형식.
응답
ok
: 성공 시true
.message
: 사람이 읽을 수 있는 상태 메시지.type
:mixer
|exchange
.route
: 믹서:confirm
|deposit
|mixing
. 익스체인지:exc-deposit
|exc-send
.trackcode
: 확인된 추적 코드.order
:deposit_address
(문자열)service_fee
(문자열, 소수점 2자리)coin
(문자열)network
(문자열)waiting_balance
(문자열, 소수점 8자리)created_at
(정수, Unix 타임스탬프)
outputs
(배열):coin
,network
,address
,destination_tag
share_percent
(문자열, 소수점 2자리)delay_minutes
(정수),delay_label
(예:2h 0m
)amount
(문자열, 소수점 8자리)
outputs_count
(정수)
동작
- 제공된 디지털 서명은 시스템과 대조하여 검증됩니다.
- 최근 주문(48시간 이내)만 검증할 수 있습니다. 오래된 주문은 자동으로 제거될 수 있습니다.
- 유효한 주문을 찾을 수 없는 경우, API는 404 NOT_FOUND로 응답합니다.
예시 요청 (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);
예시 응답 — 성공
{ "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 }
예시 응답 — 오류
{ "ok": false, "error": "BAD_REQUEST", "message": "디지털 서명이 필요합니다" } --- { "ok": false, "error": "INVALID_SIGNATURE", "message": "제공된 데이터가 유효한 Base64가 아니거나 너무 짧습니다" } --- { "ok": false, "error": "DECRYPTION_FAILED", "message": "복호화 실패. 제공된 서명이 유효한지 확인하고 다시 시도하세요." } --- { "ok": false, "error": "MISSING_TRACKCODE", "message": "서명 페이로드에 Trackcode가 필요합니다." } --- { "ok": false, "error": "NOT_FOUND", "message": "요청한 주문 세부 정보를 찾을 수 없습니다." }
에러 코드
BAD_REQUEST
:signature
누락 또는 잘못된 페이로드.INVALID_SIGNATURE
: 잘못된 Base64 또는 서명 블록이 너무 짧음.DECRYPTION_FAILED
: AES-GCM 복호화 실패.INVALID_PAYLOAD
: 복호화된 페이로드가 유효한 JSON이 아님.MISSING_TRACKCODE
: 페이로드에track
필드가 없음.NOT_FOUND
: 최근 48시간 내 주문을 찾을 수 없음.UNAUTHORIZED / FORBIDDEN
: API 키가 잘못되었거나 누락됨.SERVER_ERROR
: 내부 서버 오류.
비고
- 숫자 정밀도:
waiting_balance
및amount
→ 소수점 8자리 (문자열),share_percent
→ 소수점 2자리 (문자열),service_fee
→ 소수점 2자리 (문자열). - 지연: 사람이 읽을 수 있는 레이블(
delay_label
)과 기계가 읽을 수 있는 분 단위(delay_minutes
) 모두 반환됩니다.