← all 71 tracked mock & placeholder APIs
UP right now — answered HTTP 200 in 235 ms.
Last checked 2026-09-12T10:00:32Z · checked every hour · OK-rate 24h: 100% · 7d: 100% · raw JSON · Atom feed of its down/recovered events
What we check: GET https://picsum.photos/200 — a plain, keyless request from Cloudflare's network with an honest bot UA, exactly what a tutorial curl or an <img> tag experiences. OK = HTTP 2xx/3xx within 8s. No retries, no cookies, no API keys.
If picsum.photos is failing (or you're tired of finding out mid-demo), Mockbird gives you a placeholder image URL that renders (SVG: any size, colors, text, round avatars) — free, no signup:
https://mockbird.mockbird.workers.dev/m/demo/img/300x200?text=Hello
Read the honest Lorem Picsum (picsum.photos) migration guide → (it also says when Lorem Picsum (picsum.photos) is the better tool) or create your own mock API in one click.
Does your project's test suite or tutorial depend on picsum.photos? Embed a live status badge — it re-renders from our latest check (cached 5 min):
<!-- Markdown -->
[](https://mockbird.mockbird.workers.dev/status/picsum)
<!-- HTML -->
<a href="https://mockbird.mockbird.workers.dev/status/picsum"><img src="https://mockbird.mockbird.workers.dev/status/picsum/badge.svg" alt="picsum.photos status"></a>
Green = answering plain GETs, red = network-dead, amber = answering but with an error status. Every tracked service has one; there's also a summary badge for all 71.
Subscribe any webhook URL — no account needed. One message when picsum.photos goes down, one when it recovers (debounced: two consecutive hourly checks must agree, so a single blip never fires). Slack and Discord incoming-webhook URLs get a formatted message; anything else gets an HMAC-signed JSON POST.
Or from a terminal / CI script:
curl -X POST https://mockbird.mockbird.workers.dev/api/status/watch \
-H "content-type: application/json" \
-d '{"service": "picsum", "url": "https://hooks.slack.com/services/T000/B000/XXXX"}'
Use "service": "*" to watch all 71 tracked services at once. The response includes an unsubscribe curl; 5 consecutive failed deliveries auto-unsubscribe. No webhook? Omit "url" to get a pollable subscription instead — GET the returned poll URL anytime for the transitions since your last poll. Full API details →
The same checker can watch your own URL: POST /api/status/monitor {"url": "https://api.example.com/health", "notify": "<webhook>"} — every 30 minutes, alert on down + recovery, free, no account. Monitor API →
| Checked at (UTC) | Result | Time |
|---|---|---|
| 2026-09-12T10:00:32Z | OK 200 | 235 ms |
| 2026-09-12T10:00:24Z | OK 200 | 177 ms |
| 2026-09-12T09:00:23Z | OK 200 | 254 ms |
| 2026-09-12T09:00:21Z | OK 200 | 258 ms |
| 2026-09-12T08:00:23Z | OK 200 | 176 ms |
| 2026-09-12T08:00:10Z | OK 200 | 247 ms |
| 2026-09-12T07:00:24Z | OK 200 | 187 ms |
| 2026-09-12T07:00:16Z | OK 200 | 267 ms |
| 2026-09-12T06:00:23Z | OK 200 | 342 ms |
| 2026-09-12T06:00:22Z | OK 200 | 242 ms |
| 2026-09-12T05:00:25Z | OK 200 | 226 ms |
| 2026-09-12T05:00:23Z | OK 200 | 178 ms |
| 2026-09-12T04:00:23Z | OK 200 | 467 ms |
| 2026-09-12T04:00:06Z | OK 200 | 234 ms |
| 2026-09-12T03:00:23Z | OK 200 | 460 ms |
| 2026-09-12T03:00:17Z | OK 200 | 228 ms |
| 2026-09-12T02:00:27Z | OK 200 | 244 ms |
| 2026-09-12T02:00:23Z | OK 200 | 77 ms |
| 2026-09-12T01:00:22Z | OK 200 | 98 ms |
| 2026-09-12T01:00:21Z | OK 200 | 220 ms |
| 2026-09-12T00:00:43Z | OK 200 | 213 ms |
| 2026-09-12T00:00:23Z | OK 200 | 92 ms |
| 2026-09-11T23:00:41Z | OK 200 | 225 ms |
| 2026-09-11T23:00:24Z | OK 200 | 702 ms |
| 2026-09-11T22:00:42Z | OK 200 | 214 ms |
| 2026-09-11T22:00:23Z | OK 200 | 242 ms |
| 2026-09-11T21:00:46Z | OK 200 | 249 ms |
| 2026-09-11T21:00:23Z | OK 200 | 250 ms |
| 2026-09-11T20:00:47Z | OK 200 | 231 ms |
| 2026-09-11T20:00:24Z | OK 200 | 465 ms |
Bias disclosure: this page is run by Mockbird, a free hosted mock-API service. The status data is real and logged verbatim (pull it yourself), and the linked guides say when the incumbent wins.