πŸͺAPI

Version: 2 Last Updated: January 2026

This document describes the public API endpoints available for merchants to integrate with the platform. All endpoints follow RESTful conventions and use JSON for data exchange.

πŸš€ Quick Start

For authentication and API key management, please refer to the Quick Start Guidearrow-up-right.

Base URL: https://platform.rekaz.io/api/public

πŸ”‘ Authentication

All API endpoints require:

  • Authorization: Passed in Authorization header

  • Tenant ID: Passed in __tenant header

Example Headers

Authorization: Basic YOUR-ENCODED-AUTHORIZATION-KEY
__tenant: YOUR_TENANT_ID
Content-Type: application/json

πŸ“‹ Attendances API

Manage customer check-ins and attendance tracking for reservations and subscriptions.

GET /api/public/attendances

Retrieves a paginated list of recent customer attendances with optional filtering.

Query Parameters

Parameter
Type
Required
Default
Description

customerId

Guid

No

null

Filter by specific customer ID

mobileNumber

string

No

null

Filter by customer mobile number

customerNumber

long

No

null

Filter by customer number

skipCount

int

No

0

Number of records to skip

maxResultCount

int

No

100

Maximum records to return (max: 100)

Example Requests

Response

POST /api/public/attendances

Records a new attendance entry for a customer action.

Request Body

Response

Returns the created attendance record with all populated fields (same structure as GET response item).


🏒 Branches API

Manage and retrieve branch information for your merchant account.

GET /api/public/branches

Retrieves all branches associated with your merchant account.

Example Request

Response

GET /api/public/branches/{id}

Retrieves a specific branch by its ID.

Example Request

Response


πŸ“¦ Products API

Get all available services (referred to as products in the API).

GET /api/public/products

Retrieves all products available for public consumption.

Example Request

Response

GET /api/public/products/{id}

Retrieves a specific product by its ID.

Example Request

Response


πŸ‘₯ Customers API

Get all your customers.

GET /api/public/customers

Retrieves all customers.

Query Parameters

Parameter
Type
Required
Default
Description

skipCount

int

No

0

Number of records to skip (for pagination)

maxResultCount

int

No

100

Maximum records to return (max: 100)

mobileNumber

string

No

-

Filter customers by mobile number (e.g. +966...)

Example Request

Example Request (Filter by Mobile Number)

Response

GET /api/public/customers/{id}

Get a specific customer by ID.

Example Request

Response

POST /api/public/customers

Creates a new customer record in the system.

Request Body

Response

Returns the created customer ID:


πŸ“… Subscriptions API

Manage recurring subscription services for customers.

GET /api/public/subscriptions

Retrieves a paginated list of customer subscriptions with custom field support.

Query Parameters

Parameter
Type
Required
Description

skipCount

int

No

Number of records to skip (for pagination)

maxResultCount

int

No

Maximum records to return (max: 100)

customerId

Guid

No

Filter by specific customer ID

customerMobile

string

No

Filter by customer mobile number

startAtMin

datetime

No

Filter subscriptions starting from this date

startAtMax

datetime

No

Filter subscriptions starting until this date

statuses

array

No

Filter by statuses (e.g., "Active", "Paused")

branchId

Guid

No

Filter by branch ID

keyword

string

No

Search keyword across subscription details

Example Request

Response

GET /api/public/subscriptions/{id}

Returns detailed information about a specific subscription.

POST /api/public/subscriptions

Creates a new subscription, optionally creating a new customer.

Request Body (Existing Customer)

Request Body (New Customer)

Response

PUT /api/public/subscriptions/{id}/dates

Updates the subscription's start date and/or next billing date without altering other attributes.

Request Body

  • startAt (datetime, optional): Subscription start date in ISO 8601 format.

  • endAt (datetime, optional): Next billing date (next charge) in ISO 8601 format.

  • At least one of startAt or endAt must be provided in the request payload.

Sample Bodies

  1. Update both dates

  1. Update only start date

  1. Update only end date

POST /api/public/subscriptions/{id}/pause

Temporarily pauses an active subscription.

Request Body

Response

POST /api/public/subscriptions/{id}/resume

Resumes a paused subscription.

Request Body

Response

Returns the full subscription object with updated status.


πŸ§‘β€πŸ’Ό Providers

GET /api/public/providers

Retrieves all available providers.

Response


🎯 Reservations API

Manage time-based bookings and appointments with availability checking.

GET /api/public/reservations

Retrieves a paginated list of reservations with custom field support.

Query Parameters

Parameter
Type
Required
Description

skipCount

int

No

Number of records to skip (for pagination)

maxResultCount

int

No

Maximum records to return (max: 100)

dateMin

datetime

No

Filter reservations from this date

dateMax

datetime

No

Filter reservations until this date

statuses

array

No

Filter by statuses (e.g., "Confirmed")

customerId

Guid

No

Filter by specific customer ID

customerMobile

string

No

Filter by customer mobile number

upcoming

boolean

No

Filter for upcoming reservations

keyword

string

No

Search keyword across reservation details

branchId

Guid

No

Filter by branch ID

Example Request

Response

Note: The remaining amount field is now named reservationRemainingAmount for consistency with other reservation amount fields.

GET /api/public/reservations/{id}

Retrieves a specific reservation by its ID.

Example Request

Response

GET /api/public/reservations/slots

Retrieves available time slots for reservations.

Query Parameters

Parameter
Type
Required
Description

StartDate

datetime

Yes

Your desired start date for slot search (format: 2025-08-10T20:00:00)

EndDate

datetime

Yes

Your desired end date for slot search (format: 2025-08-25T21:00:00)

PriceId

Guid

Yes

Price configuration ID from products

MinQuantity

int

Yes

Minimum quantity required (must be β‰₯ 1)

MinProvidersCount

int

No

Minimum number of providers required

ProvidersIds

Guid[]

No

Specific provider IDs to filter by

Example Request

How to set dates:

  • StartDate: When you want to start looking for available slots (e.g., today or tomorrow)

  • EndDate: How far ahead you want to search (e.g., next week or month)

Common Issues:

  • Ensure MinQuantity is at least 1 (required validation)

  • DateTime format should be YYYY-MM-DDTHH:mm:ss (without timezone)

  • PriceId must be a valid GUID from the products endpoint

Response

PUT /api/public/reservations/{id}

Updates an existing reservation's start date, end date, and/or assigned providers.

Request Body

Parameters:

  • startDate (required, DateTime): The start date and time for the reservation in ISO 8601 format. This field is required in the request, but you can pass the existing start date if you only want to update the end date or providers

  • endDate (optional, DateTime): The new end date and time for the reservation in ISO 8601 format. If not provided, the system automatically preserves the original reservation duration. For example, if the original reservation was 1 hour long, the updated reservation will also be 1 hour long starting from the new startDate

  • providerIds (optional, array of GUID): List of provider IDs to assign to the reservation. If not provided, the existing providers will be kept

Note: startDate is required in every request. endDate and providerIds are optional and will retain their existing values if not included. To update only the end date or providers without changing the start date, include the current start date in the request.

Duration Preservation: When you update the startDate without providing an endDate, the system automatically calculates the new endDate by preserving the original reservation duration. This ensures the reservation length remains consistent.

Example: Update only the start date (duration is preserved)

If the original reservation was from 14:00 to 15:00 (1 hour), the updated reservation will be from 10:00 to 11:00 (still 1 hour).

Example: Update only the end date (keeping start date the same)

Example: Update only the providers (keeping dates the same)

Example: Update start date and end date

Example: Update all fields

Response

Returns 204 No Content on success.

POST /api/public/reservations/bulk

Creates multiple reservations in a single request.

Request Body (Existing Customer)

Request Body (New Customer)

Response

PUT /api/public/reservations/{id}/confirm

Confirms a pending reservation.

Example Request

Response

Status: 204 No Content

PUT /api/public/reservations/{id}/done

Marks a reservation as completed (done).

Example Request

Response

Status: 204 No Content

PUT /api/public/reservations/{id}/cancel

Cancels an existing reservation.

Headers: Content-Type: application/json

Request Body

Example Request

Response

Status: 204 No Content


⚠️ Error Handling

All endpoints follow standard HTTP status codes and return consistent error responses.

Error Response Format

HTTP Status Codes

Status Code
Description

200

Success

201

Created successfully

204

No Content

400

Bad request - validation error

401

Unauthorized - invalid API key

403

Forbidden - missing branch ID or permissions

404

Resource not found

500

Internal server error


Common Error Codes

Error Code
Description

ValidationError

Request data validation failed

NotFound

Requested resource does not exist

Unauthorized

Invalid or missing authentication

RateLimit

Too many requests

BusinessLogicError

Business rule violation



Last updated: January 2026 | Version 2

Last updated