BKNS Whois API
REST API tra cứu thông tin WHOIS và kiểm tra khả dụng tên miền.
Hỗ trợ 1.260+ TLD · Dữ liệu .vn từ VNNIC chính thức · Độ trễ < 200ms
Tất cả request qua HTTPS. Phản hồi JSON, encoding UTF-8.
Xác thực
Đính kèm API key vào header X-API-Key trong mọi request. Thiếu key hoặc key sai → HTTP 401.
GET /api/v1/whois?domain=bkns.vn X-API-Key: bkns_dmo_2376da23bd44858c8390aeeb93065404d21ede1ba2c5d59c0cffc33d6e83c2dd Content-Type: application/json
Demo API key — dùng thử ngay
Sao chép key bên dưới và dán vào header X-API-Key để kiểm tra tích hợp ngay lập tức — không cần đăng ký.
X-API-Key: bkns_dmo_2376da23bd44858c8390aeeb93065404d21ede1ba2c5d59c0cffc33d6e83c2dd
Giới hạn demo: 2 lượt/phút và 200 lượt/ngày mỗi IP · Chỉ dùng được GET /api/v1/whois và GET /api/v1/domain/check · Bulk WHOIS trả 403.
Để dùng Bulk WHOIS hoặc cần rate limit cao hơn, hãy đăng ký key Partner tại info@bkns.vn hoặc qua trang quản trị.
Rate Limits
Giới hạn request theo tier. Vượt ngưỡng → 429 Too Many Requests kèm header Retry-After.
X-RateLimit-Limit: 300 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1711234567 Retry-After: 15
Mã lỗi
So sánh error envelope: v1 và v2
v1 (legacy) trả lỗi dạng phẳng với errorCode. v2 (standard) bọc lỗi trong object error kèm mã BKNS-WHOIS-NNN, message song ngữ, và correlation_id để tra cứu.
{
"errorCode": "INVALID_DOMAIN",
"message": "Invalid domain name",
"statusCode": 400
}Bảng mã lỗi v2 — BKNS-WHOIS-001 … 014
Mỗi lỗi v2 có mã BKNS-WHOIS-NNN cố định kèm HTTP status tương ứng. Trường error.details.legacyCode (khi có) là mã v1 tương đương, dùng để bắc cầu trong lúc chuyển tiếp — mã này sẽ được gỡ bỏ khi mọi consumer đã đọc error.code.
| Mã v2 | HTTP | Ý nghĩa (tiếng Anh) | Mã v1 (legacy) |
|---|---|---|---|
| BKNS-WHOIS-001 | 400 | Invalid domain name | INVALID_DOMAIN |
| BKNS-WHOIS-002 | 400 | Request validation failed | INVALID_INPUT |
| BKNS-WHOIS-003 | 400 | Too many domains (max 10) | TOO_MANY_DOMAINS |
| BKNS-WHOIS-004 | 400 | Too many domains (max 20) | TOO_MANY_DOMAINS_BULK |
| BKNS-WHOIS-005 | 401 | API key required | API_KEY_REQUIRED |
| BKNS-WHOIS-006 | 403 | Invalid API key | INVALID_API_KEY |
| BKNS-WHOIS-007 | 403 | Tier insufficient | FORBIDDEN |
| BKNS-WHOIS-008 | 429 | Too many requests | RATE_LIMITED |
| BKNS-WHOIS-009 | 503 | Service temporarily unavailable | ALL_BACKENDS_FAILED |
| BKNS-WHOIS-010 | 500 | An internal error occurred | INTERNAL_ERROR |
| BKNS-WHOIS-014 | 404 | Resource not found | NOT_FOUND |
API v2 & Nâng cấp
BKNS Whois API hiện phục vụ song song hai phiên bản trên cùng một gateway. Chọn phiên bản phù hợp với tích hợp của bạn — không có yêu cầu bắt buộc chuyển đổi.
Hợp đồng API gốc. Không có kế hoạch gỡ bỏ, không deadline. Tích hợp hiện tại tiếp tục hoạt động mà không cần sửa gì.
Cùng endpoint, cùng response thành công như v1 — nhưng có error envelope chuẩn hóa và validate request nghiêm ngặt (strict). Dùng cho mọi tích hợp mới.
Hướng dẫn nâng cấp v1 → v2
- 1
Bước 1 — Đổi base URL
Đổi /api/v1 thành /api/v2. Response thành công giữ nguyên 100% — cùng field, cùng cấu trúc phẳng, không bọc trong wrapper success/data — không cần sửa code xử lý phần thành công.
- 2
Bước 2 — Cập nhật xử lý lỗi
Đọc error.code (ví dụ BKNS-WHOIS-001) thay vì errorCode ở cấp cao nhất, và error.message / error.messageEn thay vì message. Dùng bảng mã lỗi ở mục Mã lỗi để map; trong lúc chuyển tiếp, error.details.legacyCode vẫn giữ mã cũ nên bạn có thể so khớp cả hai.
- 3
Bước 3 — Request nghiêm ngặt (strict)
v2 từ chối ngay bất kỳ field query/body lạ nào ngay từ request đầu tiên — trả 400 BKNS-WHOIS-002, không có thời gian ân hạn. Chỉ gửi các tham số đã tài liệu hóa: domain, raw, bypass_cache (bulk: domains). Xóa mọi tham số thừa trước khi chuyển sang v2.
- 4
Bước 4 — Mọi thứ khác giữ nguyên
Xác thực (X-API-Key), rate limit theo tier, và các giá trị status (pending | registered | available | reserved | auction) giống hệt nhau giữa v1 và v2. v2 dùng chung ngân sách rate-limit với v1 — chuyển bề mặt không reset quota của bạn.
GETWHOIS Lookup
Tra cứu thông tin WHOIS đầy đủ: chủ sở hữu, nhà đăng ký, ngày tạo/hết hạn, nameserver, trạng thái EPP.
Cũng khả dụng tại /api/v2/whois với error envelope chuẩn hóa (v2) — xem hướng dẫn nâng cấp v1 → v2
Tham số / Kiểu / Mô tả
| Tham số | Kiểu | Mô tả |
|---|---|---|
| domain required | string | Tên miền cần tra cứu. Chấp nhận ASCII (bkns.vn), punycode (xn--...), hoặc Unicode IDN (münchen.de). Tự động chuẩn hóa sang punycode. |
Response
{
"domain": "bkns.vn",
"tld": "vn",
"status": "registered",
"cached": true,
"cacheTtlRemaining": null,
"data": {
"registrant": {
"name": "Công ty Cổ phần Giải pháp Mạng Bạch Kim"
},
"registrar": {
"name": "Công ty cổ phần giải pháp mạng Bạch Kim"
},
"nameservers": ["ns1.bkdns.vn", "ns2.bkdns.vn", "ns3.bkdns.vn"],
"dates": {
"created": "2010-06-24T17:00:00.000Z",
"updated": null,
"expiry": "2030-06-24T17:00:00.000Z",
"renewalDeadline": null
},
"domainStatus": ["clientTransferProhibited"],
"dnssec": false
}
}GETDomain Check
Kiểm tra nhanh tên miền còn khả dụng hay không. Nhanh hơn WHOIS vì chỉ trả về trạng thái.
Cũng khả dụng tại /api/v2/domain/check với error envelope chuẩn hóa (v2) — xem hướng dẫn nâng cấp v1 → v2
Tham số / Kiểu / Mô tả
| Tham số | Kiểu | Mô tả |
|---|---|---|
| domain required | string | Tên miền cần kiểm tra. Chấp nhận ASCII, punycode, hoặc Unicode IDN. Tự động chuẩn hóa sang punycode. |
{
"domain": "example-notexist.vn",
"tld": "vn",
"available": true,
"premium": false,
"cached": false
}Tên miền .vn giữ chỗ / đấu giá
// congchung.vn — reserved
{ "domain": "congchung.vn", "available": false, "reserved": true, "reservedBy": "Cục CNTT – Bộ Tư pháp" }
// bk.vn — auction-only (.vn 1–2 ký tự)
{ "domain": "bk.vn", "available": false, "auction": true }POSTBulk WHOIS
Tra cứu nhiều tên miền trong một request. Tối đa 20 domain/request. Yêu cầu tier Partner.
Lưu ý: Bulk WHOIS yêu cầu key Partner — demo key trả về 403 trên endpoint này.
Cũng khả dụng tại /api/v2/whois/bulk với error envelope chuẩn hóa (v2) — xem hướng dẫn nâng cấp v1 → v2
Request Body
{
"domains": ["bkns.vn", "google.com", "example.org"]
}Response
{
"results": [
{ "domain": "bkns.vn", "status": "registered", "data": { ... } },
{ "domain": "example.org", "status": "available" }
],
"total": 3,
"queryTime": 512
}Response Schema
Cấu trúc đầy đủ của object WHOIS trả về.
Top-level fields
data object (chỉ khi registered)
TLD hỗ trợ
1.260+ loại TLD bao gồm tất cả ccTLD, gTLD phổ biến và new gTLD.
Code mẫu
WHOIS Lookup
const domain = 'bkns.vn'; const apiKey = 'bkns_dmo_2376da23bd44858c8390aeeb93065404d21ede1ba2c5d59c0cffc33d6e83c2dd'; const res = await fetch( `https://whois.bkns.vn/api/v1/whois?domain=${domain}`, { headers: { 'X-API-Key': apiKey } } ); if (!res.ok) throw new Error(`HTTP ${res.status}`); const data = await res.json(); // Always check status before accessing data.* if (data.status === 'registered') { console.log('Registrar:', data.data.registrar.name); console.log('Expires: ', data.data.dates.expiry); console.log('Nameservers:', data.data.nameservers.join(', ')); } else { console.log('Domain is not registered.'); }
Xử lý 429 — Retry với backoff
async function whoisWithRetry(domain, apiKey, maxRetries = 3) { for (let i = 0; i < maxRetries; i++) { const res = await fetch( `https://whois.bkns.vn/api/v1/whois?domain=${domain}`, { headers: { 'X-API-Key': apiKey } } ); if (res.status === 429) { const wait = Number(res.headers.get('Retry-After') ?? 5) * 1000; await new Promise(r => setTimeout(r, wait)); continue; } if (!res.ok) throw new Error(`HTTP ${res.status}`); return res.json(); } }
Ví dụ v2 — endpoint & error envelope
Endpoint /api/v2/whois dùng chung tham số với v1 (domain, raw, bypass_cache), nhưng lỗi trả về theo error envelope chuẩn hóa — xem mục Mã lỗi để biết bảng mã đầy đủ.
curl -s \ "https://whois.bkns.vn/api/v2/whois?domain=bkns.vn" \ -H "X-API-Key: bkns_dmo_2376da23bd44858c8390aeeb93065404d21ede1ba2c5d59c0cffc33d6e83c2dd" \ | python3 -m json.tool
{
"success": false,
"error": {
"code": "BKNS-WHOIS-001",
"message": "Tên miền không hợp lệ",
"messageEn": "Invalid domain name",
"details": { "legacyCode": "INVALID_DOMAIN" },
"correlation_id": "01J8Z3K9QW7M2P5RXT6VYB4NDA"
}
}Liên hệ
Cần hỗ trợ kỹ thuật hoặc muốn đăng ký API key Partner?