บันทึกการเปลี่ยนแปลง
ทุกการเปลี่ยนแปลงของ Data API และสัญญาของมัน เรียงจากใหม่สุดก่อน หมายเลขเวอร์ชันเป็นไปตามนโยบายการกำหนดเวอร์ชันและการเลิกใช้
ตอนนี้ POST /webhooks และ POST /webhooks/{id}/test ใช้ขีดจำกัดร่วมกันที่ 5 คำขอต่อนาทีต่อบัญชี เพิ่มเติมจากขีดจำกัดเบิร์สต์ของแพ็กเกจ คำขอที่เกินขีดจำกัดนี้จะได้รับ 429 rate_limited พร้อม Retry-After อีเวนต์ทดสอบจะถูกส่งเพียงครั้งเดียวโดยไม่ลองใหม่ ส่วนการส่งอื่น ๆ ยังคงพยายามส่งสูงสุด 3 ครั้ง โดยหน่วงเวลาเพิ่มขึ้นระหว่างแต่ละครั้ง นี่เป็นขีดจำกัดเพื่อป้องกันการใช้งานในทางที่ผิด ซึ่งไม่เปลี่ยนโควตารายเดือนและขีดจำกัดเบิร์สต์ของแพ็กเกจใดเลย นโยบายการกำหนดเวอร์ชันและการเลิกใช้ได้รับการแก้ไขในวันเดียวกัน เพื่อให้ขีดจำกัดลักษณะนี้มีผลได้ทันที ก่อนหน้านั้น การลดขีดจำกัดอัตราใด ๆ ที่แพ็กเกจมีอยู่ต้องเป็นไปตามกำหนดเวลาของการเลิกใช้หกเดือน บน endpoint ทั้งสองนี้ เฮดเดอร์ X-RateLimit-* จะแสดงขีดจำกัดที่เหลือคำขอน้อยกว่าในสองขีดจำกัดนี้
ตอนนี้ POST /webhooks ไม่ค้นหาชื่อโฮสต์ใน URL ผ่าน DNS อีกต่อไป แต่ยังคงส่งคืน 422 เมื่อ URL ไม่ได้ใช้ https มีข้อมูลรับรอง หรือใช้ที่อยู่ IP ที่ไม่ใช่สาธารณะเป็นโฮสต์ ชื่อโฮสต์ที่ค้นหาไม่พบหรือชี้ไปยังที่อยู่ที่ไม่ใช่สาธารณะเคยได้รับ 422 แต่ตอนนี้จะได้รับการยอมรับด้วย 201 และนับรวมในขีดจำกัด 5 endpoint ต่อบัญชี จากนั้นการส่งทุกครั้งไปยัง endpoint นั้นจะล้มเหลวโดยไม่ลองใหม่ สาเหตุจะแสดงใน error ของ GET /webhooks/{id}/deliveries และเมื่อส่งล้มเหลวติดกัน 10 ครั้ง endpoint จะถูกปิดใช้งาน หลังสร้าง endpoint แล้ว ให้ส่งอีเวนต์ทดสอบด้วย POST /webhooks/{id}/test และตรวจสอบบันทึกการส่งว่าเข้าถึงได้
ตอนนี้ endpoints[].endpoint ใน GET /usage แสดงเทมเพลตเส้นทางแทนพาธที่ร้องขอ เช่น api/v1/coins/{slug} แทน api/v1/coins/bitcoin ทำให้แต่ละ endpoint มีเพียงแถวเดียว แทนที่จะมีหนึ่งแถวต่อ slug หรือ id คำขอที่บันทึกไว้ก่อนหน้านี้ในรอบการเรียกเก็บเงินปัจจุบันยังคงใช้พาธเดิม จึงอาจเห็นทั้งสองรูปแบบจนกว่ารอบนั้นจะสิ้นสุด
GET /exchanges/{slug} และ GET /exchanges/{slug}/trust-score ล้มเหลวด้วย 500 กับกระดานเทรดทุกแห่งมาตั้งแต่ Data API เปิดตัว ตอนนี้ทั้งคู่ตอบสนองได้แล้ว พารามิเตอร์และฟิลด์ในการตอบกลับไม่เปลี่ยนแปลง และกระดานเทรดที่ไม่มีอันดับจะส่งคืน score และ breakdown เป็น null
สัญญา OpenAPI ที่เผยแพร่ตอนนี้กำกับทุกฟิลด์ที่อาจเป็น null ว่าเป็น nullable และกำหนดให้ค่าที่มีทศนิยมเป็นตัวเลข (เช่น invested ใน GET /calculators/dca และค่าของอินดิเคเตอร์) ส่วนฟิลด์ร่วม logo, last_updated และ from/to สำหรับการแบ่งหน้าจะเป็น nullable ในทุก endpoint และ name กับ price ของเหรียญก็เป็น nullable ในทุก endpoint รายการเหรียญและ endpoint ราคา นอกจากนี้ยังกำหนดให้ series ของ DCA เป็นอาร์เรย์, อธิบายการตอบกลับของ GET /coins/{slug}/markets, GET /coins/losers, GET /global/history/{metric} และ GET /sentiment/altseason, ระบุช่วงค่าของ days ใน GET /sentiment/altseason เป็น 1–365 (ค่า 0 ถูกปฏิเสธมาโดยตลอด หากต้องการค่าปัจจุบันให้ละเว้นพารามิเตอร์นี้) และแสดงรายการรหัส endpoint_unavailable (503) กับ http_error ในสคีมาข้อผิดพลาด ไม่มีคำขอหรือการตอบกลับใดเปลี่ยนแปลง - เปลี่ยนเพียงวิธีอธิบายเท่านั้น
เดิมการยืนยันตัวตนที่ล้มเหลวถูกจำกัดไว้ที่ 30 ครั้งต่อนาทีต่อ IP หลังจากนั้นทุกคีย์ที่อยู่หลัง IP นั้นจะได้รับ 429 ตอนนี้คีย์หนึ่งล้มเหลวได้ 30 ครั้งต่อนาทีจาก IP เดียว และ IP หนึ่งล้มเหลวได้ 300 ครั้ง คีย์ที่ยืนยันตัวตนสำเร็จในช่วงราว 15 นาทีล่าสุดจะไม่ถูกบล็อกโดยขีดจำกัดของ IP และคำขอที่ไม่มีคีย์จะได้รับ 401 โดยไม่ถูกนับ คำขอที่ถูกบล็อกจะได้รับ 429 rate_limited พร้อม Retry-After
คำขอ GET และ HEAD ที่พาธมีเครื่องหมายทับปิดท้าย มีเครื่องหมายทับซ้อนกันสองตัว หรือขึ้นต้นด้วย /index.php ตอนนี้จะได้รับ 301 ไปยัง URL ที่สะอาดแทนการให้บริการตามเดิม - เช่น จาก /api/v1/coins/ ไปยัง /api/v1/coins เมธอดอื่นไม่ได้รับผลกระทบ
GET /calculators/compound-interest เคยปัดระยะเวลาเป็นจำนวนงวดทบต้นเต็ม ระยะเวลาที่สิ้นสุดกลางงวดจึงถูกจำลองยาวหรือสั้นเกินไป: 6 เดือนที่ทบต้นแบบ annually ถูกคำนวณเต็มหนึ่งปี (ฝากเงิน 12 ครั้งและดอกเบี้ยเต็มปี) ส่วน 5 เดือนไม่ถูกคำนวณเลยแม้แต่งวดเดียว (ไม่มีการฝากเงินและไม่มีดอกเบี้ย) ตอนนี้งวดเต็มยังคำนวณเหมือนเดิม งวดสุดท้ายที่ไม่ครบงวดได้รับดอกเบี้ยตามสัดส่วน (ดอกเบี้ยแบบธรรมดาสำหรับส่วนนั้น) และนับการฝากเงินทุกครั้งที่อยู่ในระยะเวลา ผลลัพธ์จะไม่เปลี่ยนเมื่อระยะเวลาเป็นจำนวนงวดทบต้นเต็ม พารามิเตอร์และฟิลด์ในการตอบกลับไม่เปลี่ยนแปลง
API และเอกสารประกอบเคยถือว่า rate เป็นอัตราต่อรอบการทบต้น ขณะที่เครื่องคำนวณบนเว็บไซต์และคู่มือการใช้งานใช้อัตราต่อปี GET /calculators/compound-interest เคยใช้ rate เต็มจำนวนกับทุกรอบการทบต้น ทำให้ 5% ที่ทบต้นรายเดือนเติบโตเหมือน 5% ต่อเดือน ตอนนี้ rate คืออัตราดอกเบี้ยตามสัญญาต่อปี: แต่ละรอบจะได้รับ rate หารด้วยจำนวนรอบต่อปี (5% ทบต้นรายเดือนจะได้ 5/12% ต่อเดือน) ตามที่ meta.note ระบุไว้แล้ว พารามิเตอร์และฟิลด์ของการตอบกลับไม่เปลี่ยนแปลง ผลลัพธ์จะเปลี่ยนไปในทุกความถี่การทบต้น ยกเว้น annually นอกจากนี้ เมื่อ contribution_frequency และ compound_frequency เป็น daily ทั้งคู่หรือเป็น weekly ทั้งคู่ เงินฝากจะไม่ล่าช้าหรือตกหล่นเพราะการปัดเศษของเลขทศนิยมลอยตัวอีกต่อไป จึงทำให้ total_contributions อาจสูงขึ้นเท่ากับเงินฝากหนึ่งงวดเมื่อใช้ duration_unit=months การเปลี่ยนแปลงนี้เปลี่ยนความหมายของพารามิเตอร์ที่มีอยู่: หากต้องการได้ผลลัพธ์แบบเดิม ให้คูณ rate ของคุณด้วยจำนวนงวดทบต้นต่อปี
ค่า Fear & Greed ทุกค่าตอนนี้มี index คู่กับ score ซึ่งคือดัชนี Fear & Greed 0–100 ตรงตามที่ Bitculator แสดง (0–19 กลัวสุดขีด, 20–39 กลัว, 40–59 เป็นกลาง, 60–79 โลภ, 80–100 โลภสุดขีด) — ใช้ค่านี้สำหรับการแสดงผล score ไม่เปลี่ยนแปลง: เป็นค่าผสมดิบ −100…+100 ที่ใช้คำนวณ index มีผลกับ GET /sentiment/fear-greed (ค่าหลักและทุกรายการใน intervals), fear_greed ใน GET /global และ meta.fear_greed ใน GET /global/heatmap เป็นการเพิ่มเท่านั้น ไม่มีฟิลด์เดิมใดเปลี่ยนแปลง
GET /coins/{slug} เคยส่งคืน fully_diluted_valuation เป็น 0 สำหรับเหรียญที่ไม่มีอุปทานสูงสุด (เช่น Solana และ Ethereum ซึ่งอุปทานไม่มีเพดาน) ตอนนี้จะใช้อุปทานทั้งหมดแทน และเป็น null เมื่อไม่ทราบทั้งสองค่า ตามที่สัญญา OpenAPI ระบุไว้อยู่แล้ว
ค่า Fear & Greed ที่ยังไม่มีคะแนนเคยถูกรายงานเป็น score: 0 ตอนนี้จะเป็น null ใน GET /sentiment/fear-greed เช่นเดียวกับ fear_greed ใน GET /global และ meta.fear_greed ใน GET /global/heatmap
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 และ slug เปลี่ยนจาก huobi เป็น htx API ไม่ติดตามการเปลี่ยนเส้นทางของ slug ดังนั้น /exchanges/huobi จึงส่งคืน 404 แล้ว ส่วน CoinEx ถูกตั้งเป็นไม่ใช้งานและจะไม่ถูกส่งคืนอีกต่อไป
change_24h และ change_7d ตอนนี้จะเป็น null เมื่อการเปลี่ยนแปลงของเหรียญไม่ได้ถูกคำนวณใหม่เป็นเวลา 15 นาที แทนที่จะแสดงการเคลื่อนไหวที่ล้าสมัย ตั้งแต่วันที่ 18 กันยายน กฎเดียวกันนี้ใช้กับ change_rank_24h และ change_rank_7d ด้วย
สัญญาที่เผยแพร่ตอนนี้มีตัวอย่างในระดับ media-type, สคีมาข้อผิดพลาดกลางหนึ่งชุดที่ถูกอ้างอิงจากทุกการตอบกลับ 4xx/5xx, การตอบกลับ 401, 429 และ 500 ที่ทุกการเรียกด้วยคีย์อาจได้รับ, เฮดเดอร์ X-RateLimit-* และ X-Quota-* ในทุกการตอบกลับที่สำเร็จ, การส่ง alarm.triggered ในรูปแบบ callback บน POST /webhooks รวมถึงข้อมูลเมตาด้านการติดต่อ สัญญาอนุญาต และเงื่อนไขการใช้งาน ไม่มีคำขอหรือการตอบกลับใดเปลี่ยนแปลง - เปลี่ยนเพียงวิธีอธิบายเท่านั้น
ใหม่: /apis.json, /.well-known/api-catalog (RFC 9727), /.well-known/security.txt (RFC 9116), ชุด JSON Schema ของรูปแบบการตอบกลับที่ใช้ร่วมกัน, หน้าสถานะสาธารณะพร้อมเวอร์ชัน JSON คู่กัน, บันทึกการเปลี่ยนแปลงฉบับนี้ และนโยบายการกำหนดเวอร์ชันและการเลิกใช้
การเรียกใช้เครื่องมือ MCP ไม่ถูกนับรวมในโควตารายเดือนและขีดจำกัดเบิร์สต์ของแพ็กเกจ Data API อีกต่อไป เนื่องจากเซิร์ฟเวอร์ MCP มีคีย์และแพ็กเกจของตัวเองตั้งแต่วันนั้น tokens[].kind ใน GET /usage ตอนนี้อาจเป็น mcp ได้ และข้อความ 429 เมื่อเกินโควตาจะเป็น "Your Data API plan has reached its monthly request limit." (เดิมระบุว่าเป็นแพ็กเกจ embed)
การสร้างหรือหมุนเวียนคีย์ Data API ในคอนโซลนักพัฒนาตอนนี้ต้องใช้ที่อยู่อีเมลที่ยืนยันแล้ว บัญชีที่ไม่มีอีเมล เช่น บัญชีที่เข้าสู่ระบบด้วยกระเป๋าเงิน ได้รับการยกเว้น การสร้างคีย์จำกัดไว้ที่ 10 ครั้งต่อนาที คีย์ที่มีอยู่ยังใช้งานได้ตามเดิม
volume_usd ใน GET /tickers, GET /pairs, GET /pairs/{id}, GET /coins/{slug}/markets และ GET /exchanges/{slug}/tickers เคยถูกจัดเก็บเป็นจำนวนเต็ม ทำให้หลักเซนต์หายไป และตลาดที่ต่ำกว่า $0.50 แสดงเป็น 0 ตอนนี้วอลุ่มเก็บทศนิยมสองตำแหน่ง และยอดรวมที่คำนวณจากวอลุ่มเหล่านี้จะไม่ได้รับผลจากการปัดเศษอีกต่อไป
change ใน GET /coins/{slug}/sparkline และ GET /exchanges/{slug}/sparkline เคยเป็นเศษส่วนสำหรับ 30d ถึง 365d (0.05 หมายถึง +5%) แต่เป็นเปอร์เซ็นต์สำหรับ 24h และ 7d ตอนนี้เป็นเปอร์เซ็นต์ในทุกช่วงเวลา (1.25 หมายถึง +1.25%) ค่าของช่วงเวลาที่ยาวกว่าจึงมากกว่าเดิม 100 เท่า และการเคลื่อนไหวที่ต่ำกว่า 0.5% จะไม่ถูกปัดเป็น 0 อีกต่อไป
ใน endpoint sparkline ทั้งสองตัว low และ high เคยมาจากสรุปที่สร้างบนช่วงเวลาอื่น และอาจขัดแย้งกับ points - เช่น low ที่สูงกว่าราคาบางจุดในชุดข้อมูล ตอนนี้ทั้งสองค่าคือจุดต่ำสุดและสูงสุดที่แท้จริงของช่วงเวลาที่ใช้สุ่มตัวอย่าง points
GET /wallets, /wallets/timeline, /wallets/compare, /wallets/{slug} และ /wallets/{slug}/assets ตอนนี้ส่งคืนกระเป๋าเงินที่มีสถานะ vaporware ด้วย ดังนั้น status จึงอาจมีค่านี้ได้
title และ excerpt ของแหล่งที่มาภายในข้อมูลเชิงลึกจะไม่มี HTML entity ดิบ เช่น í อีกต่อไป
สำหรับบทความที่ไม่เคยถูกแก้ไข updated_at ใน GET /articles และ GET /articles/{slug} เคยแสดงเวลาที่ระเบียนเปลี่ยนแปลงครั้งล่าสุดด้วยเหตุผลใดก็ตาม เช่น จำนวนการเข้าชมหรือการโหวต ตอนนี้จะแสดงการแก้ไขเนื้อหาครั้งล่าสุด หากไม่มีจะใช้วันที่เผยแพร่แทน และ POST /articles/{slug}/feedback จะไม่ทำให้ค่านี้เปลี่ยนอีกต่อไป
ข้อมูลเชิงลึกตอนนี้มี sentiment: bullish, bearish, sheepish หรือ null เมื่อยังไม่ได้จัดประเภท
ไคลเอนต์ TypeScript, Python, PHP, Go, Rust, Java, C# และ C++ แต่ละตัวครอบคลุมทุก endpoint บนแกนการรับส่งข้อมูลเดียวกัน ได้แก่ การยืนยันตัวตนแบบ Bearer, การแกะ envelope, การเก็บค่า X-Quota-*, การลองใหม่เมื่อเจอ 429 และ 5xx, ข้อผิดพลาดแบบมีชนิดข้อมูล และการแบ่งหน้า
ตอนนี้ endpoint อาจกำหนดให้ต้องมีแพ็กเกจได้ เมื่อเริ่มใช้งาน 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 ที่ระบุแพ็กเกจซึ่งปลดล็อกการเรียกนั้น และจะไม่นับรวมในโควตา
endpoint /liquidations ทั้งหกตัวถูกปิดในทุกแพ็กเกจ: จะส่งคืน 503 endpoint_unavailable ("This endpoint is temporarily unavailable.") และไม่นับรวมในโควตา
โควตารายเดือนของแพ็กเกจ Pro ลดจาก 500,000 เหลือ 250,000 คำขอ
GET /coins/{slug}/indicators/{family} แบบทั่วไปถูกแยกเป็น endpoint ที่มีเอกสารแยกกัน 13 ตัวบนพาธเดิม: rsi, stoch-rsi, sma, cci, mfi, williams-r, price-volatility, volume-volatility, macd, obv, adx, vwap และ cmf การเรียกที่มีอยู่ไม่เปลี่ยนแปลง ส่วนชื่ออินดิเคเตอร์ที่ไม่รู้จักตอนนี้จะได้รับ 404 ธรรมดาโดยไม่มีรายการชื่อที่ใช้ได้
เมื่อเปิดตัว การเรียก Data API และคำขอวิดเจ็ตฝังใช้โควตารายเดือนก้อนเดียวกันที่ผูกกับแพ็กเกจ embed ตอนนี้ Data API มีแพ็กเกจ Free, Starter และ Pro การสมัครสมาชิก และโควตารายเดือนของตัวเอง พร้อมรอบการเรียกเก็บเงินของตัวเอง: เดือนตามปฏิทินในเวลา UTC สำหรับ Free และยึดตามวันต่ออายุสำหรับแพ็กเกจแบบชำระเงิน 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 ไม่เปลี่ยนแปลง
เปิดตัว: 73 การทำงานใน 15 กลุ่ม - เหรียญ ราคา ตลาด กระดานเทรด กระเป๋าเงิน ภาพรวมตลาด ความรู้สึกตลาด อินดิเคเตอร์ การบังคับขาย การแปลงค่า เครื่องคำนวณ บทความ การเตือน webhook และเมตา พร้อมคีย์แบบ Bearer ที่มีสิทธิ์ data-api, envelope { data, meta }, ความแม่นยำแบบสตริงทศนิยม, เฮดเดอร์ X-Quota-* และ webhook ที่ลงลายเซ็น การเรียก Data API และคำขอวิดเจ็ตฝังใช้โควตารายเดือนร่วมกันภายใต้แพ็กเกจ embed และช่วงเวลาของอินดิเคเตอร์ที่ยาวขึ้นต้องใช้ Starter
การเลิกใช้จะประกาศที่นี่และส่งอีเมลถึงเจ้าของคีย์ทุกคน อย่างน้อยหกเดือนก่อนการนำออก - ดูนโยบายการเลิกใช้ ดัชนีที่เครื่องอ่านได้ที่ /apis.json ใช้วันที่ของรายการใหม่ล่าสุดเป็นค่า modified