Actions
Run an uptime probe now
POST
/api/v1/projects/{id}/checks/uptime
Runs immediately and returns the result. Requires change-settings. Counts against the owner’s monthly check budget, so one probe per project every 30 seconds — sooner returns 429 probe-cooldown with Retry-After. Skips return 403 with the reason as code (e.g. check-budget, tracking-inactive, phase-off).
- API key access
- Read and write
- Project permission
- Change settings
- Success
- 200 — Check result
Parameters
Path
| Parameter | Type | Notes |
|---|---|---|
id required |
string | Project id |
Example request
Replace tk_live_YOUR_KEY with your API key and the ids with your own.
curl -X POST 'https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/checks/uptime' \
-H 'Authorization: Bearer tk_live_YOUR_KEY'
const response = await fetch('https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/checks/uptime', {
method: 'POST',
headers: {
Authorization: 'Bearer tk_live_YOUR_KEY',
},
});
const result = await response.json();
if (!response.ok) throw new Error(`${result.error.code}: ${result.error.message}`);
console.log(result.data);
import requests
response = requests.post(
"https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/checks/uptime",
headers={"Authorization": "Bearer tk_live_YOUR_KEY"},
)
result = response.json()
if not response.ok:
raise RuntimeError(f"{result['error']['code']}: {result['error']['message']}")
print(result["data"])
Example response
{
"data": {
"id": "6653d7f5b4e6a8c0d2f4b601",
"kind": "health",
"status": "success",
"statusCode": 200,
"errorClass": null,
"errorMessage": null,
"requestedUrl": "https://acmeretail.com/",
"finalUrl": "https://acmeretail.com/",
"redirectChain": [],
"crossHostRedirect": false,
"downgradedToHttp": false,
"timing": {
"dnsMs": 12,
"connectMs": 31,
"tlsMs": 44,
"ttfbMs": 182,
"totalMs": 241,
"startedAt": null
},
"healthCheckFailures": [],
"tls": {
"subjectCn": "acmeretail.com",
"issuer": "Let's Encrypt",
"validFrom": "2026-09-10T00:00:00.000Z",
"validTo": "2026-12-09T23:59:59.000Z",
"daysRemaining": 64
},
"createdAt": "2026-10-06T09:25:12.000Z"
}
}
Response fields
| Field | Type | Notes |
|---|---|---|
data |
object | |
data.id |
string | |
data.kind |
string | |
data.status |
string | |
data.statusCode |
integer or null | |
data.errorClass |
string or null | |
data.errorMessage |
string or null | |
data.requestedUrl |
string or null | |
data.finalUrl |
string or null | |
data.redirectChain |
array of object | |
data.crossHostRedirect |
boolean | |
data.downgradedToHttp |
boolean | |
data.timing |
object | Milliseconds, e.g. ttfbMs, totalMs |
data.healthCheckFailures |
array of object | |
data.tls |
object or null | |
data.createdAt |
string (date-time) |
Errors
Besides the errors any request can return (bad or missing key, plan, scope, rate limit), this endpoint can return:
| Status | error.code | Meaning |
|---|---|---|
| 404 | not-found | The resource does not exist or you cannot open it. Tracker does not reveal which. |
| 403 | flag-changeSettings | Your project membership does not include changing settings. |
| 429 | probe-cooldown | This project was probed in the last 30 seconds. Retry after Retry-After seconds. |
| 403 | check-budget | The owner’s monthly check budget is used up. |
| 403 | tracking-inactive | Tracking is turned off for this project. |
| 403 | phase-off | Uptime monitoring is turned off for this project. |
| 403 | forbidden | The account is restricted: reads still work, but changes that add or modify projects, pages or monitors are blocked (error.accountStatus is restricted). |
Errors always look like { "error": { "code": "…", "message": "…" } }. See Errors & limits.