Meta
Health, uptime, public counts and the spec itself.
The spec, and the health of the API.
Get the current health of the API
GET/health
Reports whether the database answers and whether each background worker has finished a loop recently. A worker is ok when its last successful iteration is within three of its loop intervals, and never sooner than two minutes, so that a queue taking a minute to drain is not called an outage. status is degraded when any check is not ok. No API key needed. The answer is cached for 10 seconds, so time can be up to 10 seconds behind. Both health endpoints share one limit of 60 requests a minute per IP.
curl "https://api.yeetpost.com/api/v2/health"{ "status": "ok", "checks": { "database": { "ok": true, "latencyMs": 3 }, "scheduledPosts": { "ok": true, "lastRunAt": "2026-08-29T11:04:58.120Z", "lastOkAt": "2026-08-29T11:04:58.120Z" }, "webhookDeliveries": { "ok": true, "lastRunAt": "2026-08-29T11:04:57.870Z", "lastOkAt": "2026-08-29T11:04:57.870Z" }, "xUsageSweep": { "ok": true, "lastRunAt": "2026-08-29T11:04:31.004Z", "lastOkAt": "2026-08-29T11:04:31.004Z" } }, "version": "2.0.0", "time": "2026-08-29T11:05:00.512Z"}response 200
The health of the API. The status code is 200 whether the API is ok or degraded: read status.
response body
ok | degraded
How long the health query took.
One background worker loop. ok is false when the loop has not finished an iteration within three of its intervals, and when it has never finished one at all.
When the loop last ran, whether or not that iteration finished.
When the loop last finished an iteration.
One background worker loop. ok is false when the loop has not finished an iteration within three of its intervals, and when it has never finished one at all.
When the loop last ran, whether or not that iteration finished.
When the loop last finished an iteration.
One background worker loop. ok is false when the loop has not finished an iteration within three of its intervals, and when it has never finished one at all.
When the loop last ran, whether or not that iteration finished.
When the loop last finished an iteration.
The API version that answered.
When the health was measured, ISO 8601 UTC.
Get daily uptime for the last 90 days
GET/health/history
The health of the API is sampled once a minute and kept for 90 days. This endpoint aggregates those samples per UTC day. What is measured is minutes, not samples: a day owes 1440 of them, today owes the minutes already behind it, and a minute with no sample counts as degraded exactly like a sample that came back degraded. A day owes minutes only from the first sample ever taken onwards, so a day that was over before sampling began is unmeasured and comes back with uptimePercent null. Every day of the window is in the answer, so a day that was sampled and came back with nothing is 0 percent rather than missing. No API key needed, and the answer is cached for 60 seconds. Both health endpoints share one limit of 60 requests a minute per IP.
curl "https://api.yeetpost.com/api/v2/health/history"{ "days": [ { "day": "2026-08-27", "uptimePercent": null, "samples": 0, "degradedMinutes": 0 }, { "day": "2026-08-28", "uptimePercent": 100, "samples": 1440, "degradedMinutes": 0 }, { "day": "2026-08-29", "uptimePercent": 99.72, "samples": 718, "degradedMinutes": 2 } ]}query parameters
How many days back to aggregate, 1 to 90.
response 200
One aggregate per UTC day, oldest first.
response body
The UTC day, YYYY-MM-DD.
Ok minutes over the minutes the day owed, to two decimals. Missing minutes count against it. Null when the day was over before the first sample was ever taken: nobody was watching it, so it is unmeasured rather than down.
How many of that day's minutes got a sample. A full day is 1440, and anything less is a stretch the API did not report in.
Minutes of that day that were not ok, the ones with no sample included. Zero for an unmeasured day.
errors
Invalid query parameters. This endpoint takes no API key, so it carries no request id or rate limit headers.
What each code means and the fix: errors.
Get public usage counts for the product
GET/stats
Public numbers about yeetpost as a whole, which is what the marketing site's proof pill draws. Nothing here is about one account: postsThisWeek and postsAllTime count posts that reached a platform (no error, not a draft, not taken down, not still waiting in a queue), sandbox connections and test-key traffic left out, and liveConnections counts the connections that can be posted to right now. The counts are whole numbers exactly as counted, so round them yourself. No API key needed. The answer is cached for 60 seconds, and this endpoint has its own limit of 60 requests a minute per IP.
curl "https://api.yeetpost.com/api/v2/stats"{ "postsThisWeek": 1284, "postsAllTime": 41903, "liveConnections": 372, "platformsLive": [ "linkedin", "x", "bluesky", "discord", "telegram", "mastodon" ], "time": "2026-08-30T11:05:00.512Z"}response 200
The public counts, and the platforms a post can go out to today.
response body
Posts that reached a platform in the last 7 days.
Posts that reached a platform, ever.
Connections that can be posted to right now, sandbox ones left out.
The platforms a post can go out to today.
When the counts were taken, ISO 8601 UTC.
curl "https://api.yeetpost.com/api/v2/openapi.json"response 200
The OpenAPI 3.1 document for the yeetpost API.