REST API
Sutahi REST API — Integrate With Your Tools
Complete REST API, JSON responses, Bearer token authentication, versioned endpoints for bookings, rooms, invoices, and ZATCA.
REST / JSON
Bearer Token Auth
v1 Versioned
1000 req/min
Base URL
https://api.sutahi.com/api/v1/Authentication
Bearer Token via Laravel Sanctum
Generate an API token from your dashboard under Settings > API. Add it as an Authorization header in every request.
1Go to Settings > API in your dashboard
2Create a new API token with required permissions
3Add the token as Bearer token in every API request
bashcURL Example
curl -X GET "https://api.sutahi.com/api/v1/bookings" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
-H "X-Tenant-ID: your-hotel-subdomain"Response Format
Consistent JSON Responses
Every API response includes: a success field, data payload, and meta pagination info when applicable.
successbooleantrue / falsedataobject|arrayResponse payloadmeta.totalintegerTotal record countmeta.pageintegerCurrent pagejsonResponse Example
{
"success": true,
"data": [
{
"id": 1234,
"status": "confirmed",
"guest": { "name": "محمد العمري", "id_type": "national_id" },
"room": { "number": "205", "type": "Deluxe" },
"check_in": "2026-06-15",
"check_out": "2026-06-18",
"total_amount": 1725.00,
"currency": "SAR",
"zatca_status": "cleared"
}
],
"meta": { "total": 156, "page": 1, "per_page": 15 }
}Core Endpoints
50+ endpoints across 6 resource groups.
Bookings
GET
/bookingsList all reservations (paginated, filterable)POST
/bookingsCreate a new bookingGET
/bookings/{id}Get booking details with guest and room infoPATCH
/bookings/{id}Update booking status or detailsRooms
GET
/roomsList rooms with availability and statusGET
/rooms/availabilityCheck availability for date rangePATCH
/rooms/{id}/statusUpdate room status (clean, dirty, blocked)Guests
GET
/guestsSearch and list guest profilesPOST
/guestsCreate guest profile with PDPL-compliant ID storageGET
/guests/{id}/bookingsGet guest booking historyInvoices
GET
/invoicesList guest invoices (ZATCA compliant)POST
/invoices/{id}/credit-noteIssue a ZATCA credit noteGET
/invoices/{id}/pdfDownload invoice PDF (Arabic + English)Channels
GET
/channelsList connected OTA channelsPOST
/channels/{id}/ratesPush rate update to channelPOST
/channels/{id}/availabilityPush availability updateReports
GET
/reports/occupancyOccupancy report (daily/monthly)GET
/reports/revenueRevenue report with RevPAR/ADR breakdownGET
/reports/vatVAT return data for ZATCA submissionZATCA API
ZATCA API — Direct Integration
Dedicated endpoints for ZATCA-compliant e-invoicing — B2B clearance, B2C reporting, and QR code retrieval.
POST
/invoices/{id}/zatca/clearSubmit invoice for B2B ZATCA clearanceGET
/invoices/{id}/zatca/statusPoll ZATCA clearance statusGET
/invoices/{id}/qrRetrieve ZATCA QR code (TLV base64)POST
/invoices/{id}/credit-noteIssue ZATCA-compliant credit noteRate Limits
1,000
requests / minute per token
429 error responses include a Retry-After header. Enterprise plans get custom limits.
SDK Libraries
PHP (Laravel) SDKAvailable
JavaScript SDKComing Soon
Python SDKComing Soon
Request API Access
API access is available on all Pro and above plans. Contact us to get your API token and full Postman documentation.