REST API for everything in the dashboard.

Every monitor, alert rule, escalation policy, schedule, and status page is a documented HTTP endpoint. Drive it from Terraform, version it in git, audit it in code review. Webhook channels for downstream integration.

When this feature earns its keep.

Three concrete patterns. Use them as templates for your own setup.

Terraform-managed monitor fleet

Define your monitors in HCL. Apply changes via the same infra pipeline you use for the rest of your stack. Drift detection comes for free; PR review for monitor changes comes for free.

Ephemeral CI checks

Create a monitor at the start of a deploy. Delete it on rollback or success. No manual cleanup of one-off checks polluting the dashboard — every monitor matches a real running service.

Custom incident pipeline

Wire a webhook channel to your incident-management system. Every incident open/resolve POSTs a structured JSON payload with HMAC signature. Build whatever escalation, paging, or aggregation logic you need on top.

How it works.

Get a token, call the API. Webhooks are an alert channel type — add one alongside email/Slack/SMS for any monitor.

Wires into every monitor type and every alert channel. See all platform features

  1. Generate an API token

    Settings → API tokens → New. Copy the secret (shown once). Use it as Authorization: Bearer <token> on every request.

  2. Make your first call

    curl https://api.gochron.com/api/monitors with the bearer header. Every endpoint accepts and returns JSON. Full reference at /docs/api.

  3. Wire a webhook channel

    Add a channel of type 'webhook' with your URL. gochron POSTs incident events to it with an HMAC-SHA256 signature in the X-Gochron-Signature header for verification.

FAQ

Are there rate limits?
100 requests per second per token by default — plenty for normal automation. Read endpoints (list, get) are typically faster; write endpoints (create, update) have additional per-resource caps tied to your plan. Email if you have a use case that needs more.
How are webhooks signed?
Each POST includes X-Gochron-Signature: sha256=<hex>. Compute HMAC-SHA256 of the request body using the channel's secret (shown when you create the channel) and constant-time compare. We rotate signatures with the secret if you ever roll the channel's key.
Is there an OpenAPI spec?
Yes — published at api.gochron.com/openapi.json. Generate clients for Go, TypeScript, Python, or whichever language you ship in. The spec tracks the live API; we version on breaking changes (so far we haven't needed to).