Nhật ký thay đổi
Mọi thay đổi của Data API và hợp đồng của nó, mới nhất trước. Số phiên bản tuân theo chính sách phiên bản và ngừng hỗ trợ.
POST /webhooks và POST /webhooks/{id}/test giờ dùng chung giới hạn 5 request mỗi phút cho mỗi tài khoản, bên cạnh giới hạn burst của gói. Các request vượt giới hạn nhận 429 rate_limited kèm Retry-After. Sự kiện thử nghiệm giờ chỉ được gửi một lần, không thử lại; các lần gửi khác vẫn được thử tối đa 3 lần, với backoff giữa các lần thử. Đây là giới hạn chống lạm dụng và giữ nguyên hạn ngạch hàng tháng cùng giới hạn burst của mọi gói. Chính sách phiên bản và ngừng hỗ trợ đã được thay đổi trong cùng ngày để những giới hạn như vậy có thể được áp dụng ngay; trước đó, việc hạ bất kỳ giới hạn tốc độ nào mà một gói đã có đều tuân theo lộ trình ngừng hỗ trợ sáu tháng. Trên hai endpoint này, các header X-RateLimit-* cho biết giới hạn nào trong hai giới hạn còn ít request hơn.
POST /webhooks không còn phân giải hostname trong URL. Endpoint này vẫn trả về 422 khi URL không dùng https, chứa thông tin đăng nhập hoặc có host là địa chỉ IP không công khai. Hostname không phân giải được, hoặc phân giải ra địa chỉ không công khai, trước đây nhận 422; giờ được chấp nhận với 201 và được tính vào giới hạn 5 endpoint mỗi tài khoản. Khi đó, mọi lần gửi tới endpoint này đều thất bại mà không thử lại, error trên GET /webhooks/{id}/deliveries cho biết lý do, và 10 lần gửi thất bại liên tiếp sẽ vô hiệu hóa endpoint. Sau khi tạo endpoint, hãy gửi một sự kiện thử nghiệm bằng POST /webhooks/{id}/test và xem nhật ký gửi để chắc chắn endpoint truy cập được.
endpoints[].endpoint trên GET /usage giờ là mẫu route thay vì đường dẫn được request: api/v1/coins/{slug} thay vì api/v1/coins/bitcoin. Nhờ vậy mỗi endpoint chỉ có một dòng thay vì một dòng cho mỗi slug hoặc id. Các request được ghi nhận trước đó trong kỳ thanh toán hiện tại vẫn giữ đường dẫn của chúng, nên cả hai dạng có thể xuất hiện cho đến khi kỳ kết thúc.
GET /exchanges/{slug} và GET /exchanges/{slug}/trust-score đã thất bại với 500 cho mọi sàn giao dịch kể từ khi Data API ra mắt. Giờ đây cả hai đều phản hồi; tham số và các trường phản hồi không đổi, và với sàn giao dịch chưa được xếp hạng, score và breakdown được trả về là null.
Hợp đồng OpenAPI đã công bố nay đánh dấu nullable cho mọi trường có thể là null và định kiểu các giá trị có phần thập phân là số (ví dụ invested trên GET /calculators/dca và các giá trị chỉ báo); các trường dùng chung logo, last_updated và from/to của phân trang là nullable trên mọi endpoint, name và price của coin cũng vậy trên mọi endpoint danh sách coin và endpoint giá. Hợp đồng cũng định kiểu series của DCA là mảng, mô tả phản hồi của GET /coins/{slug}/markets, GET /coins/losers, GET /global/history/{metric} và GET /sentiment/altseason, ghi rõ days trên GET /sentiment/altseason là 1–365 (0 vốn luôn bị từ chối; hãy bỏ qua tham số này để lấy giá trị hiện tại), và liệt kê các mã endpoint_unavailable (503) và http_error trong schema lỗi. Không có request hay phản hồi nào thay đổi - chỉ thay đổi cách mô tả chúng.
Trước đây, xác thực thất bại bị giới hạn ở 30 lần mỗi phút cho mỗi IP, sau đó mọi key phía sau IP đó đều nhận 429. Giờ đây một key có thể thất bại 30 lần mỗi phút từ một IP và một IP có thể thất bại 300 lần, các key đã xác thực trong khoảng 15 phút gần nhất không bị giới hạn IP chặn, và request không có key trả về 401 mà không bị tính. Các request bị chặn nhận 429 rate_limited kèm Retry-After.
Các request GET và HEAD có đường dẫn kết thúc bằng dấu gạch chéo, chứa dấu gạch chéo kép hoặc bắt đầu bằng /index.php nay nhận 301 tới URL sạch thay vì được phục vụ - ví dụ từ /api/v1/coins/ tới /api/v1/coins. Các phương thức khác không bị ảnh hưởng.
GET /calculators/compound-interest đã làm tròn thời hạn thành số kỳ ghép lãi nguyên, nên thời hạn kết thúc giữa một kỳ bị mô phỏng quá dài hoặc quá ngắn: 6 tháng với ghép lãi annually chạy trọn một năm (12 lần nạp tiền và lãi của cả năm), còn 5 tháng không chạy kỳ nào (không nạp tiền, không có lãi). Giờ đây các kỳ trọn vẹn vẫn được tính như trước, kỳ chưa trọn cuối cùng được tính lãi theo tỷ lệ (lãi đơn cho phần lẻ) và mọi lần nạp tiền trong thời hạn đều được tính. Kết quả không đổi khi thời hạn là số nguyên kỳ ghép lãi; tham số và các trường phản hồi không đổi.
API và tài liệu của nó từng coi rate là lãi suất mỗi kỳ ghép lãi, trong khi công cụ tính trên trang web và hướng dẫn sử dụng dùng lãi suất hằng năm. GET /calculators/compound-interest từng áp dụng toàn bộ rate cho mỗi kỳ ghép lãi, nên 5% ghép lãi hằng tháng tăng như 5% mỗi tháng. Giờ đây rate là lãi suất danh nghĩa hằng năm: mỗi kỳ nhận rate chia cho số kỳ trong năm (5% ghép lãi hằng tháng nghĩa là 5/12% mỗi tháng), như meta.note hiện nêu rõ. Tham số và các trường phản hồi không đổi; kết quả thay đổi với mọi tần suất ghép lãi trừ annually. Ngoài ra, khi contribution_frequency và compound_frequency cùng là daily hoặc cùng là weekly, các khoản nạp không còn bị trễ hay bị bỏ sót do sai số làm tròn số dấu phẩy động, nên total_contributions có thể cao hơn một khoản nạp khi dùng duration_unit=months. Điều này thay đổi ý nghĩa của một tham số hiện có: để tái tạo kết quả trước đây, hãy nhân rate của bạn với số kỳ ghép lãi mỗi năm.
Mỗi giá trị Fear & Greed giờ có thêm index bên cạnh score: chỉ số Fear & Greed 0–100 đúng như Bitculator hiển thị (0–19 cực kỳ sợ hãi, 20–39 sợ hãi, 40–59 trung lập, 60–79 tham lam, 80–100 cực kỳ tham lam) — hãy dùng nó để hiển thị. score không đổi: đây là giá trị tổng hợp thô −100…+100 mà index được suy ra từ đó. Áp dụng cho GET /sentiment/fear-greed (giá trị chính và mọi mục trong intervals), fear_greed trên GET /global và meta.fear_greed trên GET /global/heatmap. Chỉ bổ sung; không trường hiện có nào thay đổi.
GET /coins/{slug} từng trả về fully_diluted_valuation là 0 cho các coin không có nguồn cung tối đa (ví dụ Solana và Ethereum, có nguồn cung không giới hạn). Giờ đây giá trị dùng tổng cung thay thế và là null khi không biết cả hai, như hợp đồng OpenAPI đã ghi nhận.
Một giá trị Fear & Greed chưa có điểm từng được báo là score: 0. Giờ đây nó là null trên GET /sentiment/fear-greed, và fear_greed trên GET /global cùng meta.fear_greed trên GET /global/heatmap cũng vậy.
marketcap và dominance có thể là null với coin không có nguồn cung lưu hành, còn score và breakdown của điểm tin cậy là null với sàn giao dịch chưa được xếp hạng. POST /alarms trả về 422 khi coin không có giá trị hiện tại cho chỉ số đã chọn. /coins/recently-added và /wallets/timeline giờ tuân theo sort. /coins/gainers và /coins/losers được sắp xếp theo chính mức thay đổi (trước đây thực chất theo vốn hóa thị trường), và losers loại trừ các coin ở mức 0.00. Sắp xếp tăng dần trả về giá trị null ở cuối. /prices quy một ký hiệu mơ hồ về coin đang hoạt động có thứ hạng cao nhất. Hợp đồng OpenAPI đánh dấu các trường thị trường có thể là null và định kiểu khối lượng 24h là số.
Mọi nhận định trên GET /insights, GET /insights/{id} và GET /coins/{slug}/insights nay mang generated_by: "ai" và model đã viết nhận định đó. Chỉ bổ sung; không trường hiện có nào thay đổi.
Sàn giao dịch Huobi đã đổi tên thành HTX và slug đổi từ huobi sang htx; API không theo các chuyển hướng slug, nên /exchanges/huobi nay trả về 404. CoinEx đã được chuyển sang trạng thái không hoạt động và không còn được trả về.
change_24h và change_7d nay là null khi biến động của một coin chưa được tính lại trong 15 phút, thay vì hiển thị một biến động đã lỗi thời. Từ ngày 18 tháng 9, điều tương tự áp dụng cho change_rank_24h và change_rank_7d.
Hợp đồng đã công bố nay mang theo ví dụ ở cấp media type, một schema lỗi dùng chung được tham chiếu từ mọi phản hồi 4xx/5xx, các phản hồi 401, 429 và 500 mà mọi lệnh gọi có key đều có thể trả về, các header X-RateLimit-* và X-Quota-* trên mọi phản hồi thành công, lần gửi alarm.triggered dưới dạng callback trên POST /webhooks, cùng siêu dữ liệu về liên hệ, giấy phép và điều khoản. Không có request hay phản hồi nào thay đổi - chỉ thay đổi cách mô tả chúng.
Mới: /apis.json, /.well-known/api-catalog (RFC 9727), /.well-known/security.txt (RFC 9116), một gói JSON Schema của các cấu trúc phản hồi dùng chung, một trang trạng thái công khai kèm bản JSON song song, nhật ký thay đổi này, và chính sách phiên bản và ngừng hỗ trợ.
Các lệnh gọi công cụ MCP không còn bị tính vào hạn ngạch hàng tháng và giới hạn burst của gói Data API; kể từ ngày này máy chủ MCP có key và gói riêng. tokens[].kind trên GET /usage giờ có thể là mcp, và thông báo 429 khi vượt hạn ngạch là "Your Data API plan has reached its monthly request limit." (trước đây nhắc đến gói embed).
Việc tạo hoặc xoay vòng một Data API key trong bảng điều khiển nhà phát triển nay yêu cầu địa chỉ email đã xác minh; các tài khoản không có email, chẳng hạn tài khoản đăng nhập bằng ví, được miễn. Việc tạo key bị giới hạn 10 lần mỗi phút. Các key hiện có vẫn tiếp tục hoạt động.
volume_usd trên GET /tickers, GET /pairs, GET /pairs/{id}, GET /coins/{slug}/markets và GET /exchanges/{slug}/tickers từng được lưu dưới dạng số nguyên, nên phần xu bị mất và các thị trường dưới 0,50 USD hiển thị 0. Khối lượng nay giữ hai chữ số thập phân, và các tổng được tính từ chúng không còn kế thừa sai số làm tròn.
change trên GET /coins/{slug}/sparkline và GET /exchanges/{slug}/sparkline từng là một phân số cho 30d đến 365d (0,05 nghĩa là +5%) nhưng là phần trăm cho 24h và 7d. Giờ đây nó là phần trăm cho mọi khoảng thời gian (1.25 nghĩa là +1,25%), nên giá trị của các khoảng dài hơn lớn gấp 100 lần trước đây, và các biến động dưới 0,5% không còn bị làm tròn về 0.
Trên cả hai endpoint sparkline, low và high từng lấy từ một bản tóm tắt được tính trên một khung thời gian khác và có thể mâu thuẫn với points - ví dụ một low cao hơn các mức giá trong chuỗi. Giờ đây chúng là các giá trị cực trị thực của khoảng thời gian mà points được lấy mẫu.
GET /wallets, /wallets/timeline, /wallets/compare, /wallets/{slug} và /wallets/{slug}/assets nay cũng trả về các ví có trạng thái vaporware, nên status có thể mang giá trị đó.
title và excerpt của nguồn bên trong nhận định không còn chứa các thực thể HTML thô như í.
Với một bài viết chưa từng được chỉnh sửa, updated_at trên GET /articles và GET /articles/{slug} từng hiển thị lần cuối bản ghi thay đổi vì bất kỳ lý do gì, như số lượt xem hay một lượt bình chọn. Giờ đây nó hiển thị lần chỉnh sửa biên tập cuối cùng, nếu không có thì dùng ngày xuất bản, và POST /articles/{slug}/feedback không còn làm thay đổi nó.
Nhận định nay có thêm sentiment: bullish, bearish, sheepish, hoặc null khi chưa được phân loại.
Các client TypeScript, Python, PHP, Go, Rust, Java, C# và C++, mỗi client bao phủ mọi endpoint trên cùng một lõi truyền tải: xác thực Bearer, bóc tách envelope, ghi nhận X-Quota-*, thử lại khi gặp 429 và 5xx, lỗi có kiểu và phân trang.
Endpoint nay có thể yêu cầu một gói. Khi mới áp dụng, GET /sentiment/indicators yêu cầu Pro, còn GET /sentiment/bull-bear, GET /sentiment/altseason, GET /global, GET /global/heatmap và GET /global/history/{metric} yêu cầu Starter. Lệnh gọi ngoài phạm vi gói của bạn trả về 403 plan_required với details.required_plan nêu tên gói mở khóa nó, và không tiêu tốn hạn ngạch.
Sáu endpoint /liquidations đã bị tắt trên mọi gói: chúng trả về 503 endpoint_unavailable ("This endpoint is temporarily unavailable.") và không tiêu tốn hạn ngạch.
Hạn ngạch hàng tháng của gói Pro giảm từ 500.000 xuống 250.000 request.
Endpoint chung GET /coins/{slug}/indicators/{family} đã trở thành 13 endpoint được mô tả riêng tại cùng các đường dẫn: rsi, stoch-rsi, sma, cci, mfi, williams-r, price-volatility, volume-volatility, macd, obv, adx, vwap và cmf. Các lệnh gọi hiện có không đổi; tên chỉ báo không xác định nay nhận 404 đơn thuần, không kèm danh sách các tên hợp lệ.
Khi ra mắt, các lệnh gọi Data API và request của embed widget dùng chung một quỹ hàng tháng gắn với gói embed. Data API nay có các gói Free, Starter và Pro, thuê bao và hạn ngạch hàng tháng riêng, cùng kỳ thanh toán riêng: tháng dương lịch theo UTC với gói Free, tính từ ngày gia hạn với các gói trả phí. GET /ping và GET /usage báo gói Data API, và /usage chỉ đếm các lệnh gọi Data API. Các giới hạn không đổi khi tách.
Tài liệu tham khảo đã chuyển từ /{locale}/documentation sang /{locale}/documentation/api/v1, còn bộ sưu tập Postman và YAML OpenAPI chuyển từ /documentation.postman và /documentation.openapi sang /documentation/api/v1.postman và /documentation/api/v1.openapi. Các đường dẫn cũ đã bị gỡ bỏ mà không có chuyển hướng; /api/v1/openapi.json không đổi.
Ra mắt: 73 thao tác trên 15 nhóm - coin, giá, thị trường, sàn giao dịch, ví, toàn cầu, tâm lý thị trường, chỉ báo, thanh lý, chuyển đổi, công cụ tính toán, nội dung biên tập, báo động, webhook và meta. Bearer key với quyền data-api, envelope { data, meta }, độ chính xác chuỗi thập phân, các header X-Quota-* và webhook có chữ ký. Các lệnh gọi Data API và request của embed widget dùng chung một hạn ngạch hàng tháng theo gói embed, và các cửa sổ chỉ báo dài hơn yêu cầu Starter.
Việc ngừng hỗ trợ được công bố tại đây và qua email tới mọi chủ sở hữu key ít nhất sáu tháng trước khi gỡ bỏ - xem chính sách ngừng hỗ trợ. Chỉ mục máy đọc được tại /apis.json mang ngày của mục mới nhất làm dấu modified của nó.