HTTP Status Codes
The Lumenaza API uses standard HTTP status codes to indicate the outcome of every request. The table below lists all codes you may encounter.Error Response Formats
400 Bad Request — Field-Level Validation Errors
When input validation fails, the response body is a JSON object whose keys are the names of the invalid fields and whose values are human-readable error messages:Detail Errors
Some errors — including401, 403, 404, and certain 400 cases — use a flat detail key instead of field names:
404 Not Found
Common 400 Validation Errors
The table below lists frequently encountered validation errors, the field(s) involved, and an example error message.Detailed Error Scenarios
403 Forbidden — Action Not Permitted
403 Forbidden — Action Not Permitted
Returned when the authenticated user does not have permission to perform the requested action. Common causes:Fix: Contact Lumenaza to confirm which features are enabled for your SaaS contract.
- Attempting a product switch that is not configured for the contract type.
- Calling an endpoint that requires credit check functionality when it is not enabled for your account.
409 Conflict — In-Flight Workflow
409 Conflict — In-Flight Workflow
Returned when you attempt to trigger a workflow (e.g. a contract termination or tariff switch) while an identical workflow is already being processed for the same resource.Response:Fix: Wait for the existing workflow to complete before submitting a new one. Poll the relevant status endpoint to monitor progress.
300 Multiple Choices — Address Ambiguity
300 Multiple Choices — Address Ambiguity
Returned by the offer calculator when the submitted address matches more than one entry in the address database.Response: A list of candidate addresses for the user to select from.Fix: Present the choices to the end user and re-submit the request with the fully qualified address from the returned list.
500 Internal Server Error
500 Internal Server Error
Indicates an unexpected failure on Lumenaza’s infrastructure.Fix:
- Wait briefly and retry the request with exponential back-off.
- If the error persists, capture the full request/response (excluding secrets) and contact Lumenaza support with the timestamp and endpoint path.
Debugging Checklist
Follow these steps when diagnosing an unexpected error:-
Log the full response body. The API always returns a JSON body for error responses (except
204). The field-level keys tell you exactly which inputs need to change. -
Check field-specific messages. A single
400response may contain errors for multiple fields. Iterate over all keys in the response object, not just the first one. -
Distinguish
{"field": "..."}from{"detail": "..."}.- Field-keyed responses indicate input validation failures — fix the payload.
detail-keyed responses indicate authentication, permission, or server issues — these usually cannot be resolved by changing the request body alone.
-
Verify date constraints.
preferred_delivery_start,sepa_date, andorder_dateall have strict relative-date rules. Ensure your system clock is correct and that you are sending dates inYYYY-MM-DDformat (UTC). -
Confirm uniqueness constraints.
email,saas_customer_id, andsaas_contract_idmust be globally unique. Check your records before retrying a failed create request. -
Test in the sandbox first. Use
https://api.test.lumenaza.de/to validate your integration without affecting production data.

