MonitorsTcp monitors
Update TCP Monitor
Updates a TCP monitor.
PATCH /api/tcp-monitors/:tcpMonitorPublicId
Authentication
Requires a valid session.
- Header:
Authorization: Bearer <token>
Parameters
tcpMonitorPublicId(Path, required): TCP monitor public UUID.
Request Body
All fields are optional.
{
"name": "Redis Primary",
"hostname": "redis.example.com",
"port": 6379,
"status": "paused",
"checkInterval": 60,
"timeoutSeconds": 30,
"allowedCheckCountryCodes": ["de", "ch"],
"config": {
"expectBanner": "+PONG"
}
}Notes
statusacceptsactive,maintenance,disabled,paused,inactive.pausedandinactiveare normalized todisabled.port, if provided, must be an integer between1and65535.allowedCheckCountryCodesis normalized to uppercase ISO codes (e.g.DE,US). Empty lists becomenull.configonly accepts theexpectBannerkey (merged into the existing stored config). There is nosshConfig-style alias and no credential fields — TCP monitors carry no credentials. If omitted, the stored config is not changed.- Users with
readonlyrole can only changestatus.
cURL
curl -X PATCH "https://YOUR_DOMAIN/api/tcp-monitors/44444444-4444-4444-8444-444444444444" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "disabled"
}'Response
{
"id": 300,
"publicId": "44444444-4444-4444-8444-444444444444",
"organizationId": 1,
"customerId": 10,
"name": "Redis Primary",
"hostname": "redis.example.com",
"port": 6379,
"status": "disabled",
"managementType": "managed",
"checkInterval": 60,
"timeoutSeconds": 30,
"notificationEmail": null,
"notificationPhoneNumber": null,
"lastCheckedAt": "2026-02-26T12:00:00.000Z",
"createdAt": "2026-02-26T12:00:00.000Z",
"updatedAt": "2026-02-26T12:01:00.000Z",
"config": {
"expectBanner": "+PONG"
}
}Errors
400TCP monitor ID is required / invalid fields (e.g.invalidPort,invalidConfig,invalidStatus)401Unauthorized403Forbidden (readonly users may only updatestatus; global supporters cannot update)404Not found