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, orerror - 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:
-
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.
-
No latency data. Raw curl gives you the HTTP code. This gives you millisecond-precision response time — useful for spotting degradation before full outages.
-
No structured output. Parsing curl’s
-wformat string is fragile. JSON is composable — pipe it tojq, parse it in any language, store it anywhere. -
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.
