Skip to main content
All errors use the same envelope:
Branch on error.code, not the human-readable message. For retryable requests, use capped exponential backoff with jitter. Preserve the same campaign ID when retrying campaigns/enrich; creating a new campaign creates a separate job.