変更履歴
Data API とそのコントラクトに対するすべての変更を新しい順に掲載しています。バージョン番号はバージョニングと非推奨化のポリシーに従います。
POST /webhooks と POST /webhooks/{id}/test は、プランのバースト制限に加えて、アカウントごとに毎分 5 リクエストの上限を共有するようになりました。上限を超えたリクエストには Retry-After 付きの 429 rate_limited が返されます。テストイベントはリトライなしで 1 回だけ送信されるようになりました。その他の配信は引き続き、バックオフを挟んで最大 3 回試行されます。これは不正利用対策の制限で、どのプランの月間クォータとバースト制限も変えません。こうした制限を即時に適用できるよう、バージョニングと非推奨化のポリシーは同じ日に改定されました。それまでは、プランに付与されたレート制限の引き下げは、どれも 6 か月の非推奨化のタイムラインに従っていました。この 2 つのエンドポイントでは、X-RateLimit-* ヘッダーは 2 つの制限のうち残りリクエスト数が少ない方を示します。
POST /webhooks は URL のホスト名を名前解決しなくなりました。URL が https でない場合、認証情報を含む場合、またはホストが非公開の IP アドレスの場合は、引き続き 422 を返します。名前解決できないホスト名や非公開アドレスに解決されるホスト名は、これまで 422 でしたが、現在は 201 で受け付けられ、アカウントあたり 5 エンドポイントの上限に数えられます。そのエンドポイントへの配信はリトライなしで毎回失敗し、理由は GET /webhooks/{id}/deliveries の error に示され、10 回連続で配信に失敗するとエンドポイントは無効になります。エンドポイントを作成したら、POST /webhooks/{id}/test でテストイベントを送信し、配信ログで到達できることを確認してください。
GET /usage の endpoints[].endpoint は、リクエストされたパスではなくルートテンプレートを示すようになりました(api/v1/coins/bitcoin ではなく api/v1/coins/{slug})。そのため、slug や id ごとではなく、エンドポイントごとに 1 行になります。現在の請求期間中にそれ以前に記録されたリクエストは元のパスのままなので、期間が終わるまでは両方の形式が表示されることがあります。
GET /exchanges/{slug} と GET /exchanges/{slug}/trust-score は、Data API のローンチ以来、すべての取引所について 500 で失敗していました。現在はどちらも応答します。パラメーターとレスポンスのフィールドに変更はなく、ランクのない取引所では score と breakdown が null として返されます。
公開している OpenAPI コントラクトは、null になりうるすべてのフィールドを null 許容として示し、小数値(GET /calculators/dca の invested やインジケーターの値など)を数値型として定義するようになりました。共通フィールドの logo、last_updated、ページングの from/to はすべてのエンドポイントで、コインの name と price はすべてのコイン一覧エンドポイントと価格エンドポイントで null 許容です。また、DCA の series を配列型として定義し、GET /coins/{slug}/markets、GET /coins/losers、GET /global/history/{metric}、GET /sentiment/altseason のレスポンスを記載し、GET /sentiment/altseason の days を 1–365 と記載し(0 はこれまでも常に拒否されていました。現在の値を取得するには省略してください)、エラースキーマに endpoint_unavailable(503)と http_error のコードを列挙しています。リクエストやレスポンス自体は変わっていません - 変わったのは記述方法だけです。
認証の失敗は、これまで IP ごとに毎分 30 回までに制限されており、それを超えるとその IP の背後にあるすべてのキーが 429 を受け取っていました。現在は、1 つのキーが 1 つの IP から失敗できるのは毎分 30 回まで、1 つの IP 全体では 300 回までで、直近約 15 分以内に認証に成功したキーは IP 単位の上限でブロックされません。また、キーなしのリクエストはカウントされずに 401 を返します。ブロックされたリクエストには Retry-After 付きの 429 rate_limited が返されます。
パスに末尾のスラッシュ、重複したスラッシュ、または先頭の /index.php を含む GET と HEAD リクエストは、そのまま処理されるのではなく、正規の URL への 301 を受け取るようになりました - たとえば /api/v1/coins/ から /api/v1/coins へ。その他のメソッドは影響を受けません。
GET /calculators/compound-interest は期間を複利期間の整数倍に丸めていたため、複利期間の途中で終わる期間は長すぎたり短すぎたりする形でシミュレーションされていました。annually 複利で 6 か月の場合は丸 1 年分(入金 12 回と 1 年分の利息)が計算され、5 か月の場合は 1 期間も計算されませんでした(入金も利息もなし)。現在は整数分の期間をこれまでどおり計算し、最後の端数期間には按分で利息を付け(端数分は単利)、期間内のすべての入金を計上します。期間が複利期間の整数倍の場合、結果は変わりません。パラメーターとレスポンスのフィールドに変更はありません。
API とそのドキュメントは rate を複利期間あたりの金利として扱っていましたが、ウェブサイトの計算機とその使い方ガイドは年利を使用していました。GET /calculators/compound-interest は rate を各複利期間にそのまま適用していたため、年 5% を毎月複利にすると毎月 5% で増えていました。現在の rate は年間の名目金利で、各期間には rate を 1 年あたりの期間数で割った金利が適用されます(年 5% を毎月複利にすると毎月 5/12%)。この旨は meta.note にも記載されています。パラメーターとレスポンスのフィールドに変更はありません。annually 以外のすべての複利頻度で結果が変わります。また、contribution_frequency と compound_frequency がどちらも daily、またはどちらも weekly の場合は、浮動小数点の丸め誤差で入金が遅れたり抜け落ちたりしなくなったため、duration_unit=months では total_contributions が入金 1 回分多くなる場合があります。既存のパラメーターの意味が変わります。以前の結果を再現するには、rate に 1 年あたりの複利期間数を掛けてください。
すべての Fear & Greed 値に、score と並んで index が含まれるようになりました。これは Bitculator の表示とまったく同じ 0〜100 の Fear & Greed 指数です(0〜19 極度の恐怖、20〜39 恐怖、40〜59 中立、60〜79 強欲、80〜100 極度の強欲)。表示にはこちらを使ってください。score は変更なしで、index の元になる −100〜+100 の生の合成値です。対象は GET /sentiment/fear-greed(メインの値と intervals の各エントリ)、GET /global の fear_greed、GET /global/heatmap の meta.fear_greed です。追加のみで、既存フィールドは変更されていません。
GET /coins/{slug} は、最大供給量のないコイン(上限のない Solana や Ethereum など)で fully_diluted_valuation を 0 として返していました。現在は総供給量で代替し、どちらも不明な場合は null を返します。これは OpenAPI コントラクトで既に記載されていた仕様です。
まだスコアのない Fear & Greed の値は score: 0 として報告されていました。現在は GET /sentiment/fear-greed で null となり、GET /global の fear_greed と GET /global/heatmap の meta.fear_greed も同様です。
循環供給量のないコインでは marketcap と dominance が null になることがあり、ランク外の取引所では信頼スコアの score と breakdown が null になります。選択したメトリクスの現在値がコインにない場合、POST /alarms は 422 を返します。/coins/recently-added と /wallets/timeline が sort に従うようになりました。/coins/gainers と /coins/losers は変動率そのもので並べ替えられ(以前は実質的に時価総額順)、losers からは 0.00 のコインが除外されます。昇順の並べ替えでは null 値が最後になります。/prices は、曖昧なシンボルを最上位ランクのアクティブなコインに解決します。OpenAPI コントラクトは null になりうるマーケット項目を示し、24 時間出来高を数値型として定義します。
GET /insights、GET /insights/{id}、GET /coins/{slug}/insights のすべての洞察に、generated_by: "ai" と、それを書いた model が含まれるようになりました。追加のみで、既存フィールドは変更されていません。
取引所 Huobi は HTX に名称変更され、スラッグは huobi から htx に変わりました。API はスラッグのリダイレクトに従わないため、/exchanges/huobi は現在 404 を返します。CoinEx は非アクティブに設定され、返されなくなりました。
コインの変動率が 15 分間再計算されていない場合、change_24h と change_7d は古い値動きを示す代わりに null になるようになりました。9 月 18 日からは change_rank_24h と change_rank_7d にも同じルールが適用されます。
公開しているコントラクトに、メディアタイプレベルの例、すべての 4xx/5xx レスポンスから参照される共通エラースキーマ、キー付き呼び出しが返しうる 401・429・500 レスポンス、すべての成功レスポンスに付く X-RateLimit-* と X-Quota-* ヘッダー、POST /webhooks のコールバックとしての alarm.triggered 配信、そして連絡先・ライセンス・利用規約のメタデータが加わりました。リクエストやレスポンス自体は変わっていません - 変わったのは記述方法だけです。
新規: /apis.json、/.well-known/api-catalog(RFC 9727)、/.well-known/security.txt(RFC 9116)、共通レスポンス形状の JSON Schema バンドル、JSON 版を備えた公開ステータスページ、この変更履歴、そしてバージョニングと非推奨化のポリシー。
MCP のツール呼び出しは、Data API プランの月間クォータとバースト制限にカウントされなくなりました。この日以降、MCP サーバーは専用のキーとプランを持ちます。GET /usage の tokens[].kind は mcp になることがあり、クォータ超過時の 429 のメッセージは「Your Data API plan has reached its monthly request limit.」となりました(以前は埋め込みプランと記載されていました)。
開発者コンソールで Data API キーを作成またはローテーションするには、認証済みのメールアドレスが必要になりました。ウォレットでのサインインなど、メールアドレスのないアカウントは対象外です。キーの作成は毎分 10 回までに制限されます。既存のキーは引き続き使用できます。
GET /tickers、GET /pairs、GET /pairs/{id}、GET /coins/{slug}/markets、GET /exchanges/{slug}/tickers の volume_usd は整数として保存されていたため、セント単位が失われ、$0.50 未満のマーケットは 0 と表示されていました。現在は出来高を小数点以下 2 桁まで保持し、それをもとに算出される合計値にも丸めの影響が及ばなくなりました。
GET /coins/{slug}/sparkline と GET /exchanges/{slug}/sparkline の change は、30d から 365d では比率(0.05 は +5% を意味)でしたが、24h と 7d ではパーセントでした。現在はすべての期間でパーセント(1.25 は +1.25% を意味)となるため、長い期間の値は以前の 100 倍になり、0.5% 未満の値動きが 0 に丸められることもなくなりました。
両方のスパークラインエンドポイントで、low と high は別のウィンドウで作成されたサマリーから取得されていたため、points と矛盾することがありました - たとえば系列内の価格より高い low などです。現在は、points のサンプリング元となる期間の実際の最安値と最高値です。
GET /wallets、/wallets/timeline、/wallets/compare、/wallets/{slug}、/wallets/{slug}/assets は、未リリース(vaporware)ステータスのウォレットも返すようになったため、status がその値をとることがあります。
洞察内のソースの title と excerpt に、í のような生の HTML エンティティが含まれなくなりました。
一度も編集されていない記事では、GET /articles と GET /articles/{slug} の updated_at は、閲覧数や投票など、何らかの理由でレコードが最後に変更された時刻を示していました。現在は最後の編集上の更新を示し、それがない場合は公開日になります。また、POST /articles/{slug}/feedback によって変わることはなくなりました。
洞察に sentiment が含まれるようになりました: bullish、bearish、sheepish、または分類されていない場合は null。
TypeScript、Python、PHP、Go、Rust、Java、C#、C++ のクライアント。いずれも同じトランスポートコアの上ですべてのエンドポイントをカバーします: Bearer 認証、エンベロープの展開、X-Quota-* の取得、429 と 5xx でのリトライ、型付きエラー、ページング。
エンドポイントでプランを必須にできるようになりました。導入時点では、GET /sentiment/indicators には Pro が、GET /sentiment/bull-bear、GET /sentiment/altseason、GET /global、GET /global/heatmap、GET /global/history/{metric} には Starter が必要でした。プラン外の呼び出しは 403 plan_required を返し、details.required_plan にアンロックに必要なプランが示されます。クォータは消費しません。
6 つの /liquidations エンドポイントはすべてのプランで停止されました: 503 endpoint_unavailable(「This endpoint is temporarily unavailable.」)を返し、クォータは消費しません。
Pro プランの月間クォータは 500,000 リクエストから 250,000 リクエストになりました。
汎用の GET /coins/{slug}/indicators/{family} は、同じパスで個別にドキュメント化された 13 のエンドポイントになりました: rsi、stoch-rsi、sma、cci、mfi、williams-r、price-volatility、volume-volatility、macd、obv、adx、vwap、cmf。既存の呼び出しに変更はありません。未知のインジケーター名には、有効な名前の一覧を含まない単純な 404 が返されるようになりました。
ローンチ時、Data API の呼び出しと埋め込みウィジェットのリクエストは、埋め込みプランに紐づく 1 つの月間プールから消費していました。現在 Data API は、独自の Free・Starter・Pro プラン、サブスクリプション、月間クォータを持ち、請求期間も独自です: Free では UTC の暦月、有料プランでは更新日が起点となります。GET /ping と GET /usage は Data API のプランを報告し、/usage は Data API の呼び出しのみをカウントします。分離の時点で制限は変わっていません。
リファレンスは /{locale}/documentation から /{locale}/documentation/api/v1 へ、Postman コレクションと OpenAPI YAML は /documentation.postman と /documentation.openapi から /documentation/api/v1.postman と /documentation/api/v1.openapi へ移動しました。旧パスはリダイレクトなしで削除されました。/api/v1/openapi.json は変わりません。
ローンチ: 15 グループにわたる 73 オペレーション - コイン、価格、マーケット、取引所、ウォレット、グローバル、センチメント、インジケーター、清算、換算、計算ツール、編集コンテンツ、アラーム、Webhook、メタ。data-api 権限付きの Bearer キー、{ data, meta } エンベロープ、10 進文字列の精度、X-Quota-* ヘッダー、署名付き Webhook。Data API の呼び出しと埋め込みウィジェットのリクエストは埋め込みプランのもとで 1 つの月間クォータを共有し、長期のインジケーターウィンドウには Starter が必要でした。
非推奨化は、削除の少なくとも 6 か月前に、このページとすべてのキー所有者へのメールで告知します - 非推奨化ポリシーをご覧ください。機械可読インデックス /apis.json は、最新エントリーの日付を modified スタンプとして保持します。