Developers
APIドキュメント
サイトと同じ手数料の内訳を、行ごとに、隠れたマージンなしで返すAPI。このページでは、すべてのエンドポイントが共有する規約を説明し、今日何が公開されているかを正確に述べます。
今日公開されているもの
1 エンドポイントは実際に公開され、呼び出し可能です: 見積もり。他の 5 は契約として公開されているため、公開前に構築でき、それぞれに明示的なバッジが付いています。
統合に役立つため、事前に文書化しています。配線されていると思わせることはしません: 各エンドポイントはそのステータスを明記し、公開エンドポイントのサンプル応答は、モックアップではなく実際に取得された応答です。
ベースURLとバージョニング
2つのベースが共存しています: 今日応答するものと、発行されたキーに付属するバージョン管理されたAPIです。
- 今日
- /api Live
- バージョン管理されたAPI
- /api/v1 Published contract, not open
バージョンはヘッダーではなくパスにあります: URLはチケットに貼り付けられても生き残る必要があります。破壊的な変更(フィールドの削除、型の変更、セマンティクスの変更)は新しいバージョンを開きます。以前のバージョンは少なくとも6か月間提供され続け、その終了日は変更ログで発表されます。フィールドの追加は破壊的ではありません: クライアントは知らないフィールドを無視する必要があります。
規約
これらは、公開中または今後公開されるすべてのエンドポイントに適用されます。それらのほとんどは、1つの理由で存在します: 転送中に1セントも失わないことです。
金額は文字列、または最小単位の整数
決して浮動小数点数ではありません。JSONでは、0.1 + 0.2 は 0.3 ではなく、大きな金額はシリアライズ時に最小単位を失います。したがって、主要単位の金額は文字列として送信され、内部金額は小数桁数を持つ最小単位の整数として送信されます。
{
"net": "912.28",
"currency": "EUR",
"currencyDecimals": 2
}小数桁数は通貨に依存します
ユーロには小数2桁、CFAフランとベトナムドンには小数0桁があります。「× 100」をハードコードしないでください: currencyDecimals、または参照データのdecimalsフィールドを読んでください。
{ "amount": "125000", "currency": "XOF", "currencyDecimals": 0 }暗号資産の金額は基本単位
入金はその小数桁数とともに返されます: ビットコインは8、USDTは6、イーサは18。同じティッカーがネットワークによって異なる小数桁数を持つことがあります: 記憶ではなくフィールドを信頼してください。
{ "deposit": { "amount": "1000.000000", "ticker": "USDT", "decimals": 6 } }タイムスタンプ
日付はISO 8601 UTCです。意図的な例外が1つ: 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の制限は、その機能と同じくらい知っておくと役立ちます。
- 第三者への支払いはありません。受取人名は注文者の確認済みIDと一致する必要があり、送金手段は現在、口座に対して名前をチェックします。
- APIによるアカウント作成や本人確認はありません。これらのステップは、ユーザーが受け入れる内容を確認できるフローで行われます。
- URLパラメータにキーはありません。URLはログ、リファラーヘッダー、履歴に残ります: そのように渡されたキーは失効させるキーです。
- 当社側での見積もりのキャッシュはありません。応答には Cache-Control: no-store が含まれ、統合はそれを回避すべきではありません: キャッシュされた見積もりは、確定として提示される古い価格です。
- 暗号資産購入エンドポイントはありません。サービスは一方向、デジタル資産から法定通貨へ実行されます。