Troubleshooting
This section covers the most common integration issues when working with the Booking API.
API Key Requirements
The API key is associated with a user in the Podplay App.
To work correctly:
The user must have the Admin role.
The user must have a valid phone number assigned in their profile.
These conditions must be ensured by a Podplay Administrator in the Web Admin.
The administrator:
Creates the API key.
Assigns it to a valid admin user.
Shares it securely with the integrator.
Security Best Practice
Store the API key securely.
Use it only in your backend.
Never expose it in frontend code (React, HTML, browser JavaScript).
Exposing the API key in frontend code is equivalent to making it public.
Low-Code / No-Code Platforms
If you are using a low-code platform (e.g. automation tools, workflow builders, internal dashboards):
Use the platform’s Secrets, Environment Variables, or Secure Credentials section.
Ensure the API key is marked as private or server-side only.
Confirm it is not accessible from client-side scripts.
Verify it is not logged or exposed in browser developer tools.
Most platforms provide a dedicated area for storing sensitive credentials — always use it.
Header Confusion — Use x-api-key
A common integration mistake is using the wrong authentication header.
Do not use:
Instead, use:
The Booking API expects the x-api-key header.
To better understand the difference between API keys and Bearer tokens, see the following page:
Pagination & Result Limits
Many collection endpoints support pagination using:
pageipp(items per page)
Default and Maximum Values
For several core collection endpoints (such as Users, Orders, and Settlements):
Default
ipp: 30Maximum
ipp: 100
If ipp is omitted, it usually defaults to 30.
If you request more than the allowed maximum (e.g. ipp=500), the value will be capped to the endpoint’s maximum (often 100).
Important: Not All Endpoints Share the Same Limits
Pagination behavior varies by endpoint.
Examples:
Events (
GET /events)Maximum
ipp: 1000 (or tenant-specific limit)Default
ipp: the maximum (e.g. 1000) if not provided
Templates: default 25
POS-related endpoints: default 50
Coaches: default 500
Because limits differ, always verify the expected behavior for the specific endpoint you are using.
When to Adjust ipp
In many cases, the default ipp is sufficient.
If you are missing results:
Increase
ipp(for example, to100where supported).If the dataset is still larger than the maximum allowed per request, implement pagination using
pageandipp.
Failing to paginate may result in incomplete data retrieval.
Learn More About Pagination
To see a practical example of how pagination works, refer to the following page:
That page includes a concise use case demonstrating how to use page and ipp to retrieve a complete dataset.
Admission — "CLOSED"
When creating events via POST /bookings (using "type": "ORDER" with an eventSubtype), the value:
is only valid when:
If "CLOSED" is used with any other event subtype (such as "OPEN_PLAY" or "KIDS_CLASS"), the API will return a validation error (EB013).
Intended Use
"CLOSED" is designed for non-playable operational events, such as:
Court maintenance
Operational blocks
Internal administrative reservations
These events are not meant to accept registrations.
Validation Errors (400 / 422)
If your payload is invalid, the API returns structured validation errors.
Below are common examples and how to resolve them:
EB017
User phone number is required.
The user associated with the API key must have a valid phone number in their profile. Update it in the app or via the User API.
EB018
Terms of Service agreement is required.
Send termsAgreed: true in the booking request body.
Recommendation
When debugging:
Log the full response body.
Check the error
code.Fix the specific field mentioned.
Retry with the corrected payload.
Integration Support
If an error message is unclear or the behavior does not match the documentation, the Podplay team can help troubleshoot.
To speed up the process, please provide:
What you are trying to achieve (e.g. create an Open Play event)
The endpoint you are calling (full URL)
The request body (for POST/PUT requests)
The full API response, including error codes and messages
This allows the team to:
Identify validation issues
Detect tenant-specific configuration constraints
Confirm expected behavior
Suggest the correct payload adjustments
Providing complete and structured information significantly reduces troubleshooting time.
When relevant, integration findings may also lead to documentation improvements — helping future integrators avoid similar issues.
Last updated
Was this helpful?

