API stability
What's stable, what's not, and how we handle changes.
Versioning
Endpoints live at /api/<resource> — that path is the v1 baseline. Additive changes ship in place:
- New endpoints.
- New optional request fields and new response fields.
Breaking changes are announced via email to active API-key holders ahead of any rollout, with overlap windows long enough for callers to migrate.
Stable surface
These are part of the public contract:
- HTTP method + path of every endpoint listed in the API reference.
- The
errorfield in error bodies (the short code:Validation failed,Unauthorized, etc.). - HTTP status codes documented per operation.
- The bearer-token auth scheme and
ug_live_key prefix.
Unstable / explicitly-not-promised
- The exact text of
messagein error bodies. - The order of fields in responses.
- Performance characteristics (latency, body size).
- Field shape inside
notification_channel.configis opaque — its keys depend ontype(slack/discord/webhook →webhook_url; telegram →chat_id; email →email_addresses). - Internal endpoints under
/api/internal/*(worker → web app communication, not authenticated with API keys).
Pagination
List endpoints return all records the caller has access to, with implicit upper bounds (GET /incidents returns up to 50 most recent). When cursor-based pagination ships, it'll arrive as new optional limit and cursor query parameters — current responses keep their shape, callers opt in when they need it.
Idempotency
PUT operations are idempotent — re-issuing the same payload is safe. DELETE is also idempotent: a second delete returns 404 rather than erroring on already-gone state.
For POST operations (creates), if a network failure leaves you unsure whether the call succeeded, follow up with the matching GET and dedupe on the natural key (e.g. name + url for monitors, slug for status pages). An Idempotency-Key header is on the way for the create endpoints where it matters.
Deprecations
When a field or endpoint is deprecated:
- It's marked deprecated in the API reference.
- The deprecation is announced via email to active API-key holders.
- The deprecated surface keeps working — exact sunset window is communicated alongside the announcement.
Reporting issues
Email support@obzerv.xyz with the failing endpoint, response body, and the date/time of the call. For suspected breaking changes, also include the date you first observed the regression.