# Update a monitor

`PUT /service/@id/uptime/monitors/@monitor` · Tino Uptime, service owner's sign-in token

Send only the fields to change, as a JSON body. `settings` carries every required field of its type; for `http`, `keyword`: omit `headers`, `body`, `basic_auth` to keep them, `headers: {}` or `body: ""` to remove, `clear_basic_auth: true` to remove Basic auth. `enabled: false` turns the monitor off.

## HTTP request

| Item | Value |
| --- | --- |
| URL | `https://api.tino.vn/service/@id/uptime/monitors/@monitor` |
| Method | `PUT` |
| Authentication | the Tino Uptime service owner's sign-in token (`Authorization: Bearer <token>`); the `/v1` gateway does not expose Tino Uptime yet |
| Content-Type | `application/json` |

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | int | yes | Tino Uptime service ID |
| `monitor` | path | string | yes | Monitor ID (UUID, `id` in the monitor list) |
| `name` | body | string | no | Monitor name, 1–200 characters |
| `interval_s` | body | int | no | Check interval in seconds, 30–86400, not below the plan's `limits.min_interval_s` |
| `locations` | body | array | no | Probe locations, up to 10, within the plan's `limits.locations` (`vn-cmc`, `vn-vt`, `intl`) |
| `enabled` | body | boolean | no | `false` turns the monitor off (settings kept), `true` turns it back on |
| `settings` | body | object | no | Check type and target: `type` is `http`, `keyword`, `ssl`, `domain`, `ping`, `tcp`, `dns` or `heartbeat`, fields per type in [Getting started with Tino Uptime](/en/docs/uptime-start#monitor-types) |
| `international_critical` | body | boolean | no | `true`: a failure seen only by the international probe also counts as down; default `false` |

## Example request

```bash
curl -X PUT "https://api.tino.vn/service/100002/uptime/monitors/3f6c2a10-8b1e-4c5d-9a7f-2e4b6c8d0a11" \
  -H "Authorization: Bearer $TINO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "interval_s": 120
}'
```

`$TINO_TOKEN` is the Tino Uptime service owner's sign-in token. Path parameters in the example are sample values.

SDK ([SDK & examples](/en/docs/sdk)): no dedicated function yet, use `client.request("PUT", "/service/@id/uptime/monitors/@monitor")`.

## Example response

```json
{
 "data": {
  "id": "3f6c2a10-8b1e-4c5d-9a7f-2e4b6c8d0a11",
  "name": "Website chính",
  "interval_s": 120,
  "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": "up",
  "state_since": "2026-10-24T09:15:00+07:00",
  "last_check_at": "2026-10-24T10:30:00+07:00",
  "last_latency_ms": 182,
  "last_error_kind": null,
  "current_incident_id": null,
  "ssl_expires_at": "2027-01-15T07:00:00+07:00",
  "domain_expires_at": null,
  "uptime_30d": 99.98
 }
}
```

Sample built from the Tino Uptime OpenAPI (Tino relays the answer as is inside `data`); values are examples.
