Breaking: the v1 “out of credits” error is now one code
Pitchko used to meter three things separately — deck tokens, a widget-scan quota and a widget-audit quota — and the public API said so, with a different 402 error code per endpoint. They are one credit balance now, and one balance cannot honestly answer to three words.
POST /decksreturnedinsufficient_tokens. It now returnsinsufficient_credits.POST /aeo/gradeandPOST /auditreturnedinsufficient_quota. Both now returninsufficient_credits.
This is a breaking change if you branch on the error string. If you branch on the HTTP status instead, nothing changes: 402 has meant "this account cannot pay for the request" since v1 shipped and still does. The full was → is-now table is in §10 of the integration guide.
Nothing else moved. The status codes, the { "error": …, "message": … } envelope and every other code on every endpoint are unchanged. The reason: "quota" value inside engine_failures is a different word — it describes a third-party AI engine's own limit during a scan, not a unit of Pitchko billing, and it is unaffected.
One thing that is not visible on the wire but is worth stating: no v1 endpoint returns an internal failure name any more. Every code now passes through an explicit map, so a state our services invent for their own operational reasons cannot reach your integration until someone gives it a public meaning on purpose.