Stowe Family Law
Stowe Error HandlingHelp and integration guide

Getting started (integrators)

1. Get an API key

Every consuming app has its own key. Ask the admin team (Mike) to register your app and issue one; it is shown exactly once at issue time, so store it straight into your app's secret store. Keys can be revoked and reissued at any time without affecting other apps.

2. Know the basics

Base URLhttps://errors.stowe-app.co.uk/api/v1
AuthHeader X-API-Key: <your key> on every request
FormatJSON in, JSON out, UTF-8
Health checkGET /api/v1/health, no auth needed
Full specSwagger UI (browsable, try-it-out enabled)

3. Send your first event

curl -X POST https://errors.stowe-app.co.uk/api/v1/events \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type": "error",
    "error_class": "technical",
    "severity": "error",
    "integration": "my-app-nightly-sync",
    "code": "HTTP_502",
    "message": "Bad gateway from upstream when syncing records",
    "retryable": true,
    "occurred_at": "2026-08-13T06:15:00Z"
  }'

A successful call returns 201 with an acknowledgement, your proof the log was received:

{ "ack": { "received": true, "id": 123,
           "received_at": "2026-08-13T06:15:01+00:00", "alerts_queued": 1 } }

If validation fails you get 400 with ack.received: false and a plain-English list in errors[]. A missing or revoked key gets 401. Anything else (500) means the event may not have been stored, so treat it as unlogged and retry.

4. Log successes too

Successful runs matter as much as failures; they are how the dashboard can show an integration is alive and healthy. Send the same call with "event_type": "success" (no error_class needed) at the end of each run.

Golden rule: never let error logging break your app. Wrap the call in a try/catch, use a short timeout (5 seconds is plenty), and carry on if this API is unreachable. Logging is a side effect, not a dependency.

Next: Logging events