Data
Daily uptime
GET
/api/v1/projects/{id}/uptime/daily
Scheduled uptime checks summed per UTC day, for charts and reports: uptime %, average response time and TTFB, plus totals for the range. Days without checks are included with null values. The range defaults to the last 7 days and starts no earlier than your plan keeps history (retentionDays).
- API key access
- Read only or read and write
- Project permission
- View health
- Success
- 200 — OK
Parameters
Path
| Parameter | Type | Notes |
|---|---|---|
id required |
string | Project id |
Query string
| Parameter | Type | Notes |
|---|---|---|
from |
string (date) | First day, YYYY-MM-DD (UTC) |
to |
string (date) | Last day, YYYY-MM-DD (UTC), inclusive |
Example request
Replace tk_live_YOUR_KEY with your API key and the ids with your own.
curl 'https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/uptime/daily?from=2026-10-04&to=2026-10-06' \
-H 'Authorization: Bearer tk_live_YOUR_KEY'
const response = await fetch('https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/uptime/daily?from=2026-10-04&to=2026-10-06', {
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.get(
"https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/uptime/daily",
headers={"Authorization": "Bearer tk_live_YOUR_KEY"},
params={
"from": "2026-10-04",
"to": "2026-10-06",
},
)
result = response.json()
if not response.ok:
raise RuntimeError(f"{result['error']['code']}: {result['error']['message']}")
print(result["data"])
Example response
{
"data": {
"from": "2026-10-04",
"to": "2026-10-06",
"retentionDays": 90,
"days": [
{
"date": "2026-10-04",
"checks": 288,
"up": 288,
"down": 0,
"uptimePct": 100,
"avgMs": 240,
"avgTtfbMs": 180
},
{
"date": "2026-10-05",
"checks": 288,
"up": 285,
"down": 3,
"uptimePct": 99,
"avgMs": 263,
"avgTtfbMs": 190
},
{
"date": "2026-10-06",
"checks": 0,
"up": 0,
"down": 0,
"uptimePct": null,
"avgMs": null,
"avgTtfbMs": null
}
],
"summary": {
"checks": 576,
"up": 573,
"down": 3,
"uptimePct": 99.5,
"avgMs": 251,
"avgTtfbMs": 185
}
}
}
Response fields
| Field | Type | Notes |
|---|---|---|
data |
object | |
data.from |
string (date) | First day actually covered |
data.to |
string (date) | Last day actually covered |
data.retentionDays |
integer | Days of history your plan keeps |
data.summary |
object | Rate-limited (429) answers count as up: the site responded. |
data.summary.checks |
integer | |
data.summary.up |
integer | |
data.summary.down |
integer | |
data.summary.uptimePct |
number or null | Null when there were no checks |
data.summary.avgMs |
integer or null | Average total response time |
data.summary.avgTtfbMs |
integer or null | |
data.days |
array of object | |
data.days[].date |
string (date) | |
data.days[].checks |
integer | |
data.days[].up |
integer | |
data.days[].down |
integer | |
data.days[].uptimePct |
number or null | Null when there were no checks |
data.days[].avgMs |
integer or null | Average total response time |
data.days[].avgTtfbMs |
integer or null |
Errors
Besides the errors any request can return (bad or missing key, plan, scope, rate limit), this endpoint can return:
| Status | error.code | Meaning |
|---|---|---|
| 400 | invalid-request | A parameter or body field is missing or invalid; error.message says which. |
| 404 | not-found | The resource does not exist or you cannot open it. Tracker does not reveal which. |
| 403 | flag-viewHealth | Your project membership does not include viewing health. |
Errors always look like { "error": { "code": "…", "message": "…" } }. See Errors & limits.