← Back to site

All Systems Operational

Last check: 6 Oct 04:30 UTC  ·  checks run every ~10 min  ·  page refreshes every 5 min

Services

Website External probe Operational

GET https://puntersedge.online → expects HTTP 200

89 days agoToday
7d 99.90%1007 checks · 100.0% coverage
30d 99.93%4319 checks · 100.0% coverage
Since 8 Jul 2026 99.97%18714 checks · 100.0% coverage
Last check: 6 Oct 04:30 UTC (200)

Monitoring since 8 Jul 2026 · 18714 checks recorded · monitor running for 100.0% of that period. Windows longer than that record are omitted rather than assumed.

API Platform External probe Operational

GET https://puntersedge.online/api → expects HTTP 200

51 days agoToday
7d 99.90%1007 checks · 100.0% coverage
30d 99.93%4319 checks · 100.0% coverage
Since 16 Aug 2026 99.95%7442 checks · 100.0% coverage
Last check: 6 Oct 04:30 UTC (200)

Monitoring since 16 Aug 2026 · 7442 checks recorded · monitor running for 100.0% of that period. Windows longer than that record are omitted rather than assumed.

Legacy redirect External probe Operational

GET https://puntersedge.online/api-platform → expects HTTP 200

37 days agoToday
7d 99.90%1007 checks · 100.0% coverage
30d 99.95%4319 checks · 100.0% coverage
Since 30 Aug 2026 99.96%5220 checks · 100.0% coverage
Last check: 6 Oct 04:30 UTC (200)

Monitoring since 30 Aug 2026 · 5220 checks recorded · monitor running for 100.0% of that period. Windows longer than that record are omitted rather than assumed.

Pricing External probe Operational

GET https://puntersedge.online/api/pricing → expects HTTP 200

51 days agoToday
7d 99.90%1007 checks · 100.0% coverage
30d 99.93%4319 checks · 100.0% coverage
Since 16 Aug 2026 99.93%7442 checks · 100.0% coverage
Last check: 6 Oct 04:30 UTC (200)

Monitoring since 16 Aug 2026 · 7442 checks recorded · monitor running for 100.0% of that period. Windows longer than that record are omitted rather than assumed.

Telegram Bot External probe Operational

GET bot health endpoint → expects HTTP 200

89 days agoToday
7d 100.00%1007 checks · 100.0% coverage
30d 100.00%4319 checks · 100.0% coverage
Since 8 Jul 2026 99.99%18714 checks · 100.0% coverage
Last check: 6 Oct 04:30 UTC (200)

Monitoring since 8 Jul 2026 · 18714 checks recorded · monitor running for 100.0% of that period. Windows longer than that record are omitted rather than assumed.

Odds API Internal probe Operational

GET /health on the odds API service → expects HTTP 200  ·  loopback: this probe does not traverse DNS, TLS or nginx

89 days agoToday
7d 100.00%1007 checks · 100.0% coverage
30d 99.98%4319 checks · 100.0% coverage
Since 8 Jul 2026 99.96%18714 checks · 100.0% coverage
Last check: 6 Oct 04:30 UTC (200)

Monitoring since 8 Jul 2026 · 18714 checks recorded · monitor running for 100.0% of that period. Windows longer than that record are omitted rather than assumed.

Stripe Webhooks Internal probe Operational

GET webhook listener endpoint (POST-only; 405 on GET proves it answers) → expects HTTP 405  ·  loopback: this probe does not traverse DNS, TLS or nginx

89 days agoToday
7d 100.00%1007 checks · 100.0% coverage
30d 100.00%4319 checks · 100.0% coverage
Since 8 Jul 2026 99.99%18714 checks · 100.0% coverage
Last check: 6 Oct 04:30 UTC (405)

Monitoring since 8 Jul 2026 · 18714 checks recorded · monitor running for 100.0% of that period. Windows longer than that record are omitted rather than assumed.

Outbound email

Operational

Outbound email is sending.

Checked 42s ago. The transport answered a reachability probe. Last successful send 6 Oct 04:33 UTC (82s ago).

Measured by a separate monitor that reads the delivery result of every message the API sends and probes whether the configured transport is reachable — it never sends a test message to anyone. This page only reads what that monitor last wrote, which is why the time of its last run is published above: if the monitor stops, that timestamp stops moving, and no figure here can quietly go on looking healthy. Recipient addresses are masked and no message subject is published. Also available as JSON at /status.json.

Second, independent probe

A separate process on the API host polls https://puntersedge.online/ping on its own schedule. It is a useful cross-check because it shares no scheduler and no code path with the monitor above — but note what it targets: it probes the website, not api.puntersedge.online. The /v1/uptime endpoint is backed by this same file, so read its number as website availability measured from the API box.

100.00% over the last 30 days (8639 checks, monitor running for 100.0% of the window). Buffer holds the most recent 8640 checks, spanning 30.0 days from 6 Sep 2026; last check 6 Oct 04:34 UTC.

How we measure — and what we do not promise

The checks

A process on the same DigitalOcean droplet as the services issues one HTTP request per surface and records the response code and whether it matched the expected code. The measured interval between checks over the last 24 hours is 10 minutes — measured from the history file rather than read off the scheduler, because the two have disagreed before. Each service card shows the exact URL probed and the code it expects.

2 of the 7 probes are loopback requests on the box itself. They confirm the application process is answering; they cannot detect a DNS, TLS, nginx or network failure that would take the service down for every customer. They are labelled Internal probe above and you should read them as narrower evidence than the external ones.

The percentages

Data freshness

This page is about service availability. It says nothing about how fresh the odds inside a response are — that is a separate, separately measured thing, published with its own p50/p90/max figures on the coverage page under “Data refresh rates”. Those numbers live in one place so they cannot drift apart; they are not restated here.

Every quote the API returns carries its own age. On sports responses the quality object gives score, status, age_seconds and stale_after_seconds, and a market flips to stale once its age_seconds passes that threshold, currently 30 minutes. Racing quotes carry a per-book age_seconds, and each race carries data_age_seconds — deliberately the age of the worst contributing book, not the best — alongside freshest_age_seconds. Read those rather than assuming a fixed panel of bookmakers is always quoting: overnight, when the Australian card has finished, far fewer books are.

What happens during an outage

What is not guaranteed

There is no contractual uptime SLA. Everything on this page is observed measurement of what has happened, published so you can judge it yourself. It is not a commitment about what will happen, there is no credit or refund schedule attached to it, and nothing here should be read as one. If you need a contractual availability commitment, ask — it is a conversation, not a published number.

This is not real-time tick data, and it is not suitable for latency-sensitive trading. Refresh rates depend on upstream bookmaker availability and rate limits.

Machine-readable

/uptime.json — availability per surface, each figure with its window, check count and coverage. /status.json — current up/down per service. Both carry the same caveats as fields, so a consumer that never reads this page still gets them.