Veyto

Errors

Every error is JSON. There are no HTML stack pages.

statusmeaningwhat to do
400malformed request or invalid JSONfix the request; the body says what was wrong
401missing or invalid API keycheck Authorization: Bearer …
403your key lacks the scopeask us — sandbox keys carry the developer scopes
404it does not exist, or it is not yourssee below
413body too large (32 kb)real payloads are ~1 kb; something is wrong
429rate limitedback off using retry-after
500our faultquote the x-request-id
503not ready (dependency unhealthy)retry shortly

404 is deliberately ambiguous

Asking for another developer's agent, a deleted one, and a malformed id all return a byte-identical 404. A 403 would confirm the thing exists, which is a disclosure in itself. You cannot use error codes to discover what other accounts own.

A denial is not an error

VeytoDeniedError means a guardrail stopped the payment and no money moved. It is an answer, not a failure — see Blocked.

Always log the request id

ts
const res = await fetch(url, { headers });
console.log(res.headers.get("x-request-id"));

It is on every response, and it is what lets us find your exact request.