Free Uptime Monitoring API — No Signup Required

Your site just went down. You find out from a customer. Again.

You Google “free uptime monitoring” and land on a signup form. Then another. Then a pricing page. You just wanted to know if your site is up.

What if you could check it right now, from your terminal, with zero signup?

curl "https://watch.arkforge.fr/api/check?url=your-site.com"

That’s it. No account. No API key. No credit card. Just a URL and an answer.

What You Get Back

The response is clean JSON:

{
  "status": "up",
  "status_code": 200,
  "response_time_ms": 142,
  "timestamp": "2026-02-07T01:47:42Z",
  "url": "https://your-site.com"
}

Five fields. Everything you need:

  • status: up, down, degraded, or error
  • status_code: The actual HTTP status code returned
  • response_time_ms: How long it took, in milliseconds
  • timestamp: When the check happened (UTC)
  • url: The URL that was checked (auto-adds https:// if you forget)

No XML. No wrapped envelopes. No pagination tokens. Just the data.

Use It Anywhere

In your deploy script

#!/bin/bash
# deploy.sh — verify after deploy

git pull origin main && docker compose up -d --build
sleep 10

RESULT=$(curl -s "https://watch.arkforge.fr/api/check?url=my-app.com")
STATUS=$(echo "$RESULT" | jq -r '.status')

if [ "$STATUS" != "up" ]; then
  echo "DEPLOY FAILED — site is $STATUS"
  echo "$RESULT" | jq .
  exit 1
fi

echo "Deploy verified — site is up"

In a cron job

# Check every 5 minutes, alert on failure
*/5 * * * * curl -sf "https://watch.arkforge.fr/api/check?url=my-app.com" | jq -e '.status == "up"' > /dev/null || echo "SITE DOWN" | mail -s "Alert" you@email.com

In a GitHub Action

- name: Verify deployment
  run: |
    RESPONSE=$(curl -sf "https://watch.arkforge.fr/api/check?url=my-app.com")
    STATUS=$(echo "$RESPONSE" | jq -r '.status')
    LATENCY=$(echo "$RESPONSE" | jq -r '.response_time_ms')
    echo "Status: $STATUS | Latency: ${LATENCY}ms"
    if [ "$STATUS" != "up" ]; then
      echo "::error::Site is down after deploy!"
      exit 1
    fi

In Python

import requests

r = requests.get("https://watch.arkforge.fr/api/check?url=my-app.com")
data = r.json()

if data["status"] != "up":
    print(f"ALERT: Site is {data['status']} (HTTP {data['status_code']})")
elif data["response_time_ms"] > 2000:
    print(f"WARNING: Slow response ({data['response_time_ms']}ms)")
else:
    print(f"OK: {data['response_time_ms']}ms")

In JavaScript/Node

const res = await fetch("https://watch.arkforge.fr/api/check?url=my-app.com");
const { status, response_time_ms } = await res.json();

if (status !== "up") {
  await notify(`Site down! Status: ${status}`);
}

Why Not Just Use curl + Your Own Server?

You could curl -o /dev/null -w "%{http_code}" your site yourself. I’ve done it too. Here’s why it falls short:

  1. Single point of failure. If your monitoring server is on the same host as your app, they go down together. This API runs on external infrastructure.

  2. No latency data. Raw curl gives you the HTTP code. This gives you millisecond-precision response time — useful for spotting degradation before full outages.

  3. No structured output. Parsing curl’s -w format string is fragile. JSON is composable — pipe it to jq, parse it in any language, store it anywhere.

  4. SSRF protection built in. The endpoint validates URLs and blocks internal network requests. You get security for free.

Rate Limits

The public endpoint is rate-limited to 10 checks per IP per 15 minutes. That’s enough for:

  • Post-deploy verification
  • Periodic cron checks (every 5 minutes fits perfectly)
  • CI/CD pipeline health gates
  • Quick manual checks from the terminal

No auth header. No API key management. No token rotation.

When You Need More

The free public endpoint is perfect for on-demand checks. But if you need:

  • Continuous monitoring (automated checks every hour, no cron needed)
  • Change detection (know what changed on a page, not just if it’s up)
  • AI-powered summaries (get “Pricing section updated: Pro plan changed from $29 to $39” instead of a raw diff)
  • Email alerts (instant notification when something breaks)

That’s what the full ArkWatch platform does. You still set it up with curl:

# Register (free, 10 seconds)
curl -X POST https://watch.arkforge.fr/api/v1/auth/register 
  -H "Content-Type: application/json" 
  -d '{"email": "you@example.com", "name": "Your Name", "privacy_accepted": true}'

# Add a URL to monitor continuously
curl -X POST https://watch.arkforge.fr/api/v1/watches 
  -H "X-API-Key: YOUR_KEY" 
  -H "Content-Type: application/json" 
  -d '{"url": "https://my-site.com", "name": "Production", "check_interval": 3600}'

Free tier: 3 URLs, hourly checks, email alerts. No credit card.

Try It Right Now

Open your terminal and paste this:

curl -s "https://watch.arkforge.fr/api/check?url=google.com" | jq .

You’ll get a response in under 300ms. No signup. No SDK. No dependencies.

Then try your own site:

curl -s "https://watch.arkforge.fr/api/check?url=YOUR-SITE-HERE" | jq .

If you find it useful, the full platform handles the monitoring loop for you — set it once and forget it.

Check out ArkWatch — free uptime monitoring with zero setup

Building ArkWatch as a solo dev. If you have feedback or feature requests, drop a comment — I read every one.

Leave a Reply