Browse documentation ⌄
ERRORS & RETRIES
Recover without publishing twice.
Use status codes, stable error codes, request identifiers, and idempotency keys to make every integration safe to retry.
Error catalog
400VALIDATION_ERROR
Correct the body or query fields; do not retry unchanged.
401UNAUTHORIZED
Replace the missing, invalid, expired, or revoked bearer token.
403INSUFFICIENT_SCOPE
Use a key with the required scope and workspace access.
404NOT_FOUND
Confirm the resource ID and workspace scope.
409IDEMPOTENCY_CONFLICT
Do not reuse an idempotency key for a different payload.
429PUBLIC_API_RATE_LIMITED
Wait for Retry-After, then retry the same operation.
5xxSERVICE_ERROR
Retry transient failures with exponential backoff and jitter.
Retry strategy
JavaScriptCopy and customize
async function postzivoFetch(url, init, attempts = 4) {
for (let attempt = 0; attempt < attempts; attempt++) {
const response = await fetch(url, init);
if (response.status !== 429 && response.status < 500) return response;
const retryAfter = Number(response.headers.get("Retry-After"));
const delay = Number.isFinite(retryAfter)
? retryAfter * 1000
: Math.min(1000 * 2 ** attempt, 30000) + Math.random() * 500;
await new Promise(resolve => setTimeout(resolve, delay));
}
throw new Error("Postzivo retry budget exhausted");
}i
Preserve the idempotency key.
Every retry of the same write must use the original key and identical request body.
READY TO BUILD?
Connect your workflow.
Request access, create an API key, and start with one test workspace.