Referensi API
testingapis.com adalah API gratis untuk menguji klien HTTP. Ada 360 endpoint dalam 53 grup: resource realistis seperti produk, buku, dan negara, ditambah endpoint untuk kode status, redirect, cookie, caching, skema autentikasi, format file, streaming, dan injeksi kegagalan. Echo, metode HTTP, kode status, serta resource products, posts, dan todos tidak butuh akun. Sisanya butuh akun gratis.
https://api.testingapis.comfetch('https://api.testingapis.com/api/Products?limit=3')
.then(res => res.json())
.then(data => console.log(data))Penemuan
| Apa | Di mana |
|---|---|
| Dokumen OpenAPI 3.0 | https://api.testingapis.com/openapi/v1.jsonMasuk untuk melihat |
| Swagger UI | https://api.testingapis.com/swagger/index.htmlMasuk untuk melihat |
| Katalog rute langsung | GET https://api.testingapis.com/apiMasuk untuk melihat |
| Health check | GET https://api.testingapis.com/api/healthGET https://api.testingapis.com/api/health/liveGET https://api.testingapis.com/api/health/ready |
| GraphQL | |
| WebSockets | wss://api.testingapis.com/ws/echowss://api.testingapis.com/ws/ticker |
Autentikasi
Endpoint tanpa catatan autentikasi bersifat publik. Endpoint yang menguji autentikasi menerima kredensial uji tetap di bawah. Kredensial ini bukan rahasia.
| Skema | Cara mengirimnya | Nilai uji | Dipakai oleh |
|---|---|---|---|
| HTTP Basic | Authorization: Basic base64(user:pass) | apibee / password123 · Admin / Admin@1234 (API asli) | /api/auth/basic*, /api/AuthTest/secure-data |
| Bearer (static) | Authorization: Bearer <token> | apibee-token-123 · admin-token · user-token · readonly-token | /api/auth/bearer, /api/auth/roles/* |
| JWT | Authorization: Bearer <jwt> | POST /api/auth/jwt/login dengan admin / admin123 atau user / user123 · POST /api/User/Login dengan Michael / Thompson | /api/auth/jwt/me, /api/auth/jwt/admin, /api/Admin/authorize |
| API key | Header X-API-Key, ?api_key= atau cookie api_key | apibee-key-123 | /api/auth/api-key/* |
| OAuth 2.0 | Authorization: Bearer <access_token> | Klien apibee-client / apibee-secret dan apibee-public (PKCE) · pengguna apibee / password123, jane / jane123 | /api/auth/oauth/protected, /userinfo |
| OAuth 1.0a | Authorization: OAuth oauth_consumer_key="…", oauth_signature="…", … | Consumer apibee-consumer-key / apibee-consumer-secret · token apibee-access-token / apibee-token-secret (tidak pernah kedaluwarsa) · HMAC-SHA1, HMAC-SHA256, HMAC-SHA512 atau PLAINTEXT | /api/auth/oauth1, /api/auth/oauth1/* |
| Digest | Challenge dan response RFC 7616 | apibee / password123 | /api/auth/digest |
| Tanda tangan HMAC | Header X-Timestamp dan X-Signature | Secret apibee-hmac-secret | /api/auth/hmac |
| Cookie sesi | Cookie apibee_session | POST /api/cookies/login dengan test / test123 atau admin / admin123 | /api/cookies/me |
| CSRF | Cookie XSRF-TOKEN dan header X-CSRF-Token | Token dari GET /api/auth/csrf/token | /api/auth/csrf/submit |
401 berarti kredensial tidak ada atau tidak valid. 403 berarti kredensial valid tetapi tidak diizinkan, misalnya user-token di /api/auth/roles/admin.
Contoh memakai placeholder ini untuk nilai yang berubah di setiap putaran:
| Placeholder | Cara mendapatkannya |
|---|---|
{{userJwt}} / {{adminJwt}} | accessToken dari POST /api/auth/jwt/login dengan user / user123 atau admin / admin123. |
{{refreshToken}} | refreshToken dari POST /api/auth/jwt/login. |
{{legacyJwt}} | token dari POST /api/User/Login dengan Michael / Thompson (role Admin). |
{{oauthAccessToken}} | access_token dari POST /api/auth/oauth/token. |
{{oauth1RequestToken}} / {{oauth1RequestSecret}} / {{oauth1Verifier}} | oauth_token dan oauth_token_secret dari POST /api/auth/oauth1/request_token dengan oauth_callback=oob, lalu oauth_verifier dari GET /api/auth/oauth1/authorize. |
{{csrfToken}} | token dari GET /api/auth/csrf/token. Nilai yang sama juga dipasang sebagai cookie XSRF-TOKEN. |
{{sessionId}} | Cookie apibee_session yang dipasang oleh POST /api/cookies/login (test / test123). |
{{unixTimestamp}} / {{hmacSignature}} | Waktu Unix saat ini dalam detik, dan HMAC-SHA256 heksadesimal dari "{timestamp}.{raw body}" dengan kunci apibee-hmac-secret. |
{{uuid}} | UUID baru apa saja, dipakai sebagai Idempotency-Key. |
Masuk untuk melihat detailnya
Parameter, contoh request dan response, serta panel Try it langsung untuk endpoint autentikasi khusus anggota yang sudah masuk. Akun gratis dan dibuat dalam beberapa detik.
Penundaan dan error simulasi
Dua parameter query berlaku di setiap endpoint:
| Parameter | Efek | Contoh |
|---|---|---|
delay | Menunggu N detik sebelum merespons. Maksimal 10. | /api/Products?delay=2 |
error | Mengembalikan error simulasi alih-alih response sungguhan: 400, 401, 403, 404, 408, 429, 500, 502 atau 503. Menambahkan header X-Simulated: true. | /api/Products?error=503 |
Jika digabung, seperti ?delay=2&error=503, request menunggu lalu gagal. Error simulasi terlihat seperti ini:
{
"status": 503,
"error": "Service Unavailable",
"message": "Simulated error. Use ?error={code} to test different status codes.",
"simulated": true
}Filter, pengurutan, dan paginasi
Setiap endpoint daftar resource, seperti GET /api/Products, menerima parameter query berikut:
| Parameter | Arti | Contoh |
|---|---|---|
limit | Ukuran halaman, 1 sampai 100. Tanpa parameter ini, semua data dikembalikan. | ?limit=10 |
page | Nomor halaman mulai dari 1. Butuh limit. | ?limit=10&page=2 |
offset | Melewati N data, sebagai pengganti page. | ?limit=10&offset=20 |
sort, order | Urutkan berdasarkan field apa pun. order bernilai asc (default) atau desc. | ?sort=price&order=desc |
q | Pencarian tanpa membedakan huruf besar-kecil di field title, name, body, description, dan text. | ?q=keyboard |
field apa pun | Filter persis, tanpa membedakan huruf besar-kecil, pada properti itu. | ?category=books&inStock=true |
Daftar mengembalikan array JSON biasa. Totalnya ada di header X-Total-Count, X-Page, X-Per-Page, dan X-Total-Pages. Paginasi cursor, header Link, keyset, dan HAL ditunjukkan di Paginasi.
Response dan error
| Situasi | Status | Body |
|---|---|---|
| Mengambil satu data | 200 | Data tersebut |
| Mendaftar data | 200 | Array data, ditambah header paginasi |
| Membuat | 201 | { message, data } |
| Membuat sekaligus | 201 | { message, data: [ … ] } |
| Mengganti atau mengubah | 200 | { message, data } |
| Perubahan sebagian (PATCH) | 200 | { message, changed, ignored, data } |
| Menghapus | 200 | { message } |
| Menghapus sekaligus | 200 | { message, deleted, notFound } |
| Error | 4xx atau 5xx | { status, error, message } |
| Error validasi model | 400 | application/problem+json dengan error per field |
| Validasi bisnis | 422 | application/problem+json (RFC 7807) dengan error per field |
{
"status": 404,
"error": "Not Found",
"message": "Book with ID 999 does not exist."
}Setiap response mengizinkan origin apa pun (Access-Control-Allow-Origin: *, tanpa kredensial) dan membuka header paginasi, caching, rate limit, dan versioning untuk kode browser. Header X-RateLimit-* hanya informasi; pembatasan sungguhan hanya terjadi di Rate limit.
Semua data ada di memori. Membuat, mengubah, dan menghapus berfungsi, tetapi semuanya kembali ke data awal saat server dimulai ulang.
Memanggil dari browser
- Cookie. Browser tidak mengizinkan JavaScript memasang header Cookie, dan request lintas origin tidak membawa kredensial. Endpoint berbasis cookie hanya berfungsi dari origin yang sama atau lewat proxy.
- Redirect.
fetch()mengikuti redirect dan menyembunyikan response 3xx. Untuk melihat status asli dan header Location, pakai proxy. - Proxy.
POST /api/Proxy/callmeneruskan request dari server dan mengembalikan status serta body-nya. Cara ini menghindari batasan CORS, cookie, dan redirect, tetapi tidak meneruskan header response. - Stream.
/api/stream/sseadalah Server-Sent Events. Stream NDJSON, chunked, drip, dan array JSON tiba sedikit demi sedikit; baca dengan pembaca streaming. - WebSocket.
/ws/echodan/ws/tickerbutuh WebSocket API, bukan fetch. - Autentikasi Digest. Browser hanya menjalankan challenge dan response lewat dialog login bawaannya.
- Injeksi kegagalan.
/api/chaos/abortdan/api/chaos/partialmemutus koneksi dengan sengaja./api/chaos/timeoutdan/api/chaos/slowbisa memakan waktu hingga 60 detik. - Header terlarang. Browser menolak memasang Host, Content-Length, Accept-Encoding, Cookie, dan beberapa lainnya.
Masuk untuk melihat detailnya
Parameter, contoh request dan response, serta panel Try it langsung untuk catatan ini khusus anggota yang sudah masuk. Akun gratis dan dibuat dalam beberapa detik.
Endpoint
360 endpoint dalam 53 grup. Setiap grup membuka referensinya, lengkap dengan parameter serta contoh request dan response.
Mulai di sini
4 endpointKatalog langsung semua endpoint, ditambah health check.
Dasar HTTP
44 endpointMetode, kode status, redirect, cookie, caching, dan body request.
Format dan data
62 endpointContent type umum, unduhan file, kasus tepi JSON, dan utilitas.
Autentikasi dan keamanan
38 endpointSkema autentikasi, OAuth 2.0 dan 1.0a, JWT, rate limit, dan pembayaran.
Pola API
50 endpointStreaming, WebSocket, job asinkron, paginasi, injeksi kegagalan, dan lainnya.
Resource
142 endpointKumpulan data realistis seperti produk, post, buku, dan negara.
API asli
20 endpointVersi pertama API: pengguna dalam JSON dan XML, unggahan, dan uji autentikasi.