Errors and rate limits
All Fluide Suite services return a consistent JSON envelope. Use thecode 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 insrc/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 onGET /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)
Recommended handling
- Never retry
401blindly. Re-check headers and rotated secrets. - For
429 Too Many Requests, back off and retry with jitter. - Log
code+timestampin your integration for support tickets.
Support data
When contacting support, include:- Timestamp (UTC) from the error body
codeand HTTP status- Endpoint + HTTP method
- Request ID header if present