PostzivoDOCS
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

400
VALIDATION_ERROR

Correct the body or query fields; do not retry unchanged.

401
UNAUTHORIZED

Replace the missing, invalid, expired, or revoked bearer token.

403
INSUFFICIENT_SCOPE

Use a key with the required scope and workspace access.

404
NOT_FOUND

Confirm the resource ID and workspace scope.

409
IDEMPOTENCY_CONFLICT

Do not reuse an idempotency key for a different payload.

429
PUBLIC_API_RATE_LIMITED

Wait for Retry-After, then retry the same operation.

5xx
SERVICE_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.

Get started