Developers
API 문서
사이트와 동일한 수수료 내역을 줄 단위로 반환하며 숨은 마진이 없는 API입니다. 이 페이지는 모든 엔드포인트가 공유하는 규칙을 설명하고 오늘 현재 공개된 사항을 정확히 명시합니다.
오늘 공개된 사항
1 엔드포인트는 실제로 노출되어 호출 가능합니다: 견적(quoting)입니다. 나머지 5는 계약으로 게시되므로 오픈 전에 구축할 수 있으며, 각각 명시적인 배지가 표시됩니다.
통합에 도움이 되므로 사전에 문서화합니다. 연결되어 있다고 믿게 하는 것은 도움이 되지 않습니다: 모든 엔드포인트는 상태를 명시하며, 오픈 엔드포인트의 샘플 응답은 실제로 얻은 응답이지 목업이 아닙니다.
기본 URL 및 버전 관리
두 가지 기본 URL이 공존합니다: 오늘 응답하는 것과 발급된 키와 함께 제공될 버전 관리 API입니다.
- 현재
- /api Live
- 버전 관리 API
- /api/v1 Published contract, not open
버전은 헤더가 아닌 경로에 있습니다. URL은 티켓에 붙여넣어도 유지되어야 합니다. 호환되지 않는 변경(필드 제거, 유형 변경, 의미 변경)은 새 버전을 열며, 이전 버전은 최소 6개월 동안 계속 제공되고 종료 날짜는 변경 로그에 공지됩니다. 필드 추가는 호환되지 않는 변경이 아닙니다: 클라이언트는 알 수 없는 필드를 무시해야 합니다.
규칙
이 규칙은 오픈되었거나 예정된 모든 엔드포인트에 적용됩니다. 대부분은 한 가지 이유로 존재합니다: 전송 중에 1센트도 잃지 않기 위해서입니다.
금액은 문자열 또는 소수 단위의 정수입니다
절대 부동 소수점이 아닙니다. JSON에서 0.1 + 0.2는 0.3이 아니며, 큰 금액은 직렬화 시 소수 단위를 잃습니다. 따라서 주요 단위 금액은 문자열로 전송되고 내부 금액은 소수 자릿수가 포함된 소수 단위의 정수로 전송됩니다.
{
"net": "912.28",
"currency": "EUR",
"currencyDecimals": 2
}소수 자릿수는 통화에 따라 다릅니다
유로는 소수 2자리, CFA 프랑과 베트남 동은 소수 자리가 없습니다. "× 100"을 하드코딩하지 마십시오: currencyDecimals 또는 참조 데이터의 decimals 필드를 읽으십시오.
{ "amount": "125000", "currency": "XOF", "currencyDecimals": 0 }암호화폐 금액은 기본 단위입니다
입금은 소수 자릿수와 함께 반환됩니다: 비트코인은 8, USDT는 6, 이더는 18입니다. 동일한 티커가 네트워크에 따라 다른 소수 자릿수를 가질 수 있습니다: 기억에 의존하지 말고 필드를 신뢰하십시오.
{ "deposit": { "amount": "1000.000000", "ticker": "USDT", "decimals": 6 } }타임스탬프
날짜는 ISO 8601 UTC입니다. 의도적인 예외 하나: rateAsOf는 밀리초 단위의 Unix 타임스탬프입니다. 표시가 아닌 경과 시간 계산에 사용되기 때문입니다. 이는 요청 시점이 아닌 시장 데이터의 날짜를 나타냅니다: 이 구분 덕분에 오래된 가격을 감지할 수 있습니다.
{ "rateAsOf": 1788356981608, "rateSource": "coingecko" }식별자는 안정적입니다
자산, 결제 수단 또는 국가 식별자는 변경되지 않으며 재할당되지 않습니다. 폐쇄된 결제 수단은 단계와 사유와 함께 자체 식별자를 유지합니다: 통합 시 옵션에서 사라진 이유를 확인할 수 있으며, 구멍을 발견하지 않습니다.
사용자 대상 메시지는 이중 언어입니다
거부 사유는 동일한 객체에 프랑스어와 영어로 반환됩니다. 사용자에게 맞는 언어를 표시하면 되며, 번역 테이블을 유지할 필요가 없습니다.
{ "reason": { "fr": "…", "en": "…" } }첫 번째 호출
견적에는 키가 필요 없습니다. 이 호출은 그대로 작동합니다.
curl -sS -X POST https://fiatside.com/api/quote \
-H 'Content-Type: application/json' \
-d '{
"assetId": "usdt",
"railId": "sepa_instant",
"networkId": "tron",
"direction": "sell",
"amount": "1000"
}'{
"deposit": { "amount": "1000.000000", "ticker": "USDT", "decimals": 6 },
"gross": "921.68",
"net": "912.28",
"currency": "EUR",
"currencyDecimals": 2,
"midRate": "0.92168430",
"effectiveRate": "0.91228000",
"totalCostBps": 102,
"lines": [
{ "code": "network", "amount": "1.11", "basis": "Cout reseau tron, preleve en USDT" },
{ "code": "spread", "amount": "8.29", "basis": "0.90 % du montant converti" }
],
"settlement": { "p50Minutes": 1, "p95Minutes": 12 },
"lockSeconds": 1800,
"rateAsOf": 1788356981608,
"rateSource": "mock",
"limitError": null
}rateSource 필드는 가격 출처를 나타냅니다. "mock" 값은 결정적 개발 소스로, 프로덕션에서는 부팅할 수 없습니다: 프로세스는 고정된 가격을 견적하는 대신 시작을 거부합니다.
섹션
- 인증현재 견적 엔드포인트가 보호되는 방식, 키 발급 방법, 프로덕션 키 처리 규칙.
- 견적견적 엔드포인트, 항목별 수수료 내역, 응답에 포함된 한도 정보, 주문 생성 후 요율이 고정되는 기간.
- 주문주문 생성, 멱등성 키, 입금 주소, 일부 네트워크의 필수 메모, 상태 전환 읽기.
- 참조 데이터결제 수단, 자산, 국가 카탈로그, 지급 양식 생성을 위한 수취인 필드 스키마, 커서 페이지 매김.
- 웹훅발생 이벤트, 원본 본문에 대한 HMAC-SHA256 서명, 재생 창, 재시도 일정, 검증이 일정 시간 내에 실행되어야 하는 이유.
- 오류모든 오류 코드와 HTTP 상태, 정확한 의미, 통합 측에서 처리 방법, 재시도할 가치가 있는 오류.
API가 수행하지 않는 작업
API의 한계는 기능만큼 알아두면 유용합니다.
- 제3자 지급은 없습니다. 수취인 이름은 주문 보유자의 확인된 신원과 일치해야 하며, 결제 수단은 이제 이름과 계좌를 대조합니다.
- API를 통한 계정 생성이나 신원 확인은 없습니다. 이러한 단계는 사용자가 수락하는 내용을 확인하는 흐름에서 이루어집니다.
- URL 매개변수에 키가 없습니다. URL은 로그, 리퍼러 헤더 및 기록에 남습니다: 해당 방식으로 전달된 키는 폐기해야 할 키입니다.
- 당사 측 견적 캐싱은 없습니다. 응답에는 Cache-Control: no-store가 포함되며, 통합은 이를 우회해서는 안 됩니다: 캐시된 견적은 확정으로 제시되는 오래된 가격입니다.
- 암호화폐 구매 엔드포인트는 없습니다. 서비스는 디지털 자산에서 법정 화폐로 한 방향으로만 운영됩니다.