Product · HTTP API

HTTP API

Everything the SDKs do is a plain JSON contract — you can send events with curl from any language or system.

Ingest an event

POST /api/{project_id}/store/ authenticated by the X-Bugwatch-Key header. The server groups events into issues by fingerprint and replies 200 with {"event_id": "…", "issue_id": 123}.

curl
curl -X POST https://bugwatch-api.loadmindx.com/api/1/store/ \
  -H "X-Bugwatch-Key: <public_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "level": "error",
    "message": "Something broke",
    "exception": {
      "type": "ValueError",
      "value": "bad input",
      "stacktrace": { "frames": [] }
    },
    "environment": "production",
    "release": "v1.2.3",
    "platform": "curl"
  }'

User feedback

Used by the feedback widget; creates an issue like any other event so your team is alerted.

curl
curl -X POST https://bugwatch-api.loadmindx.com/api/1/feedback/ \
  -H "X-Bugwatch-Key: <public_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "The checkout button does nothing on Safari",
    "url": "https://example.com/checkout",
    "user_agent": "Mozilla/5.0 ..."
  }'

Analytics (session auth)

HTTP
GET /api/projects/{id}/analytics/?days=14
Authorization: Bearer <session>

# totals.events | issues | unresolved | resolved | ignored
# series[] date, total, error, warning, info, fatal
# by_level | by_release | by_environment | by_platform
# recent_issues[]

Levels & limits

  • Levels: debug, info, warning, error, fatal.
  • HTTPS only — plain HTTP is rejected in production.
  • Projects have a monthly event quota per plan; over-quota ingests get 429.