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/v1

Rate 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

CodeDescription
200Success
201Created — resource successfully created
400Bad Request — invalid parameters
401Unauthorised — invalid or expired token
403Forbidden — insufficient permissions
404Not Found — resource does not exist
429Too Many Requests — rate limit exceeded
500Internal Server Error

Endpoints

Customers

Manage your customer records.

MethodEndpointDescription
GET/customersList all customers
GET/customers/:idGet a specific customer
POST/customersCreate a new customer
PUT/customers/:idUpdate a customer
DELETE/customers/:idDelete 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.

MethodEndpointDescription
GET/eventsList all events
GET/events/:idGet a specific event
POST/eventsCreate a new event
PUT/events/:idUpdate an event
DELETE/events/:idDelete an event
GET/events/:id/registrationsList event registrations

Passes

Manage class passes and bundles.

MethodEndpointDescription
GET/passesList all pass types
GET/passes/:idGet a specific pass type
POST/passesCreate a new pass type
PUT/passes/:idUpdate a pass type

Customer Passes

Manage passes assigned to customers.

MethodEndpointDescription
GET/customer-passesList all customer passes
GET/customer-passes/:idGet a specific customer pass
POST/customer-passesAssign a pass to a customer
PUT/customer-passes/:idUpdate 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=50

Error 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.