Developer Documentation
Reservie API
Integrate Reservie into your applications with our REST API.
Authentication
The Reservie API uses JSON Web Tokens (JWT) for authentication. To access the API, you need to obtain a JWT token using your API credentials.
Contact Reservie support to obtain your API key and secret. Include the token in the Authorization header of every request:
Authorization: Bearer <your-jwt-token>Obtaining a Token
Make a POST request to the authentication endpoint with your credentials:
POST /api/v1/auth/token
Content-Type: application/json
{
"apiKey": "your-api-key",
"apiSecret": "your-api-secret"
}The response will include your JWT token:
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"expiresIn": 3600
}Base URL
All API requests should be made to:
https://go.reservie.net/api/v1Rate Limits
The API is rate-limited to 100 requests per minute per API key. If you exceed this limit, you will receive a 429 Too Many Requests response. Implement exponential backoff in your integration to handle rate limits gracefully.
HTTP Status Codes
| Code | Description |
|---|---|
200 | Success |
201 | Created — resource successfully created |
400 | Bad Request — invalid parameters |
401 | Unauthorised — invalid or expired token |
403 | Forbidden — insufficient permissions |
404 | Not Found — resource does not exist |
429 | Too Many Requests — rate limit exceeded |
500 | Internal Server Error |
Endpoints
Customers
Manage your customer records.
| Method | Endpoint | Description |
|---|---|---|
GET | /customers | List all customers |
GET | /customers/:id | Get a specific customer |
POST | /customers | Create a new customer |
PUT | /customers/:id | Update a customer |
DELETE | /customers/:id | Delete a customer |
Example: List Customers
GET /api/v1/customers
Authorization: Bearer <your-jwt-token>
Response:
{
"customers": [
{
"id": "cust_123",
"firstName": "Jane",
"lastName": "Smith",
"email": "[email protected]",
"createdAt": "2024-01-15T10:30:00Z"
}
],
"total": 1,
"page": 1,
"perPage": 25
}Events
Create and manage events, workshops, and classes.
| Method | Endpoint | Description |
|---|---|---|
GET | /events | List all events |
GET | /events/:id | Get a specific event |
POST | /events | Create a new event |
PUT | /events/:id | Update an event |
DELETE | /events/:id | Delete an event |
GET | /events/:id/registrations | List event registrations |
Passes
Manage class passes and bundles.
| Method | Endpoint | Description |
|---|---|---|
GET | /passes | List all pass types |
GET | /passes/:id | Get a specific pass type |
POST | /passes | Create a new pass type |
PUT | /passes/:id | Update a pass type |
Customer Passes
Manage passes assigned to customers.
| Method | Endpoint | Description |
|---|---|---|
GET | /customer-passes | List all customer passes |
GET | /customer-passes/:id | Get a specific customer pass |
POST | /customer-passes | Assign a pass to a customer |
PUT | /customer-passes/:id | Update a customer pass |
Example: Create a Customer Pass
POST /api/v1/customer-passes
Authorization: Bearer <your-jwt-token>
Content-Type: application/json
{
"customerId": "cust_123",
"passId": "pass_456",
"startDate": "2024-02-01"
}
Response:
{
"id": "cp_789",
"customerId": "cust_123",
"passId": "pass_456",
"remainingUses": 10,
"startDate": "2024-02-01",
"expiryDate": "2024-05-01",
"status": "active"
}Pagination
List endpoints support pagination via page and perPage query parameters. The default page size is 25, with a maximum of 100.
GET /api/v1/customers?page=2&perPage=50Error Responses
Error responses include a consistent JSON structure:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The email field is required.",
"details": {
"field": "email",
"rule": "required"
}
}
}Need Help?
If you have questions about the API or need assistance with your integration, please contact our support team.
