Skip to main content
REST API v2

Monitor everything you run. From code.

HostTracker's uptime monitoring API is one REST surface - 182 operations across 14 resource groups - for creating monitors, reading results, managing incidents and alerts, and wiring up webhooks, all from your own code. One token authenticates every call, and the same 300+ checkpoints that back the dashboard back every one of them.

One API token powers the REST API, the SDKs, ht-cli and the MCP server · 30-day trial · no credit card
GET /monitor?state=down
curl -s "https://api2.host-tracker.com/monitor?state=down&limit=3" \
  -H "Authorization: Bearer $HT_TOKEN"

{"data":[{"id":"0192f3c1-6d0a-7b41-9c22-5b1f4a0e77aa","type":"http","name":"api gateway","url":"https://api.example.com/health","state":"down","since":1785670783}],"nextCursor":null,"hasMore":false}
Illustrative response shape, not a real account
Surface182 operations14 resource groups, 145 paths, one token.
Coverage300+ checkpoints334 checkpoints across 158 cities.
Monitor types13 typesHttp, API, Ping, Port, DNS, SSL and more, one API.
Webhooks15 event types13 subscribable, 2 callback-only, signed twice.
Async writesIdempotency-Key + jobs202 plus a job you can poll or get a callback on.
Track recordSince 2004Two decades of uptime data behind every call.
Getting started

Up and running in three steps

  1. Mint a token. Sign in, open Integrations - API, choose the scopes the integration needs, and copy the token - it is shown once. Left alone it lasts ten years and cannot be revoked before it expires, so scope it narrowly and add an IP allow-list if it leaves your own hands.
  2. Make the first call. Any endpoint proves the token; listing what is currently down is a good place to start.
    curl -s "https://api2.host-tracker.com/monitor?state=down&limit=3" \
      -H "Authorization: Bearer $HT_TOKEN"
  3. Subscribe a webhook. Register your endpoint and pick the events it cares about. Every delivery is signed twice - HT-Signature and Standard Webhooks - and, for the events the monitoring engine raises, retried up to five times over roughly 2.6 hours.
    curl -X POST https://api2.host-tracker.com/webhook \
      -H "Authorization: Bearer $HT_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"url": "https://hooks.example.com/host-tracker", "events": ["monitor.down", "monitor.up"], "scope": {"all": true}}'
The surface

14 resource groups, one token

Every domain the dashboard touches has a matching set of endpoints - read what you need, write what you need, and nothing requires a second credential.

Core

Monitors

Create, list, update and delete monitors of 13 check types; pause, resume, copy and bulk-create.

Core

Monitor types

The type catalogue - one entry per check type, its settings schema and your account's own limits.

Data

Results

The raw check-result history behind every monitor, filterable by time window and location.

Data

Incidents

Every confirmed down episode, open or closed, with duration and the checkpoints that confirmed it.

Control

Maintenance

Scheduled windows that suppress alerting without pausing the monitor underneath them.

Alerting

Contacts

The people and channels alerts reach - email, SMS, voice call, webhook, Slack and messengers.

Alerting

Alerts

Per-monitor alert subscriptions - which contact hears about which monitor, and after what delay.

Alerting

Reports

Scheduled and on-demand uptime reports over a set of monitors and a time range.

Alerting

Webhooks

Signed HTTPS deliveries of monitor and account events, with retries and a delivery log.

Public

Status pages

Public pages built from your monitors, with incidents you can post to them directly.

Account

Account

Your plan, usage and quota - read on demand without spending any of it.

Account

Monitoring locations

The pools of checkpoints a monitor can run from, and how many agents each one holds.

On demand

Instant checks

One-off checks across 10 types, run synchronously and returned in the same request.

Async

Jobs

The async door for bulk creates, bulk updates, bulk deletes and reports - poll it or get a callback.

Recipes

What you can build with a token

Create an http monitor with an assertion

AssertRuleLang rules judge the response, not just the status code - here, up means a 2xx that also contains the text a working checkout page always renders.

curl -X POST https://api2.host-tracker.com/monitor \
  -H "Authorization: Bearer $HT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: checkout-monitor-1" \
  -d '{
    "type": "http",
    "url": "https://example.com/checkout",
    "name": "Checkout flow",
    "interval": 60,
    "locations": { "pools": ["westeurope"] },
    "settings": { "assertMode": true, "assertsSource": "status isOk\nbody contains \"Add to cart\"" }
  }'

Pause a monitor during a deploy

A monitor's enabled flag is a plain PATCH - flip it off before a release and back on when the deploy is done.

curl -X PATCH https://api2.host-tracker.com/monitor/MONITOR_ID \
  -H "Authorization: Bearer $HT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled": false}'

List what is down

The same filter the dashboard uses, straight over the wire.

curl -s "https://api2.host-tracker.com/monitor?state=down" \
  -H "Authorization: Bearer $HT_TOKEN"

Open a status-page incident

Declaring an incident fans out to the page's subscribers, so this is one of the nine writes that require an Idempotency-Key.

curl -X POST https://api2.host-tracker.com/statuspage/PAGE_ID/incident \
  -H "Authorization: Bearer $HT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: incident-2026-08-23-1" \
  -d '{"title": "Elevated error rates", "state": "investigating", "message": "We are looking into a spike in errors on checkout.", "impact": "major"}'

Run an instant check from several regions and poll it

An instant check is synchronous work behind an async door - it answers 202 with a Retry-After, and the same id resolves the result.

curl -X POST https://api2.host-tracker.com/check \
  -H "Authorization: Bearer $HT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "type": "http", "pools": ["westeurope", "asia"]}'

curl -s https://api2.host-tracker.com/check/DB_ID/CHECK_ID \
  -H "Authorization: Bearer $HT_TOKEN"

Subscribe a contact to a monitor

Setting the alert-type set for a (monitor, contact) pair is idempotent - send the whole set every time, not a diff.

curl -X PUT https://api2.host-tracker.com/monitor/MONITOR_ID/alert/CONTACT_ID \
  -H "Authorization: Bearer $HT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"alertTypes": ["down", "up"]}'

Verify a webhook signature

HMAC-SHA256 over the timestamp and the raw body, keyed on the whole secret string - the full working code, in Python and Node, is in the webhooks guide.

signed   = timestamp + "." + raw_body_bytes
expected = hmac_sha256_hex(secret, signed)
if not any(hmac_equal(expected, s) for s in signatures_from(header)):
    reject()  # never trust a re-serialized body

Bulk-create monitors from a CSV, safely

The bulk door is async and requires an Idempotency-Key - a timed-out request can be retried without creating the batch twice.

curl -X POST https://api2.host-tracker.com/monitor/bulk \
  -H "Authorization: Bearer $HT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: csv-import-2026-08-23" \
  -d '{"items": [{"type": "http", "url": "https://a.example.com"}, {"type": "http", "url": "https://b.example.com"}]}'

curl -s https://api2.host-tracker.com/job/JOB_ID \
  -H "Authorization: Bearer $HT_TOKEN"
One surface, four doors

REST, SDKs, ht-cli, MCP - and webhooks in and out

DoorEntry pointWhere
REST (curl or any HTTP client)https://api2.host-tracker.comInteractive reference
Official SDKsTypeScript, Python, Go, .NET - typed, generated from the same OpenAPI documentSDKs overview
ht-cli139 commands generated from the same spec, for a shell or CICLI overview
MCP serverhttps://mcp.host-tracker.com/mcp, one token, 65 toolsMCP server overview
GitHub Actionuses: HostTracker/check-action@v1HostTracker/check-action
Webhooks (events out)POST /webhook, signed HTTPS deliveriesWebhooks guide
Access, limits and safety

One token. Stated limits. Nothing hidden behind "generous".

The same personal API token authenticates the REST API v2, every official SDK, the ht-cli command line client and the MCP server. Mint it once on your HostTracker profile, pick the scopes it may use, and point any of the four at it.

PlanAPI accessReadsWrites
Free, Personal, WebmasterNot included--
30-day trialIncluded10 per minute, 10,000 per month5 per minute, 500 per month
BusinessIncluded60 per minute, 100,000 per month30 per minute, 20,000 per month
EnterpriseIncluded120 per minute, 1,000,000 per month60 per minute, 100,000 per month
  • Scoped tokens. A token carries only the scopes you tick - monitor, contact, webhook, check, status page, report, incident, maintenance, job, account - each as read or write. Grant what the integration needs and nothing else.
  • Long-lived, not revocable. Tokens are JWTs with a lifetime you choose (10 years by default) and cannot be revoked before they expire; an account-wide API switch disables every token at once. Treat a token like a password: keep it out of source control, and add an IP allow-list and a per-token request cap when you mint it.
  • Limits you can read. Every response carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and RateLimit-Policy; a 429 carries Retry-After. Current usage is on the Integrations - API page and at GET /account/quota.
  • Safe retries. Writes accept an Idempotency-Key, so a retried request is never a duplicate; long operations return a job you can poll or have delivered to a webhook.

Full details: authentication and limits in the docs. Plans and prices: pricing.

API v1 - legacy

API v1 is the older REST API at https://api1.host-tracker.com/ (also reachable through www.host-tracker.com/api/web/v1/). It manages monitoring tasks, contacts, subscriptions, statistics, outages, incidents and agents, and it authenticates by exchanging a login and password for a 48-hour token rather than a long-lived bearer token.

API v1 is obsolete: it keeps working and has no removal date, but it gets no new capability. Maintenance windows, webhooks, contact groups, status pages, instant checks and the bulk job doors exist only in API v2 - new integrations use v2. Existing v1 integrations do not need to change on any particular schedule.

Reference: the v1 documentation. Moving over: what each v1 endpoint became in v2, endpoint by endpoint.

Looking for a tool that monitors YOUR API? That is a different job - API monitoring checks that someone else's (or your own) API endpoints are up and answering correctly. This page is about calling HostTracker's own API to control your monitoring.

Frequently Asked Questions

The REST API v2 is included in the 30-day free trial and in the Business and Enterprise plans. It is not part of the Free, Personal or Webmaster plans - upgrade or start a trial to mint a token. The access and limits table below states exactly what each plan's token can do.

Sign in, open Integrations - API on your profile, choose the scopes the integration needs - monitor, contact, webhook, check, status page, report, incident, maintenance, job or account, each as read or write, or the whole family - and mint the token. It is shown once and is not stored on our side, so copy it immediately; if you lose it, mint another. Left alone a token lasts ten years, but you can set a shorter expiration, an IP allow-list of up to ten addresses, and a per-token request cap.

They are set by plan, not by endpoint. The 30-day trial gets 10 reads and 5 writes per minute, 10,000 reads and 500 writes a month. Business gets 60 reads and 30 writes per minute, 100,000 reads and 20,000 writes a month. Enterprise gets 120 reads and 60 writes per minute, 1,000,000 reads and 100,000 writes a month. Every response carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and RateLimit-Policy headers, and a 429 adds Retry-After, so you back off exactly as long as needed instead of guessing.

No. The Free, Personal and Webmaster plans do not include API access at all - there is no free tier of the API on its own. The 30-day trial does include it, with no card required, which is the way to evaluate the API before committing to a paid plan. Production use needs Business or Enterprise.

Webhooks, for anything time-sensitive. Fifteen event types cover monitor state changes, incidents, monitor lifecycle, maintenance and expiry warnings, delivered as a signed HTTPS POST with a five-attempt retry ladder over about 2.6 hours for the events the monitoring engine raises. Poll GET /monitor or GET /monitor/incident when you only need current state on your own schedule, or as a fallback before you have a receiving endpoint wired up - both ride the same token and the same scopes.

Any write accepts an Idempotency-Key header, and nine operations - the bulk create, update and delete doors, reset-stats, and the status-page incident writes - refuse without one, because a retried request after a timeout must never repeat the effect. Bulk operations answer 202 with a job id instead of doing the work inline; poll GET /job/{id} or name a webhook as a callback, and read state (queued, running, succeeded, partial, failed, interrupted) rather than assuming success or failure from the HTTP status alone.

No, you do not have to migrate: API v1 keeps working with no removal date. But it gets no new capability - maintenance windows, webhooks, contact groups, status pages, instant checks and the bulk job doors exist only in v2, and v1 authenticates with a login-and-password exchange for a 48-hour token rather than a long-lived bearer token. New integrations should start on v2; the migration guide maps every v1 endpoint to its v2 equivalent.

Yes. The v2 API is described by a published OpenAPI 3.1 document at https://api2.host-tracker.com/openapi/v2.json (source at github.com/HostTracker/openapi), and it is the same document the four official SDKs are generated from - any OpenAPI-generator-compatible tool can produce a client in a language we do not ship. You lose the hand-written layer the official SDKs add - retries, idempotency keys, paging, webhook verification - but the endpoint coverage is identical.

30-day free trial - no credit card

Put your monitoring under version control

Start a free trial, mint a token and make your first call in a minute - the same 300+ checkpoints, driven from your code.