Errors

Every 4xx / 5xx returns the same JSON shape.

{
  "error": "human readable",
  "code": "machine_readable",
  "param": "exchange"
}

param is set when the error ties to a query parameter. Otherwise omitted.

Codes

missing_param
Required query parameter not sent.
invalid_param
Parameter malformed (bad enum, bad date, etc.).
not_found
Resource doesn't exist or hasn't been built yet.
unauthorized
Bearer token missing or invalid.
internal_error
Server-side fault.