POST /monitors/bulk
Create up to 50 monitors in a single request. Returns created monitors and per-item errors.

Authentication

Bearer Token (hu_api_key)

Request Body required

application/json
monitors object[] REQUIRED
Array of:
name string REQUIRED
type string REQUIRED
Enum: http, ping, tcp, dns, keyword, heartbeat
url string (uri)
method string REQUIRED
Enum: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
headers object
body string
interval_seconds integer REQUIRED
timeout_ms integer REQUIRED
regions string[] REQUIRED
Array of:
assertions object[]
Array of:
type string REQUIRED
operator string REQUIRED
value string REQUIRED
auth_type string
Enum: basic, bearer, header
auth_config object
keyword string
keyword_type string REQUIRED
Enum: contains, not_contains, regex
heartbeat_interval integer
heartbeat_grace integer
ssl_check boolean REQUIRED
domain_check boolean REQUIRED
screenshot_on_failure boolean REQUIRED
screenshot_compare boolean REQUIRED
screenshot_threshold number REQUIRED
retry_count integer REQUIRED
tags string[]
Array of:

Responses

201 Monitors created
application/json
monitors object[]
Array of:
name string REQUIRED
type string REQUIRED
Enum: http, ping, tcp, dns, keyword, heartbeat
url string (uri)
method string REQUIRED
Enum: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
headers object
body string
interval_seconds integer REQUIRED
timeout_ms integer REQUIRED
regions string[] REQUIRED
Array of:
assertions object[]
Array of:
type string REQUIRED
operator string REQUIRED
value string REQUIRED
auth_type string
Enum: basic, bearer, header
auth_config object
keyword string
keyword_type string REQUIRED
Enum: contains, not_contains, regex
heartbeat_interval integer
heartbeat_grace integer
ssl_check boolean REQUIRED
domain_check boolean REQUIRED
screenshot_on_failure boolean REQUIRED
screenshot_compare boolean REQUIRED
screenshot_threshold number REQUIRED
retry_count integer REQUIRED
tags string[]
Array of:
errors object[]
Array of:
index integer
error string
curl -X POST 'https://happyuptime.com/api/v1/monitors/bulk' \  -H 'Authorization: Bearer YOUR_API_TOKEN' \  -H 'Content-Type: application/json' \  -d '{  "monitors": [    {      "name": "string",      "type": "http",      "url": "https://example.com",      "method": "GET",      "headers": {},      "body": "string",      "interval_seconds": 60,      "timeout_ms": 30000,      "regions": [        "us-east"      ],      "assertions": [        {          "type": "string",          "operator": "string",          "value": "string"        }      ],      "auth_type": "basic",      "auth_config": {},      "keyword": "string",      "keyword_type": "contains",      "heartbeat_interval": -9007199254740991,      "heartbeat_grace": -9007199254740991,      "ssl_check": false,      "domain_check": false,      "screenshot_on_failure": true,      "screenshot_compare": false,      "screenshot_threshold": 0.05,      "retry_count": 2,      "tags": [        "string"      ]    }  ]}'
const response = await fetch('https://happyuptime.com/api/v1/monitors/bulk', {  method: 'POST',  headers: {      "Authorization": "Bearer YOUR_API_TOKEN",      "Content-Type": "application/json"  },  body: JSON.stringify({    "monitors": [      {        "name": "string",        "type": "http",        "url": "https://example.com",        "method": "GET",        "headers": {},        "body": "string",        "interval_seconds": 60,        "timeout_ms": 30000,        "regions": [          "us-east"        ],        "assertions": [          {            "type": "string",            "operator": "string",            "value": "string"          }        ],        "auth_type": "basic",        "auth_config": {},        "keyword": "string",        "keyword_type": "contains",        "heartbeat_interval": -9007199254740991,        "heartbeat_grace": -9007199254740991,        "ssl_check": false,        "domain_check": false,        "screenshot_on_failure": true,        "screenshot_compare": false,        "screenshot_threshold": 0.05,        "retry_count": 2,        "tags": [          "string"        ]      }    ]  })});const data = await response.json();console.log(data);
import requestsheaders = {    'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('https://happyuptime.com/api/v1/monitors/bulk', headers=headers, json={  "monitors": [    {      "name": "string",      "type": "http",      "url": "https://example.com",      "method": "GET",      "headers": {},      "body": "string",      "interval_seconds": 60,      "timeout_ms": 30000,      "regions": [        "us-east"      ],      "assertions": [        {          "type": "string",          "operator": "string",          "value": "string"        }      ],      "auth_type": "basic",      "auth_config": {},      "keyword": "string",      "keyword_type": "contains",      "heartbeat_interval": -9007199254740991,      "heartbeat_grace": -9007199254740991,      "ssl_check": false,      "domain_check": false,      "screenshot_on_failure": true,      "screenshot_compare": false,      "screenshot_threshold": 0.05,      "retry_count": 2,      "tags": [        "string"      ]    }  ]})print(response.json())
201 Response
{  "monitors": [    {      "name": "<string>",      "type": "http",      "url": "<uri>",      "method": "GET",      "headers": "<object>",      "body": "<string>",      "interval_seconds": 123,      "timeout_ms": 123,      "regions": [        "us-east"      ],      "assertions": [        {          "type": "<string>",          "operator": "<string>",          "value": "<string>"        }      ],      "auth_type": "basic",      "auth_config": "<object>",      "keyword": "<string>",      "keyword_type": "contains",      "heartbeat_interval": 123,      "heartbeat_grace": 123,      "ssl_check": true,      "domain_check": true,      "screenshot_on_failure": true,      "screenshot_compare": true,      "screenshot_threshold": 123,      "retry_count": 123,      "tags": [        "<string>"      ]    }  ],  "errors": [    {      "index": 123,      "error": "<string>"    }  ]}