Giám sát uptime API
Tạo monitor kiểm tra URL mỗi 5–1440 phút và báo cho bạn qua e-mail hoặc webhook khi website không truy cập được và khi hoạt động trở lại.
Monitor theo dõi website và API của bạn từ máy chủ của chúng tôi. POST /v1/monitors với url để tạo: URL được kiểm tra ngay, sau đó định kỳ mỗi interval_minutes, bằng GET hoặc HEAD, với danh sách mã trạng thái hợp lệ expect_status (mặc định 200-399, ví dụ 200,301), keyword tuỳ chọn phải có trong nội dung trả về và thời gian chờ timeout_ms. Monitor chuyển sang down sau 2 lần kiểm tra lỗi liên tiếp (sau lần lỗi đầu, URL được kiểm tra lại ở lượt chạy 5 phút kế tiếp) và trở về up ngay lần thành công đầu tiên; chỉ những lần đổi trạng thái này mới tạo sự kiện và gửi cảnh báo.
Cảnh báo được gửi tới e-mail đã xác minh của tài khoản (alert_email, bật sẵn; e-mail báo “down” cách nhau ít nhất 30 phút cho mỗi monitor và có giới hạn mỗi ngày) và / hoặc tới webhook_url của bạn, nhận một request POST JSON: {"event": "monitor.down" | "monitor.up", "monitor": {id, name, url}, "status_code", "response_ms", "error", "at", "down_since"}. GET /v1/monitors liệt kê các monitor cùng trạng thái, lần kiểm tra gần nhất và tỷ lệ uptime; /v1/monitors/{id} xem một monitor kèm các sự kiện gần đây, PATCH (hoặc POST) để sửa (paused=true để tạm dừng), DELETE để xoá, /{id}/events trả về lịch sử và POST /{id}/check chạy thử thủ công mà không đổi số liệu thống kê.
Monitor gắn với tài khoản: gọi bằng API key hoặc khi đã đăng nhập, hoặc quản lý ngay trên dashboard. Gói dịch vụ quyết định số monitor và chu kỳ ngắn nhất (Free: 3 monitor, 15 phút một lần; Starter: 20 và Pro: 100, 5 phút một lần). Tạo, sửa và chạy thử tính một request như mọi API khác; các lệnh đọc GET không tính.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
url | body | string | có | URL cần giám sát (bắt buộc khi tạo). | |
name | body | string | không | Tên hiển thị (tối đa 100 ký tự). | |
method | body | string | không | GET | GET hoặc HEAD. |
expect_status | body | string | không | 200-399 | Mã trạng thái hoặc khoảng được chấp nhận, ví dụ 200,301 (tối đa 10). |
keyword | body | string | không | Chuỗi bắt buộc có trong nội dung trả về (chỉ với GET, tối đa 200 ký tự). | |
interval_minutes | body | number | không | Chu kỳ kiểm tra: từ mức tối thiểu của gói (Free 15, Starter / Pro 5) đến 1440. Mặc định: mức tối thiểu của gói, ít nhất 5. | |
timeout_ms | body | number | không | 10000 | Thời gian chờ mỗi lần kiểm tra (1000–15000 ms). |
alert_email | body | boolean | không | true | Gửi e-mail tới địa chỉ đã xác minh của tài khoản khi down / up. |
webhook_url | body | string | không | URL nhận request POST JSON (monitor.down / monitor.up); để trống để gỡ. | |
paused | body | boolean | không | false | Tạm dừng hoặc tiếp tục kiểm tra. |
id | path | string | không | /v1/monitors/{id} (GET, PATCH, POST, DELETE), /{id}/events (lịch sử), /{id}/check (POST: chạy thử). | |
limit | query | number | không | 50 | /{id}/events: số sự kiện (1–200). |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/monitors" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/","name":"Trang chủ","interval_minutes":5,"webhook_url":"https://example.com/hooks/uptime"}'const res = await fetch('https://apibox.io.vn/v1/monitors', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"url": "https://example.com/",
"name": "Trang chủ",
"interval_minutes": 5,
"webhook_url": "https://example.com/hooks/uptime"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/monitors",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"url": "https://example.com/", "name": "Trang chủ", "interval_minutes": 5, "webhook_url": "https://example.com/hooks/uptime"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/monitors');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"url":"https://example.com/","name":"Trang chủ","interval_minutes":5,"webhook_url":"https://example.com/hooks/uptime"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"id": "mon_k3x9q2v7b1m8d4f0a6zc",
"name": "Trang chủ",
"url": "https://example.com/",
"method": "GET",
"expect_status": "200-399",
"keyword": null,
"interval_minutes": 5,
"timeout_ms": 10000,
"alert_email": true,
"webhook_url": "https://example.com/hooks/uptime",
"paused": false,
"status": "up",
"last_check": {
"at": "2026-11-11T03:20:00.000Z",
"status_code": 200,
"response_ms": 184,
"error": null
},
"uptime_percent": 100,
"checks": {
"total": 1,
"failed": 0
},
"status_since": "2026-11-11T03:20:00.000Z",
"next_check_at": "2026-11-11T03:25:00.000Z",
"created_at": "2026-11-11T03:20:00.000Z",
"first_check": {
"ok": true,
"status_code": 200,
"response_ms": 184,
"error": null
}
}
Ứng dụng
- Nhận e-mail khi website, cửa hàng online bị sập
- Đẩy sự cố sang Slack, Telegram hoặc hệ thống riêng qua webhook
- Theo dõi endpoint health-check có chứa từ khoá như "ok"
- Theo dõi tỷ lệ uptime của API đối tác
Hỏi đáp
Vì sao lỗi một lần mà chưa có cảnh báo?
Monitor chỉ chuyển sang down sau 2 lần lỗi liên tiếp để tránh báo nhầm; URL được kiểm tra lại ở lượt chạy 5 phút kế tiếp.
Cảnh báo gửi tới e-mail nào?
E-mail đã xác minh của tài khoản. Hãy xác minh e-mail trong dashboard; cảnh báo được giãn cách và giới hạn mỗi ngày.
Việc kiểm tra định kỳ có trừ quota không?
Không. Tạo, sửa và chạy thử thủ công tính một request mỗi lần; các lệnh đọc GET miễn phí.
API liên quan
Webhook Tester
Tạo một URL riêng ghi lại mọi request HTTP gửi tới nó – method, header, query, body – rồi xem trực tiếp trên trình duyệt hoặc qua API.
👤Dữ liệu giả tiếng Việt
Dữ liệu test tiếng Việt như thật: họ tên, địa chỉ theo bản đồ hành chính 2025, số di động theo nhà mạng, CCCD và MST đúng cấu trúc, công ty, tài khoản ngân hàng.
{?}Dữ liệu mẫu từ JSON Schema
Sinh JSON mẫu như thật từ JSON Schema (kiểu, format, enum, pattern, khoảng giá trị, $ref, oneOf / allOf), có kiểm tra lại theo schema.