The error envelope
Every error uses one stable shape — and never leaks internal tenant IDs or backend error text:code, not on message — messages can be reworded; codes are stable.
Request IDs
Every response carriesX-Request-Id. Send your own (1–128 characters; first character alphanumeric, then A-Za-z0-9._:-) to correlate one request through the Conare edge and memory plane; otherwise Conare generates one. Quote it in any support request.
Status codes
Degradation instead of failure
Where a cheaper fallback exists, Conare degrades rather than erroring:- Deep recall on an exhausted legacy quota returns
{ answer: null, results: [...], deepUsed: false }— you still get ranked raw memories. - Suggestions has no meaningful shallow fallback, so exhaustion is a hard
402(legacy quota plans:429). - Malformed model output on suggestions returns
{ suggestions: [], raw: "<text>" }— treatrawas displayable fallback text.
Never metered
Session ingest,save, and shallow search/recall are never metered, on any plan. Spend alerts fire at 75/90/100% and the default is a hard stop — no surprise overages.