Base URL
Use your BillingServ installation’s v2 API URL:Authentication
Generate a live API key from the API Information page in the admin panel, then send it as a bearer token:Request and response format
Send JSON for request bodies unless an endpoint documents another format:"success": true. API v2 responses also include X-Request-ID and X-API-Version: 2 headers. Keep the request ID when troubleshooting or contacting support.
Errors use the relevant HTTP status and follow this shape. The errors value may be a message, a list, or a field-keyed validation object:
code for machine-readable handling and request_id to trace a failed request. The same request ID is returned in the X-Request-ID response header.
Idempotent requests
The following create and update operations accept an optionalIdempotency-Key header:
POST /customer/createPOST /invoice/create-quotePOST /invoice/create-invoicePOST /invoice/update-invoicePOST /order/add-order
409 Conflict. A request already being processed with the same key also returns 409.
Rate limits
Rate limits are configurable for each BillingServ deployment. Read the response headers instead of assuming a fixed limit: | Header | Meaning | |: |: | |X-RateLimit-Limit | Requests allowed in the current window |
| X-RateLimit-Remaining | Requests remaining in the current window |
When the limit is exceeded, the API returns 429 Too Many Requests. Back off and retry according to your application’s retry policy.
| Status | Meaning |
|: |: |
| 200 | Request completed successfully |
| 201 | Resource created successfully |
| 401 | API key is missing or invalid |
| 403 | The authenticated account cannot use the endpoint |
| 404 | The requested resource was not found |
| 422 | Request validation failed |
| 409 | The request conflicts with an existing idempotency operation |
| 429 | Rate limit exceeded |
| 500 | Unexpected server error |