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 URLhttps://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 / false
dataobject|arrayResponse payload
meta.totalintegerTotal record count
meta.pageintegerCurrent page
jsonResponse 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 booking
GET/bookings/{id}Get booking details with guest and room info
PATCH/bookings/{id}Update booking status or details
Rooms
GET/roomsList rooms with availability and status
GET/rooms/availabilityCheck availability for date range
PATCH/rooms/{id}/statusUpdate room status (clean, dirty, blocked)
Guests
GET/guestsSearch and list guest profiles
POST/guestsCreate guest profile with PDPL-compliant ID storage
GET/guests/{id}/bookingsGet guest booking history
Invoices
GET/invoicesList guest invoices (ZATCA compliant)
POST/invoices/{id}/credit-noteIssue a ZATCA credit note
GET/invoices/{id}/pdfDownload invoice PDF (Arabic + English)
Channels
GET/channelsList connected OTA channels
POST/channels/{id}/ratesPush rate update to channel
POST/channels/{id}/availabilityPush availability update
Reports
GET/reports/occupancyOccupancy report (daily/monthly)
GET/reports/revenueRevenue report with RevPAR/ADR breakdown
GET/reports/vatVAT return data for ZATCA submission
ZATCA 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 clearance
GET/invoices/{id}/zatca/statusPoll ZATCA clearance status
GET/invoices/{id}/qrRetrieve ZATCA QR code (TLV base64)
POST/invoices/{id}/credit-noteIssue ZATCA-compliant credit note

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