application/problem+json. Switch on the code extension — it’s part of the contract and won’t move under your feet. The title and detail strings are human-readable and may be reworded between releases.
Response shape
Validation responses
When binding fails or a FluentValidation rule rejects, the response includes anerrors map:
Error code catalogue
- 4xx — caller errors
- 5xx — service errors
Mapping behavior
A few specific cases are worth calling out because they affect how you should design retries and surface failures to your own users.Upstream 4xx is translated to a caller-facing 4xx
Upstream 4xx is translated to a caller-facing 4xx
When a downstream SIEM rejects a request with a 4xx (404 for an unknown ID, 400 for an unparseable filter, 409 for a conflict, 429 for rate-limit, 408/504 for timeout), the v2 API surfaces that as the matching 4xx —
NOT_FOUND, VALIDATION_ERROR, CONFLICT, RATE_LIMITED, TIMEOUT — rather than collapsing onto an opaque 502. That way your retry logic can act on what’s actually wrong.Only opaque or 5xx upstream failures stay as UPSTREAM_ERROR. Upstream 401/403 also stay opaque (they mean our credential to the upstream is broken; that’s not something you can fix).Client-aborted requests do not produce a body
Client-aborted requests do not produce a body
When the caller disconnects mid-request, the response is an empty
499 and no ProblemDetails body is written. Treat 499 as “request was cancelled before we could respond” — your client probably already knows.Use requestId, not traceId
Use requestId, not traceId
Some development-mode payloads previously carried a
traceId extension from ASP.NET. The v2 contract is requestId only. Quote the requestId value when contacting support — we can correlate it to backend logs without you needing to share anything else.Correlating with our logs
EveryrequestId is also recorded in our backend logs. Including it in support requests dramatically shortens triage:
Hello, I’m seeing intermittent 502We can pull the full backend trace and pinpoint the failure without needing the request body or your credentials.UPSTREAM_ERRORonPOST /api/v2/incidents/across-workspaces. ExamplerequestId:0HNLBAGCRD4RN:00000003at2026-04-15T20:00:00Z.