MonitorsFtp monitors
Create FTP Monitor
Creates a new FTP monitor.
POST /api/ftp-monitors
Authentication
This endpoint requires an API token:
Authorization: Bearer <token>
Request Body
customerId(required, number | string): internal numeric customer ID or customerpublicIdUUIDname(required, string)hostname(required, string): Must be a hostname (no protocol, no path).port(optional, number | null): If omitted/null, the worker uses a default port.status(optional):active,maintenance,disabled(also acceptsinactiveand normalizes it todisabled)checkInterval(optional, number): Minutes (min: 1, max: 60)timeoutSeconds(optional, number): Seconds (min: 1, max: 60)ftpConfig(optional, object): FTP connection options (stored as JSON)
ftpConfig
The monitoring worker reads these keys:
user(optional, string): Defaults toanonymouspassword(optional, string): Defaults toanonymous@secure(optional, boolean |"implicit"):false(default): plain FTPtrue: explicit TLS"implicit": implicit TLS (worker defaults port to990whenportis not provided)
{
"customerId": "6764e84f-f02a-43e6-a46d-cecaec556723",
"name": "FTP Availability",
"hostname": "claas.sh",
"port": 21,
"status": "active",
"checkInterval": 5,
"timeoutSeconds": 30,
"ftpConfig": {
"user": "root",
"password": "exampleRoot",
"secure": "explicit"
}
}Example (cURL)
BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"
curl -X POST \
"$BASE_URL/api/ftp-monitors" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"customerId":"6764e84f-f02a-43e6-a46d-cecaec556723","name":"FTP Availability","hostname":"claas.sh","port":21,"status":"active","checkInterval":5,"timeoutSeconds":30,"ftpConfig":{"user":"root","password":"exampleRoot","secure":"explicit"}}'Response
{
"id": 400,
"organizationId": 1,
"customerId": 2,
"name": "FTP Availability",
"hostname": "claas.sh",
"port": 21,
"status": "active",
"checkInterval": 5,
"timeoutSeconds": 30,
"allowedCheckCountryCodes": null,
"notificationPhoneNumber": null,
"notificationEmail": null,
"lastCheckedAt": null,
"createdAt": "2026-02-25T10:00:00.000Z",
"updatedAt": "2026-02-25T10:00:00.000Z",
"config": {
"user": "root",
"password": "exampleRoot",
"secure": "explicit"
},
"ftpConfig": {
"user": "root",
"password": "exampleRoot",
"secure": "explicit"
}
}Common Errors
400 Invalid Customer identifierifcustomerIdis neither a valid UUID nor a legacy numeric ID400 hostname must be a valid hostname (no protocol, no path)on invalid hostnames401 Unauthorizedif you are not authenticated403 Forbiddenif you do not have access or are not allowed to create monitors (e.g. read-only or global supporter)404 Customer not foundif thecustomerIddoes not exist