Skip to main content
Every error response from the API uses the same JSON shape. Whether it came from Next.js (auth, rate limiting) or the Go backend (validation, ownership, data fetching), the envelope is identical.

Status codes you’ll actually see

Common cases

Forgot the header

Bad UUID in the path

Wrong owner

No data for that filter combo

Bad date

Idiomatic client handling

What we don’t do (and why)

  • No RFC 7807 application/problem+json — the format hasn’t reached meaningful adoption among public APIs developers integrate with daily. We follow Stripe’s pattern instead because that’s what the ecosystem is already wired to consume.
  • No nested error trees / multiple errors per response — every failed response carries exactly one error object. If you submitted multiple invalid filters, you’ll see the first one we noticed.
  • No localised messages — message strings are English-only. Don’t show them to end users verbatim; show your own copy and log ours.