# Tạo monitor

`POST /service/@id/uptime/monitors` · Tino Uptime, token đăng nhập của chủ dịch vụ

Body JSON: tên, chu kỳ, vị trí dò và `settings` theo [loại monitor](/docs/uptime-start#loai-monitor). Tino Uptime chạy lượt kiểm đầu ngay và chờ tối đa 10 giây: kết quả ở `first_check` (`status: pending` khi quá hạn). Monitor heartbeat có `settings.ping_url` chỉ trong câu trả lời này. HTTP 201. Vượt hạn mức gói (số monitor, chu kỳ, vị trí) trả 403 `entitlement_exceeded`; đích nội bộ hoặc không an toàn trả 422 `validation_failed` (`details.reason: blocked_destination`); đích đang bị kiểm quá dày trả 422 `target_rate_exceeded`.

## HTTP request

| Mục | Giá trị |
| --- | --- |
| URL | `https://api.tino.vn/service/@id/uptime/monitors` |
| Method | `POST` |
| Xác thực | token đăng nhập của chủ dịch vụ Tino Uptime (`Authorization: Bearer <token>`); gateway `/v1` chưa mở Tino Uptime |
| Content-Type | `application/json` |

## Tham số

| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- | --- |
| `id` | đường dẫn | int | có | ID dịch vụ Tino Uptime |
| `name` | body | string | có | Tên monitor, 1–200 ký tự |
| `interval_s` | body | int | có | Chu kỳ kiểm (giây), 30–86400, không dưới `limits.min_interval_s` của gói |
| `locations` | body | array | không | Vị trí dò, tối đa 10, trong `limits.locations` của gói (`vn-cmc`, `vn-vt`, `intl`) |
| `settings` | body | object | có | Loại và đích kiểm: `type` là `http`, `keyword`, `ssl`, `domain`, `ping`, `tcp`, `dns` hoặc `heartbeat`, trường theo loại ở [Bắt đầu với Tino Uptime](/docs/uptime-start#loai-monitor) |
| `international_critical` | body | boolean | không | `true`: chỉ điểm dò quốc tế lỗi cũng tính là down; mặc định `false` |
| `idempotency_key` | body | string | không | 8–128 ký tự `A-Za-z0-9._:-`: gửi lại cùng khoá và cùng body thì không tạo thêm |

## Example request

```bash
curl -X POST "https://api.tino.vn/service/100002/uptime/monitors" \
  -H "Authorization: Bearer $TINO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Website chính",
  "interval_s": 60,
  "locations": [
    "vn-cmc",
    "vn-vt",
    "intl"
  ],
  "settings": {
    "type": "http",
    "url": "https://example.com/",
    "expected_status": [
      200
    ]
  },
  "idempotency_key": "website-chinh-0001"
}'
```

`$TINO_TOKEN` là token đăng nhập của chủ dịch vụ Tino Uptime. Tham số đường dẫn trong ví dụ là giá trị mẫu.

SDK ([SDK & Ví dụ](/docs/sdk)): chưa có hàm riêng, dùng `client.request("POST", "/service/@id/uptime/monitors")`.

## Example response

```json
{
 "data": {
  "id": "3f6c2a10-8b1e-4c5d-9a7f-2e4b6c8d0a11",
  "name": "Website chính",
  "interval_s": 60,
  "locations": [
   "vn-cmc",
   "vn-vt",
   "intl"
  ],
  "enabled": true,
  "paused_until": null,
  "snoozed_until": null,
  "disabled_reason": null,
  "verified": true,
  "created_at": "2026-10-24T08:00:00+07:00",
  "settings": {
   "type": "http",
   "url": "https://example.com/",
   "method": "GET",
   "expected_status": [
    200
   ],
   "follow_redirects": true,
   "header_names": [],
   "basic_auth_set": false,
   "body_set": false
  },
  "international_critical": false,
  "state": "pending",
  "state_since": null,
  "last_check_at": null,
  "last_latency_ms": null,
  "last_error_kind": null,
  "current_incident_id": null,
  "ssl_expires_at": null,
  "domain_expires_at": null,
  "uptime_30d": null,
  "first_check": {
   "status": "done",
   "outcome": "ok",
   "latency_ms": 182,
   "status_code": 200,
   "error_kind": null,
   "location": "vn-cmc",
   "reason": null
  }
 }
}
```

Mẫu dựng theo OpenAPI của Tino Uptime (Tino chuyển tiếp nguyên câu trả lời trong `data`), giá trị là ví dụ.
