Skip to main content
Vibefollow uses a single error envelope across the API. Every non-2xx response carries a body of this shape:
code is machine-readable. message is human-readable. field names the offending field when the server can pinpoint one.

Status reference

The SDK error classes wrap these — you write catch (err) { if (err instanceof AuthError) ... } instead of inspecting status codes by hand.

Error class reference

API key missing, malformed, or revoked. Not retryable.
Request body failed schema validation, or the Idempotency-Key was reused with a different body. .field names the offending field when available.
Rate limit hit. The SDK auto-retries up to maxRetries; surfaced when retries are exhausted. .retryAfterMs carries the server’s Retry-After.
Server-side problem on Vibefollow’s end. Retryable by definition; surfaced when retries are exhausted.
DNS, refused, abort, timeout. Retryable. The SDK auto-retries; surfaced when the retry budget is exhausted.
HMAC mismatch or timestamp outside the ±5 minute window. Not retryable. Return 401 to Vibefollow.
Catch this to handle every SDK error uniformly.

Common codes

When a request silently disappears

Vibefollow returns 202 Accepted for ingest endpoints — that confirms enqueue, not processing. If you track() an event but don’t see it in the dashboard, work through this checklist.
1

Check the events log

Look in Settings → Developers → Recent events. Malformed events land in the quarantine view, not the main stream.
2

Check for near-miss event names

Confirm your event name doesn’t collide with a near-miss canonical name (e.g. user_signedUp vs user_signed_up). The dashboard flags near-misses.
3

Confirm the user ID matches

Confirm the external_user_id matches what identify used. Mismatched IDs create orphaned events that are still ingested but not linked.

See also

SDK errors

Full typed error hierarchy with recovery patterns.

API authentication

Wire-level auth failure modes.

Webhook signatures

The WebhookSignatureError case.