# Tạo kênh cảnh báo

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

Kênh mới chờ xác minh, trừ email tới đúng địa chỉ đã xác minh của chủ tài khoản. `verification.method` cho biết bước tiếp: `email_code` (mã trong thư, hiệu lực 24 giờ), `telegram_link` (mở `telegram_url` trong 10 phút), `test_message` (Discord, Slack, webhook: gọi [xác minh kênh](/docs/api/uptime-post-channels-channel-verify) để gửi tin thử), `zalo_link`, `zalo_otp`. Kênh webhook trả `webhook_secret` (`whsec_…`) chỉ một lần. HTTP 201. Loại kênh ngoài `limits.channels` của gói trả 403 `entitlement_exceeded`.

## HTTP request

| Mục | Giá trị |
| --- | --- |
| URL | `https://api.tino.vn/service/@id/uptime/channels` |
| 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 |
| `kind` | body | string | có | `email`, `telegram`, `discord`, `slack`, `webhook` hoặc `zalo`, trong `limits.channels` của gói |
| `name` | body | string | có | Tên kênh, 1–100 ký tự |
| `config` | body | object | không | `address` cho email; `url` (https) cho Discord, Slack, webhook; Zalo: `consent: true` và `phone` (số di động, xác minh bằng OTP) hoặc bỏ `phone` để liên kết qua OA; Telegram không cần |
| `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/channels" \
  -H "Authorization: Bearer $TINO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "kind": "email",
  "name": "Email kỹ thuật",
  "config": {
    "address": "ops@example.com"
  },
  "idempotency_key": "kenh-email-ops-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/channels")`.

## Example response

```json
{
 "data": {
  "id": "c41e8b20-6d7f-4a1c-9b3e-5f2a8d0c6e17",
  "kind": "email",
  "name": "Email kỹ thuật",
  "target": "o***@example.com",
  "verified_at": null,
  "opted_in_at": null,
  "disabled_reason": null,
  "last_sent_at": null,
  "link_pending": false,
  "route_key": null,
  "created_at": "2026-10-24T10:40:00+07:00",
  "verification": {
   "method": "email_code",
   "expires_at": "2026-10-25T10:40:00+07:00"
  }
 }
}
```

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ụ.
