Documentation

Install in two minutes

Botalive is a dead-man switch. Your routine says "start" and "ok" (or "fail"). If "ok" stops arriving on schedule, you get alerted. Nothing to install on your side beyond two HTTP calls.

1. Get a key

Sign in, open API key & settings, click Generate new key. Keys look like ba_…. Treat it like a password.

2a. Grok Bot (one paste)

Send this to your bot in chat. It reads the skill, adds a heartbeat to every routine and, on Pro, creates the nightly backup routine.

Install the Botalive skill from https://botalive.dev/skill.md
My Botalive key is ba_xxxxxxxxxxxxxxxx
Add a heartbeat to every routine and set up the nightly backup.

When the bot asks for approval to run the install, approve it. Then open the dashboard: a setup-test monitor should appear within seconds. The bot's own routines appear after their next run.

The skill file is plain Markdown and works for any agent that can read instructions and make HTTP requests: botalive.dev/skill.md.

2b. Any script, cron job or agent

BOTALIVE_KEY=ba_xxxxxxxx
# at the start of the job
curl -s -X POST https://botalive.dev/api/beat \
  -H "Authorization: Bearer $BOTALIVE_KEY" -H "Content-Type: application/json" \
  -d '{"monitor":"nightly-report","status":"start"}'

# ... the job does its work ...

# at the end
curl -s -X POST https://botalive.dev/api/beat \
  -H "Authorization: Bearer $BOTALIVE_KEY" -H "Content-Type: application/json" \
  -d '{"monitor":"nightly-report","status":"ok","duration_ms":8120,"interval_s":86400}'

Only a URL available? A GET works too: https://botalive.dev/api/beat?monitor=nightly-report&status=ok with the same Authorization header.

How detection works

API reference

POST /api/beat

Auth: Authorization: Bearer ba_…. JSON body:

{
  "monitor":     "string, required, max 120 chars",
  "status":      "start | ok | fail  (default ok)",
  "duration_ms": 1234,            // optional
  "note":        "max 500 chars", // optional, shown in dashboard and alerts
  "bot":         "label",         // optional, e.g. the bot's display name
  "interval_s":  86400,           // optional, 300..2678400
  "meta":        {"usage_pct": 42} // optional object
}

Returns {"ok":true,"state":"ok","expected_interval_s":86400}. Errors: 401 bad key, 402 plan limit, 400 bad input.

POST /api/backup Pro

Raw body up to 50 MB, any content type. Optional header X-Label. Keeps the 14 most recent. GET /api/backup lists them. Download from the dashboard (signed URLs, 5 minutes).

GET /api/status

Public. Anonymous fleet aggregates plus Grok Bot platform component status. Cached 60 s.

Alert channels

Email is included on every plan and goes to your account address by default. Pro and Team add Slack incoming webhooks, Discord webhooks and generic JSON webhooks. Generic payload:

{"title":"Bot silent: morning-brief","body":"…","kind":"missed","monitor":"morning-brief","expected_interval_s":86400,"last_beat_at":"2026-11-01T06:00:12Z"}

Use Send test alert in the dashboard to verify a channel.

Backups: what to put in them

For Grok Bot: your skills folder, routine definitions and memory files, tarred and gzipped. The skill file instructs the bot to do this nightly at 03:00. Botalive never opens the archive. Restore is manual: download, extract, paste back into the bot.

Support

hello@botalive.dev. Replies within one business day.