Vibefollow uses a single error envelope across the API. Every non-2xx response carries a body of this shape:Documentation Index
Fetch the complete documentation index at: https://docs.vibefollow.com/llms.txt
Use this file to discover all available pages before exploring further.
code is machine-readable. message is human-readable. field names the offending field when the server can pinpoint one.
Status reference
| Status | Class of problem | Retryable | Typed SDK error |
|---|---|---|---|
400 | Malformed request (not JSON, etc.) | No | VibeFollowError |
401 | API key missing or malformed | No | AuthError |
403 | API key valid but not authorised | No | AuthError |
404 | Resource not found | No | VibeFollowError |
409 | Conflict (idempotency key reused with different body) | No | ValidationError |
422 | Validation failed | No | ValidationError |
429 | Rate limited | Yes (auto) | RateLimitError |
5xx | Server error | Yes (auto) | ServerError |
0 | Network failure (DNS, refused, timeout) | Yes (auto) | NetworkError |
0 | Webhook signature mismatch | No | WebhookSignatureError |
Error class reference
AuthError — 401 / 403
AuthError — 401 / 403
API key missing, malformed, or revoked. Not retryable.
ValidationError — 422 / 409
ValidationError — 422 / 409
Request body failed schema validation, or the
Idempotency-Key was reused with a different body. .field names the offending field when available.RateLimitError — 429
RateLimitError — 429
Rate limit hit. The SDK auto-retries up to
maxRetries; surfaced when retries are exhausted. .retryAfterMs carries the server’s Retry-After.ServerError — 5xx
ServerError — 5xx
Server-side problem on Vibefollow’s end. Retryable by definition; surfaced when retries are exhausted.
NetworkError — status 0
NetworkError — status 0
DNS, refused, abort, timeout. Retryable. The SDK auto-retries; surfaced when the retry budget is exhausted.
WebhookSignatureError — status 0
WebhookSignatureError — status 0
HMAC mismatch or timestamp outside the ±5 minute window. Not retryable. Return
401 to Vibefollow.VibeFollowError — base class
VibeFollowError — base class
Catch this to handle every SDK error uniformly.
Common codes
| Code | Status | Meaning |
|---|---|---|
auth_required | 401 | Authorization header missing or malformed |
auth_invalid | 401 | API key not recognised (revoked or never existed) |
forbidden | 403 | API key valid but not authorised for this project / resource |
validation_failed | 422 | Request body failed Zod schema validation |
idempotency_key_reuse | 422 | Same Idempotency-Key, different body |
rate_limited | 429 | Rate limit hit; respect Retry-After |
server_error | 5xx | Vibefollow had a problem |
webhook_signature_invalid | (n/a) | SDK-thrown; HMAC mismatch or timestamp out of tolerance |
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.Check the events log
Look in Settings → Developers → Recent events. Malformed events land in the quarantine view, not the main stream.
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.See also
SDK errors
Full typed error hierarchy with recovery patterns.
API authentication
Wire-level auth failure modes.
Webhook signatures
The
WebhookSignatureError case.