Codes
| Code | HTTP | Meaning | Remediation |
|---|---|---|---|
| RP-1001 | 401 | Missing or malformed Authorization header | Send Authorization: Bearer <token>. |
| RP-1002 | 401 | Invalid or revoked token | Rotate the token from the Room Profit dashboard. |
| RP-1003 | 403 | Token lacks scope for the requested resource | Regenerate a token with the required scope. |
| RP-1004 | 429 | Per-second rate limit exhausted | Honour Retry-After and back off. |
| RP-1005 | 429 | Monthly plan quota exhausted | Wait for month reset or contact support for a bucket uplift. |
| RP-1006 | 400 | Request body failed schema validation | See the errors array in the response for per-field detail. |
| RP-1007 | 404 | Resource does not exist or is not visible under this token's scope | Verify the ID and the token scope. |
| RP-1008 | 409 | Resource state conflict — e.g. approving an already-approved suggestion | GET the resource, reconcile state, retry. |
| RP-1009 | 409 | Idempotency key reuse with a different body | Use a fresh key or send the identical body. |
| RP-1010 | 422 | Profitroom handshake failed — API key invalid or scope missing | Re-generate the Profitroom API token with the required scopes and re-register. |
| RP-1011 | 422 | KSeF submission rejected — schema failure or duplicate KSeF ID | Inspect error.details.ksef_reason and correct the invoice fields. |
| RP-1012 | 422 | WhatsApp template not approved by Meta | Submit the template through the Room Profit dashboard for Meta review. |
| RP-1013 | 422 | Rate suggestion outside allowed bounds set in the rule | Widen the rule bounds or manually override in Profitroom Booking Engine. |
| RP-1014 | 500 | Internal Room Profit error | Retry with exponential backoff. Escalate to support if persistent. |
| RP-1015 | 503 | Upstream Profitroom unavailable | Wait — we will process queued requests when Profitroom recovers. Any queued writes retry automatically. |
Error body examples
A validation failure (RP-1006) includes a details array with per-field problems:
{
"error": "validation_failed",
"code": "RP-1006",
"message": "Request body has 2 invalid fields",
"details": [
{ "field": "proposed_rate.minor_units", "reason": "must_be_positive_integer" },
{ "field": "note", "reason": "max_length_exceeded", "limit": 500 }
]
} A Profitroom handshake failure (RP-1010) includes the sub-code from the Profitroom side:
{
"error": "d_edge_handshake_failed",
"code": "RP-1010",
"message": "Profitroom returned auth failure",
"details": {
"d_edge_status": 403,
"d_edge_reason": "api_scope_missing",
"required_scopes": ["rate.read", "rate.write", "reservation.read"]
}
} Which errors are safe to retry
Retry-safe (idempotent, transient): RP-1004, RP-1014, RP-1015. Retry after resolving state: RP-1008. Never retry as-is: RP-1002, RP-1003, RP-1006, RP-1009, RP-1010, RP-1011, RP-1012, RP-1013 — these require correcting the request or the surrounding state first.
When to page us
If you see sustained RP-1014 or RP-1015 for more than 10 minutes and our status page is green, email support@profit.dapokl.com. Same-business-day SLA on developer support; usually inside 90 minutes during Warsaw working hours.