Skip to main content
Docs/Node.js SDK/Error handling
SDK Reference

Error handling

Every failed API call throws a typed error. Catch errors by class to handle specific scenarios.

Error hierarchy

StaffifyError              (base class)
  StaffifyAuthError        401 — invalid or missing API key
  StaffifyPaymentError     402 — account paused, no credits
  StaffifyPermissionError  403 — insufficient permissions or org key required
  StaffifyNotFoundError    404 — resource does not exist
  StaffifyConflictError    409 — conflict (e.g. active call on deletion)
  StaffifyValidationError  400 / 422 — bad request or validation failure
  StaffifyRateLimitError   429 — rate limit exceeded (adds resetAt: Date)

Catching errors

TypeScript

import {
  StaffifyError,
  StaffifyAuthError,
  StaffifyNotFoundError,
  StaffifyRateLimitError,
  StaffifyValidationError,
} from 'staffify';

try {
  const { data } = await client.agents.get('agent_unknown');
} catch (err) {
  if (err instanceof StaffifyNotFoundError) {
    // 404 — agent does not exist
    console.log('Not found:', err.message);

  } else if (err instanceof StaffifyRateLimitError) {
    // 429 — rate limited
    console.log('Retry after:', err.resetAt); // Date object

  } else if (err instanceof StaffifyAuthError) {
    // 401 — bad API key
    console.log('Auth error:', err.code);

  } else if (err instanceof StaffifyValidationError) {
    // 400/422 — check your params
    console.log('Validation:', err.message);

  } else if (err instanceof StaffifyError) {
    // catch-all for any other Staffify error
    console.log(err.status, err.code, err.message, err.requestId);
  }
}

Error properties

FieldTypeDescription
messagestringHuman-readable description from the API
statusnumberHTTP status code (401, 404, 429, etc.)
codestringMachine-readable error code (e.g. INVALID_API_KEY, NOT_FOUND)
requestIdstring | undefinedRequest ID from X-Request-Id header for support

StaffifyRateLimitError extra fields

FieldTypeDescription
resetAtDate | nullWhen the rate limit window resets

Non-Staffify errors

Network failures, DNS errors, and timeouts throw standard JS errors (e.g. TypeError, AbortError), not StaffifyError. Always have a final catch that handles unknown errors.

Error Handling - Node.js SDK - Staffify