Skip to content
Public API · v1

Pokékipe Public API

วิเคราะห์ข้อมูล Pokémon แข่งขันฟรี ดึงมาจาก usage stats รายเดือนของ Smogon รีเฟรชทุกเดือน ใช้งานทั่วไปไม่ต้องมีบัญชี สร้างคีย์ส่วนตัวจาก Account Settings เพื่อยกเพดาน rate-limit สำหรับ bulk pull

  • Endpoints

    100+

  • Formats

    30+

  • รีเฟรช

    รายเดือน

  • Auth

    Optional

  • License

    CC BY 4.0

ทำไมถึงมีอยู่

API นี้คืออะไร และไม่ใช่อะไร

สี่เรื่องที่ต้องรู้ก่อนเขียน code บรรทัดแรกที่ยิง /api/v1/

API นี้คืออะไร

JSON surface แบบ read-only ทับข้อมูล Pokémon แข่งขันของทั้งโลก ถาม "meta ใน Gen 9 OU ที่ 1500+ ELO เดือนนี้คืออะไร?" หรือ "ใคร counter Pokémon ตัวนี้ใน top cut ของทัวร์นี้?" แล้วได้คำตอบ call เดียว shape นิ่งและมี doc

ข้อมูลมาจากไหน

battle log รายเดือนของ Smogon (chaos JSON สาธารณะ), feed ทัวร์นาเมนต์ทางการ (Pokémon Company, VGC, Smogon Tour), และแหล่งจาก community เช่น Limitless TCG สำหรับ event ที่ community จัด Pokékipe มี pipeline ingestion, normalization และ enrichment ของตัวเองอยู่ด้านบน แล้วเปิดผลที่ clean แล้วออกมาใหม่

API นี้ไม่ใช่อะไร

ไม่ใช่ bridge ของ Pokémon Showdown แบบ live, ไม่ใช่ simulator การต่อสู้, ไม่ใช่ endpoint damage calculator, ไม่ใช่ engine สร้างทีม เครื่องมือพวกนี้อยู่บนเว็บ API คือ layer ข้อมูลที่เครื่องมือพวกนั้นนั่งอยู่บน

เครดิตต้นทาง

ให้เครดิตที่ควรให้ Smogon, ผู้ export chaos-format JSON และ community ผู้เล่นที่ลงเกมทุกเดือน คือเหตุผลที่ dataset นี้มีอยู่ Pokékipe ทำให้มัน query ได้ ไม่ได้เป็นเจ้าของข้อมูลต้นทาง

เริ่มใช้งาน

Call แรกของคุณ ใน 30 วินาที

สามตัวอย่าง copy-paste ที่ดึง format catalog ไม่ต้องมี API key ไม่ต้อง setup ไม่ต้องสมัคร เลือกแท็บภาษา paste แล้วรัน

curl -s https://pokekipe.com/api/v1/formats \
  | jq '.[0:3]'

แทน path ด้วย endpoint ใด ๆ ใน reference ด้านล่าง call แรกควรกลับมาใน 1 วินาทีบน cache ที่ warm

การยืนยันตัวตน

การยืนยันตัวตนและ rate limit

เรียก API แบบไม่ระบุตัวตนใช้งานได้สำหรับงานทั่วไป คีย์ส่วนตัว (ฟรี สร้างได้จากการตั้งค่าบัญชี) จะยกเพดาน rate-limit ให้นักวิเคราะห์และนักสร้างเครื่องมือที่ดึงข้อมูลจำนวนมาก คีย์ไม่ปลดล็อก endpoint ใหม่ มันแค่ยกเพดานเท่านั้น

Anonymous, ไม่มีคีย์

Default

ยิง call โดยไม่ต้องมี header ใด ๆ bucket ผูกกับ IP ของคุณ ดังนั้น script เล็ก ๆ หรือ LLM agent ที่ยิงไม่กี่ request ต่อ session จะไม่ชน limit

  • ไม่ต้องมีบัญชี ไม่ต้องสมัคร ไม่ต้องตั้ง header
  • Bucket ต่อ IP เหมาะกับ script ad-hoc และ tool-use ของ LLM agent
  • ชน 429 ถ้าคุณดึง bulk ต่อเนื่อง เปลี่ยนไปใช้คีย์ส่วนตัว

ต่อนาที

60

ต่อวัน

5,000

Authenticated, ด้วยคีย์ส่วนตัว

แนะนำสำหรับ bulk

ส่งคีย์ของคุณเป็น X-API-Key (หรือ Authorization: Bearer pk_live_…) call แบบ anonymous ยังใช้งานคู่กันได้ คีย์แค่ยกเพดาน ไม่ปลดล็อก endpoint ใหม่

  • Bucket ต่อ user: IP เปลี่ยนจะไม่รีเซ็ตการนับ
  • เพดานสูงกว่าบนทุก per-route limit
  • สูงสุด 5 คีย์ที่ active ต่อบัญชี เพิกถอนได้ทุกเมื่อ

ต่อนาที

600

ต่อวัน

100,000

Headers ในทุก response

ทุก response ที่สำเร็จจะแนบ rate-limit headers ด้านล่าง เพื่อให้ client คุม pace ตัวเองได้โดยไม่ต้องลองใหม่ อ่านครั้งเดียวต่อ response แล้วชะลอทันทีที่ Remaining เหลือไม่กี่ request อย่ารอให้เป็นศูนย์

Headerความหมาย
X-RateLimit-Tiertier ที่คุณอยู่: anonymous (ไม่มีคีย์) หรือ authenticated (JWT หรือ API key ตรวจแล้ว)
X-RateLimit-Limit-Minเพดานต่อนาทีสำหรับ tier ของคุณ (60 anonymous, 600 authenticated)
X-RateLimit-Limit-Dayเพดานต่อวันสำหรับ tier ของคุณ (5,000 anonymous, 100,000 authenticated)
X-RateLimit-Remaining-Minจำนวนการเรียกที่เหลือใน window นาทีปัจจุบัน ชะลอเมื่อใกล้ศูนย์
X-RateLimit-Remaining-Dayจำนวนการเรียกที่เหลือใน window วันปัจจุบัน รีเซ็ตที่นาทีเดียวกันบนเข็มนาฬิกาทุกวัน
Retry-Afterส่งเฉพาะตอน 429 รอจำนวนวินาทีนี้ก่อนลองใหม่ ปกติต่ำกว่า 60 สำหรับ window ต่อนาที

Errors

Errors ที่อาจเจอ

ใช้ HTTP status code มาตรฐาน body เป็น JSON เสมอ พร้อม field "detail" บอกว่าพังตรงไหน มอง 4xx เป็นปัญหา contract (request ของคุณ) และ 5xx เป็นปัญหาฝั่งเรา (ลองใหม่พร้อม backoff)

200

OK

OK. body คือ JSON payload ตามที่ระบุใน reference อาเรย์ว่างหมายถึง "ไม่มีแถว" ไม่ใช่ "หายไป" จัดการมันเป็นข้อมูล ไม่ใช่ความล้มเหลว

304

Not Modified

Not Modified. cache headers ผ่านการตรวจสอบแล้ว ใช้ body ที่ cache ไว้ ไม่ต้องแปลงใหม่ ระบบส่งกลับอัตโนมัติเมื่อคุณส่ง If-None-Match หรือ If-Modified-Since

400

Bad Request

Bad Request. query parameter หรือ body shape ผิด detail message จะบอกชื่อ field ที่มีปัญหาแบบเป๊ะ ๆ อย่ายิงซ้ำโดยไม่แก้ input

401

Unauthorized

Unauthorized. request ต้องการ API key หรือ session แต่ไม่ได้ส่งมา หรือ credential ใช้ไม่ได้/ถูกเพิกถอน อย่ายิงซ้ำ ออก credential ใหม่

404

Not Found

Not Found. path หรือ resource ไม่มีอยู่ สำหรับ route แบบ per-Pokémon เคสนี้มักหมายถึง format นั้นยังไม่มี usage data สำหรับ Pokémon ตัวนั้น ไม่ใช่พิมพ์ผิดฝั่งคุณ

429

Too Many Requests

Too Many Requests. คุณชน rate-limit ceiling อ่าน Retry-After แล้วรอ exponential backoff ก็ดี แต่มักไม่จำเป็นเพราะ window สั้น

500

Server Error

Internal Server Error. มีอะไรพังฝั่งเรา ลองยิงซ้ำหลังรอสักไม่กี่วินาที ถ้ายังเป็น ปิงเราใน Discord พร้อม request URL

503

Service Unavailable

Service Unavailable. เรากำลัง deploy หรือโหลดเต็มชั่วคราว ลองใหม่พร้อม backoff อัปเดต status ที่ Discord ของ community

กฎพื้นฐาน

เงื่อนไขการใช้งาน

สี่กฎพื้นฐาน อ่านครั้งเดียว ประหยัด ping Discord ในอนาคต

เครดิตต้นทาง

ต้องให้เครดิตเมื่อ redistribute หรือ republish ให้เครดิต Pokékipe (ลิงก์ไป https://pokekipe.com) และให้เครดิต Smogon สำหรับ chaos JSON ต้นทางที่พวกเขา publish ทุกเดือน

Best-effort, ไม่มี SLA

Best-effort ไม่มี SLA ข้อมูลเสิร์ฟแบบ "as is" ไม่มีการการันตี uptime cache ให้ดุ และ degrade อย่างนุ่มนวลเมื่อ endpoint ช้าหรือกลับ 429

Versioning

Schema ภายใต้ /api/v1/ จะ backwards-compatible ภายใน lifecycle ของ v1 การเปลี่ยนแบบ breaking ไป /api/v2/ พร้อมแจ้งล่วงหน้าใน Discord และ sunset header บน path ที่ deprecate แล้ว

การใช้เชิงพาณิชย์

อนุญาตให้ใช้เชิงพาณิชย์ภายใต้ CC BY 4.0 ถ้าคุณสร้างอะไรบน API นี้ เราอยากได้ยินใน Discord ของ community

Reference · OpenAPI 3Live, สามแผง

ดูทุก endpoint ในที่เดียว

เลื่อนดูทุก endpoint พร้อมคำอธิบาย, ตาราง parameter, schema ของ request และ response, และ code sample แบบ curl, JavaScript และ Python ค้นทั้ง API ในช่องเดียว deep-link ไปทุก operation แชร์ URL ได้

  • 100+ endpoints
  • ·
  • 3-pane navigation, content, samples
  • ·
  • full-text search
  • ·
  • ตัวอย่าง request แบบ live