Developer reference

Augur Public API

REST endpoints for canonical OSINT events and your alert history. Bearer-token auth. Available on Pro and Enterprise plans.

Get an API keySee pricing

Authentication

Pass your key as a bearer token in the Authorization header. Keys are scoped to your account and only one paid plan's zones are visible.

curl https://augur.news/api/v1/events \
  -H "Authorization: Bearer aug_live_xxxxxxxxxxxx"

GET /api/v1/events

Returns canonical OSINT events from the last minutes window, filtered to your watch zones (haversine for circles, ray-cast for polygons).

Query params: limit (1–500, default 100), minutes (1–1440, default 60)

{
  "events": [
    {
      "id": "usgs:us6000abcd",
      "source": "usgs",
      "title": "M 5.7 — 12km NE of Calama, Chile",
      "lat": -22.31, "lon": -68.74,
      "ts": "2026-05-25T11:42:18Z",
      "severity": 67
    }
  ]
}

GET /api/v1/alerts

Your alert history. Returns rows from augur_alert_history with the event that triggered each alert.

Query params: limit (1–500, default 100), days (1–90, default 7)

{
  "alerts": [
    {
      "id": "uuid",
      "zone_id": "uuid",
      "zone_name": "Shanghai port",
      "event_id": "ais:vessel:...",
      "dispatched_at": "2026-05-25T11:42:18Z",
      "channel": "slack"
    }
  ]
}

Zone CRUD

Manage watch zones programmatically. RLS still applies — you can read your own zones and any shared with an org you belong to. Mutations require zone ownership or org admin/owner role.

  • GET /api/v1/zones — list zones (own + org-shared)
  • POST /api/v1/zones — create a zone. Body: { label, lat, lon, radius_km?, min_severity?, shape_type?, polygon?, dwell_minutes? }
  • GET /api/v1/zones/:id — fetch one
  • PATCH /api/v1/zones/:id — partial update. Also acceptscolor, icon, quiet_hours_start /quiet_hours_end / quiet_hours_tz,emergency_severity for quiet-hours override.
  • DELETE /api/v1/zones/:id — remove
  • severity_multiplier — 0.1..5.0 nudge applied to event severity before min_severity comparison

Team members

  • GET /api/v1/orgs/:id/members — list members (any org member)
  • POST /api/v1/orgs/:id/members — issue an invite. Body: { email, role?: "admin" | "member" }. Owner / admin only. Returns the invite_url.
  • PATCH /api/v1/orgs/:id/members/:userId — change role between admin and member. Owner row protected.
  • DELETE /api/v1/orgs/:id/members/:userId — remove. Owner row protected.

Alert resolution

  • PATCH /api/v1/alerts/:id — body { resolved: true|false, note?: string }. resolved: true stamps resolved_via="api" + the note. Write scope.

Analytics

  • GET /api/v1/analytics?days=30 — usage stats: zone + channel totals, alerts in window, resolved count, by-source breakdown, by-day sparkline series.

Identity + tuning

  • GET /api/v1/me — caller's user_id, email, plan, scopes, key_id, rate-limit budget
  • GET /api/v1/zones/:id/preview?days=7 — counts the events that would have fired on the zone over the window, with breakdown by source. Quiet hours + multiplier + min_severity applied.

Audit log

  • GET /api/v1/audit?days=30&limit=200 — read your own augur_audit_log rows. Useful for shipping events into your SIEM / compliance vault.

Channel CRUD

  • GET /api/v1/channels — list own + org-shared channels
  • POST /api/v1/channels — create. Body: { kind, target, label?, config?, org_id? }. Webhook channels auto-generate a signing_secret if you omit one.
  • PATCH /api/v1/channels/:id — partial update of label, target, enabled, config, org_id
  • DELETE /api/v1/channels/:id

Rate limits + errors

  • Pro: 60 req/min. Enterprise: 600 req/min.
  • 401 — missing or revoked key
  • 402 — key exists but the account is below Pro
  • 429 — rate limited

Public health endpoint

No auth needed. Polled by the /status page; safe to embed in your own dashboard.

curl https://augur.news/api/sources/health