Skip to main content

Errors and rate limits

All Fluide Suite services return a consistent JSON envelope. Use the code field for programmatic handling; use message for display.

Success envelope

Error envelope

Safe 500 responses

Server errors (5xx) always return a generic message and code: INTERNAL_ERROR. Internal details (stack traces, SQL, secrets) are never exposed in the response body. Include timestamp and endpoint details when contacting support.

Global error codes

Authentication errors

Product-specific codes

Each service maintains a registry in src/errors/<service>.error-codes.ts. After deploy, catalogs are merged into openapi/error-codes-merged.json via:

HR (examples)

Accounting / Books (examples)

Payroll (examples)

Pay (examples)

API plan rate limits

Limits apply per API product. Your active plan is returned on GET /api/v1/authorize/current in the rateLimits object. Current-period usage (API requests and webhook retries) is on GET /api/v1/authorize/usage and in the Connect dashboard API Keys page. Monthly quotas reset every 30 days. Webhook retries are counted from the second delivery attempt onward. Enterprise limits are negotiated per contract.

Usage-based fees (beyond included limits)

  • Never retry 401 blindly. Re-check headers and rotated secrets.
  • For 429 Too Many Requests, back off and retry with jitter.
  • Log code + timestamp in your integration for support tickets.

Support data

When contacting support, include:
  • Timestamp (UTC) from the error body
  • code and HTTP status
  • Endpoint + HTTP method
  • Request ID header if present