Sandbox Mode
Use a test API key (pms_test_ prefix) to validate your integration without writing any data to the hotel’s system.
When the hotel admin generates an API key, they receive both a live key and a test key as a pair. Ask the hotel admin for the test key to start development.
Test keys run the exact same payload validation as live keys — every field
rule in Error Handling applies identically.
Test Response Example
_sandbox: true flag confirms you’re in test mode and no data was written. This flag is never present in live responses.
What to Test
Use sandbox mode to verify:- Payload format — Confirm all your field formats are correct (dates, phone numbers, etc.)
- Error handling — Send intentionally invalid data to test your error handling code
- Rate limit handling — Confirm your code handles
429responses gracefully
Idempotency cannot be observed in sandbox. Test-mode responses are not
stored, so resending the same key returns a fresh response rather than a
replay, and
_idempotent never appears. Send the header from the first day —
it is required — but verify replay behaviour with a live key.Idempotency
All POST endpoints require anIdempotency-Key header. This prevents duplicate operations when network issues cause retries — for example, if your system sends a check-in request but doesn’t receive the response due to a timeout, you can safely resend the same request.
How It Works
- You include an
Idempotency-Keyheader with every POST request - RecepAI processes the request and stores the response, keyed to your idempotency key
- If you send another request with the same key to the same endpoint within 24 hours, RecepAI returns the cached response without re-processing
Rules
Recommended Key Format
Use a structured format that’s unique per operation:Duplicate Response
When a cached response is returned, it includes an_idempotent flag:
The
_idempotent: true flag tells you this is a cached replay, not a new operation. The response body, HTTP status, and requestId are all identical to the original response.Important: Failed Requests Don’t Consume Keys
If your request returns a 4xx error (validation failure, room conflict, etc.), the idempotency key is not consumed. This means you can fix the issue and retry with the same key:Rate Limits
Each endpoint has its own rate limit. Limits are per hotel. One IP address may also send at most 600 requests a minute in total.Limits by Endpoint
Response Headers
Responses carry the endpoint’s rate limit in these headers:
Not every response carries them — a
429 from the per-IP limit never does. Read them when they are present.
Rate Limited Response (429)
When you exceed the limit:429 from the per-IP limit carries the same Retry-After header and body.
Handling Rate Limits
Implement exponential backoff in your integration:Request Logging
Requests that reach an endpoint are logged — including test-mode requests — so support can answer “what did the PMS actually send us”. Retention: live-key requests are kept for 90 days, test-key requests for 30 days, after which they are deleted automatically. When contacting support, always include therequestId from the response — it
is how a single call is found.
Security Notes
- All API traffic is encrypted via HTTPS (TLS 1.2+). HTTP requests are rejected.
- Treat the API key as a secret: send it in the
Authorizationheader, never in a URL or a query string. - All guest changes from the PMS are recorded in an activity log with the actor type
pms, visible alongside staff actions on the Front Desk.