AI status page monitor: alert only when something changes

On a schedule, an agent reads a status page and returns one JSON verdict your own script can act on.

  • Web
  • Scheduled
  • Callback
  • Budget cap

Watch a real run

A real run on Oct 7, 2026, replayed. Model: openai/gpt-6-luna.

Input
{
  "url": "https://ephemer.al/api/samples/status"
}
Succeededrun_3f4e1dbb6f90848c51a8d4f85e0d648f$0.003616 of $0.03
  1. Queuedbudget $0.03 reserved
  2. MicroVMmicroVM ready
  3. MicroVMworker started · shell off · web on
  4. Webweb_fetch https://ephemer.al/api/samples/status
  5. Resultweb https://ephemer.al/api/samples/status → 200
  6. MicroVMmicroVM destroyed
  7. Succeeded2 model calls, 2,449 tokensRecorded output (English)
    json
    {
      "ok": true,
      "http_status": 200,
      "summary": "The page reports all systems operational; the listed incidents are resolved."
    }
  8. Worker destroyed$0.003616 charged, $0.026384 released
Model $0.000216 · Web $0.001 · Compute $0.0024

Run it yourself

Open the sample in the playground with the whole request filled in. It runs on your own account, within the budget shown, against the same read-only sample systems.

Budget for this sample: $0.03

How it works

Every fifteen minutes a scheduled run fetches the page and answers {ok, http_status, summary}. Web access is limited to one domain and search is off, so the check can read that site and nothing else. Your script posts to chat only when ok turns false.

What the agent can and cannot do

The permissions are part of the request. Anything not listed here is not available to the run.

SettingAllowed
ConnectionsNone
WebOnly ephemer.al
ShellOff
FilesNone
Zero data retentionOff: the record is kept for 30 days
Budget$0.03, a hard cap
Timeout90 seconds

Credentials never enter the machine: a broker adds them to each call and enforces the methods above.

The code

This is the exact request the sample sends. Set EPHEMERAL_API_KEY to a member key of your organization.

curl -X POST $EPHEMERAL_URL/v1/runs \
  -H "Authorization: Bearer $EPHEMERAL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d @request.json
Full request body workflow.json

The same body, with the files inline.

workflow.json
{
  "prompt": "Fetch the page at input.url with web_fetch. Reply with one JSON object and nothing else: {\"ok\": boolean, \"http_status\": number, \"summary\": string}. Set ok to true only when the response status is 200 and the page reports no ongoing incident, outage or degraded service; resolved past incidents do not count. summary is one sentence of at most 200 characters.",
  "web": {
    "allow": [
      "ephemer.al"
    ],
    "search": false
  },
  "shell": false,
  "timeout_seconds": 90
}

This sample runs on a timetable: */15 * * * * in UTC. A schedule starts a saved workflow, so save the request as a workflow first, then create the schedule.

Read more

Related samples

esc

Nothing matches “”.