Docs · API

API Reference

The Suite Profit REST API. Base URL https://api.suiteprofit.org/v1. All requests JSON in, JSON out. Authentication is bearer-token via Authorization: Bearer <token>.

Endpoints

MethodPathDescription
GET/modulesList modules enabled on your account.
GET/modules/{id}Fetch a single module's configuration and runtime status.
PATCH/modules/{id}Update module settings — rule sets, WhatsApp templates, VAT rate-maps.
POST/connections/profitroomRegister a Profitroom Suite API key against a Suite Profit property.
GET/connections/profitroomList active Profitroom connections.
DELETE/connections/profitroom/{id}Revoke a Profitroom connection.
GET/webhooksList webhook subscriptions.
POST/webhooksCreate a webhook subscription for one or more event types.
DELETE/webhooks/{id}Delete a webhook subscription.
GET/invoicesList VAT invoices generated by the VAT Automation module (KSeF-numbered).
GET/invoices/{id}Fetch a single invoice with KSeF UUID + FA(2) XML.
POST/reservations/syncForce a sync of reservations from Profitroom for a given property.
GET/rates/suggestionsList pending Autopricer rate suggestions for a property.
POST/rates/suggestions/{id}/approveApprove a rate suggestion — writes to Profitroom Booking Engine.
GET/reviews/queueList reviews in the moderation queue with proposed reply draft.
POST/reviews/{id}/replyPublish a reply back to the source review platform.

Example: fetch modules

curl -X GET https://api.suiteprofit.org/v1/modules \
  -H "Authorization: Bearer rp_live_a1b2c3d4e5f6g7h8" \
  -H "Accept: application/json"

Response:

{
  "data": [
    {
      "id": "mod_autopricer",
      "name": "Autopricer",
      "status": "active",
      "property_id": "prop_1489",
      "d_edge_property_code": "PL-WAW-089",
      "plan": "growth",
      "monthly_price_eur": 89
    },
    {
      "id": "mod_whatsapp_concierge",
      "name": "WhatsApp Concierge",
      "status": "active",
      "property_id": "prop_1489",
      "plan": "standard",
      "monthly_price_eur": 69
    }
  ],
  "meta": {
    "count": 2,
    "generated_at": "2026-07-28T14:22:07Z"
  }
}

Example: approve a rate suggestion

curl -X POST https://api.suiteprofit.org/v1/rates/suggestions/rsg_87542/approve \
  -H "Authorization: Bearer rp_live_a1b2c3d4e5f6g7h8" \
  -H "Content-Type: application/json" \
  -d '{"note": "Approved by revenue manager"}'

Request/response conventions

  • All datetimes are ISO-8601 in UTC (2026-07-28T14:22:07Z). Property-local times are exposed as separate _local fields when relevant.
  • All monetary values include a currency code and a minor_units integer (EUR 89.00 = { "currency": "EUR", "minor_units": 8900 }).
  • Pagination is cursor-based. Every list endpoint accepts limit (max 200) and cursor; responses include meta.next_cursor when more pages exist.
  • Idempotency: every write endpoint accepts an Idempotency-Key header. We store and replay the response for 48 hours.

Property scoping

Suite Profit modules are scoped to a Suite Profit property, which maps 1:1 to a Profitroom property code. Every module-touching endpoint accepts a property_id query parameter and requires the token scope to include that property. Multi-property groups (Motława-style estates) use the group_id parameter on Rate Sync endpoints only.

Deprecation policy

Endpoints marked deprecated in the response headers (X-Suiteprofit-Deprecated: true) will be removed no earlier than 12 months from the announcement date. Every deprecation is announced on the changelog.