Add a domain or IP
POST
/api/v1/hosts
const url = 'https://app.hostrepute.com/api/v1/hosts';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"data_source_group_uuid":"01a178db-d581-700d-9729-4f4abc8cee72","name":"News mail","host":"news.example.com"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://app.hostrepute.com/api/v1/hosts \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "data_source_group_uuid": "01a178db-d581-700d-9729-4f4abc8cee72", "name": "News mail", "host": "news.example.com" }'Start monitoring a domain or IP. From then on it is checked on your team’s schedule. Your plan limits how many domains and IPs a team can monitor; past the limit the request fails with 422.
Needs the host:create ability.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
data_source_group_uuid
required
The UUID of the check profile to use. List them with GET /api/v1/data-source-groups.
string
Example
01a178db-d581-700d-9729-4f4abc8cee72name
required
A name for the domain or IP, up to 255 characters.
string
Example
News mailhost
required
The domain or IP address to monitor. It must be public: private, loopback and reserved addresses are rejected.
string
Example
news.example.comResponses
Section titled “Responses”Media typeapplication/json
object
data
object
uuid
string
name
string
host
string
blocklisted_at
string
data_source_group
object
uuid
string
name
string
slug
string
description
string
is_default
boolean
deliverability_checks_enabled
boolean
deliverability_checks
Array<string>
created_at
string
updated_at
string
created_at
string
updated_at
string
Example
{ "data": { "uuid": "01a178db-d79e-7114-b468-89b175266ba2", "name": "News mail", "host": "news.example.com", "blocklisted_at": null, "data_source_group": { "uuid": "01a178db-d581-700d-9729-4f4abc8cee72", "name": "Default", "slug": "default", "description": "All production domains", "is_default": true, "deliverability_checks_enabled": true, "deliverability_checks": [ "mx_health", "spf_record", "spf_strict", "spf_lookup_limit", "dmarc_record", "dmarc_strict" ], "created_at": "2026-07-14T09:12:44.000000Z", "updated_at": "2026-09-02T14:05:31.000000Z" }, "created_at": "2026-10-26T15:37:15.000000Z", "updated_at": "2026-10-26T15:37:15.000000Z" }}The check profile belongs to another team
Media typeapplication/json
object
message
string
Example
{ "message": "No query results for model [App\\Models\\DataSourceGroup]."}Plan limit reached
Media typeapplication/json
object
message
string
errors
object
host
Array<string>
Example
{ "message": "Your current plan cannot monitor more hosts.", "errors": { "host": [ "Your current plan cannot monitor more hosts." ] }}
