API REST publik kecil di balik matthewswong.com: tanyakan pekerjaan Matthews Wong kepada asisten situs, dapatkan pertanyaan lanjutan, atau kirimi dia pesan. Tanpa API key, JSON masuk dan keluar, dideskripsikan dengan OpenAPI 3.1.
Semua perintah di bawah bisa langsung dijalankan dari terminal. Base URL-nya https://www.matthewswong.com, dan setiap path diakhiri garis miring.
Indeks menyebut setiap endpoint, versi yang berlaku, dan lokasi deskripsi OpenAPI.
curl https://www.matthewswong.com/api/v1/Jawaban dikirim bertahap sebagai server-sent events: satu objek JSON per baris "data:", diakhiri "done".
curl -N https://www.matthewswong.com/api/v1/chat/ \
-H "Content-Type: application/json" \
-d '{"message": "What does Matthews Wong work on?"}'Bukan endpoint, tetapi sering kali itulah yang dibutuhkan agen: kirim Accept: text/markdown ke URL halaman mana pun.
curl -H "Accept: text/markdown" https://www.matthewswong.com/en/about/Semua endpoint bersifat publik dan tanpa autentikasi. Tidak ada pendaftaran, tidak ada key yang perlu diminta, dan tidak ada yang perlu dirotasi: langsung kirim request.
Penggunaan yang wajar dijaga dengan rate limit per IP klien, tercantum per endpoint di bawah. Response melaporkan posisi Anda di X-RateLimit-Limit, X-RateLimit-Remaining dan X-RateLimit-Reset; jika melewati batas, Anda mendapat 429 dengan Retry-After dalam detik.
Butuh batas lebih tinggi untuk integrasi sungguhan? Kirim pesan lewat halaman kontak dan jelaskan apa yang sedang Anda bangun.
Halaman kontakKetiga operasi menerima body JSON lewat POST. Skema request dan response lengkap ada di deskripsi OpenAPI.
| Metode | Path | Fungsi | Batas per menit |
|---|---|---|---|
| GET | /api/v1/ | Daftar endpoint, versi, dan URL OpenAPI. | Tidak ada |
| POST | /api/v1/chat/ | Bertanya ke asisten tentang Matthews Wong; jawaban dikirim bertahap sebagai server-sent events. | 20 |
| POST | /api/v1/chat/followups/ | Menyarankan hingga tiga pertanyaan lanjutan untuk jawaban terakhir asisten. Tidak pernah gagal: mengembalikan daftar kosong sebagai gantinya. | 30 |
| POST | /api/v1/contact/ | Mengirim pesan email ke Matthews Wong, dengan Anda sebagai reply-to. Hanya pesan sungguhan dari manusia. | 5 |
Setiap kegagalan berupa JSON dengan field yang sama: bercabang berdasarkan code, tampilkan error ke manusia, ikuti hint untuk memulihkan. Field docs menunjuk kembali ke deskripsi OpenAPI.
{
"success": false,
"error": "Too many requests. Please try again later.",
"code": "rate_limited",
"hint": "Wait 42 seconds before retrying; the limit is 20 requests per minute per client.",
"docs": "https://www.matthewswong.com/openapi.json",
"retryAfter": 42
}| Kode | Status | Arti |
|---|---|---|
invalid_json | 400 | Body bukan JSON yang valid. |
invalid_request | 400 | Ada field yang hilang atau di luar batas; hint menyebutkannya. |
rejected_input | 400 | Input ditolak, misalnya upaya mengganti instruksi asisten. |
not_found | 404 | Tidak ada endpoint di path itu; hint menyebut yang benar. |
method_not_allowed | 405 | Metode salah; header Allow menyebut yang benar. |
rate_limited | 429 | Terlalu banyak request; tunggu retryAfter detik. |
service_unavailable | 500 | Server kekurangan dependensi yang dibutuhkan; coba lagi nanti. |
internal_error | 500 | Kegagalan server yang tidak terduga; coba lagi nanti. |
upstream_error | 502 | Penyedia email menolak pesan. |
Kontraknya dibuat agar klien yang ditulis hari ini tetap berjalan.
Versi ada di path, /api/v1/. Kunci versi itu di klien Anda.
Di dalam satu versi, perubahan hanya bersifat menambah: endpoint baru, field request opsional baru, field response baru. Tidak ada yang dihapus, diganti nama, atau diubah tipenya, jadi abaikan field yang tidak Anda kenal.
Perubahan yang merusak kompatibilitas dirilis sebagai versi baru, /api/v2/. Versi sebelumnya tetap berjalan minimal 180 hari setelah dinyatakan deprecated.
Endpoint yang deprecated menjawab dengan header Deprecation (RFC 9745) dan Link ke successor-version, dan deskripsi OpenAPI menandainya deprecated. Begitu tanggal penghapusan ditetapkan, endpoint juga mengirim Sunset (RFC 8594), minimal 90 hari sebelumnya.
| Path | Gunakan | Deprecated sejak | Sunset |
|---|---|---|---|
/api/chat/ | /api/v1/chat/ | 2026-10-08 | Belum dijadwalkan |
/api/chat/followups/ | /api/v1/chat/followups/ | 2026-10-08 | Belum dijadwalkan |
/api/contact/ | /api/v1/contact/ | 2026-10-08 | Belum dijadwalkan |
POST /api/chat/
HTTP/1.1 200 OK
Deprecation: @1791417600
Link: <https://www.matthewswong.com/api/v1/chat/>; rel="successor-version", <https://www.matthewswong.com/en/developers/#versioning>; rel="deprecation"; type="text/html", <https://www.matthewswong.com/openapi.json>; rel="service-desc"Ini mengirim request sungguhan ke POST /api/v1/chat/ dari browser Anda dan mengalirkan jawabannya, sama seperti klien lain. Request ini dihitung dalam rate limit yang sama.
URL tetap yang mendeskripsikan API ini dan situsnya, untuk generator kode, klien API, dan model bahasa.
www.matthewswong.com/openapi.json
Impor ke Postman, Insomnia, atau generator klien.
www.matthewswong.com/api/v1/
Daftar endpoint dan versi, dalam JSON.
www.matthewswong.com/.well-known/api-catalog
URL well-known standar untuk menemukan API ini.
www.matthewswong.com/llms.txt
Indeks situs untuk model bahasa.
www.matthewswong.com/llms-full.txt
Indeks beserta ringkasan setiap artikel.
www.matthewswong.com/sitemap.xml
Setiap halaman, dalam dua bahasa.
www.matthewswong.com/feed.xml
Artikel baru begitu terbit.
www.matthewswong.com/feed.json
Feed yang sama, dalam JSON.