For developers

Apartment booking API: your data in your own tools

The erphome.pl API is a REST interface for pulling your own reservations, occupied dates, pricing, reviews and statistics out of your account, and for adding a manual reservation, mailing a guest and generating a payment link. Responses are JSON, authentication is a bearer token carrying the scopes the account owner granted. The specification follows OpenAPI 3.1.

Base URL
https://api.erphome.pl/v1
Authentication
Scoped bearer token
Format
JSON, English field names
Specification
OpenAPI 3.1 (Swagger)

Updated: 2026-09-09. The OpenAPI specification linked below is the binding reference.

What the API exposes

Twelve operations on your own account data. Each one needs a token carrying its specific scope, so an integration gets exactly as much as its job requires.

ResourceWhat you getCallToken scope
Account identity Business name and owner e-mail, to confirm the token works and to label the connection in a tool like Zapier or Make. The one endpoint with no scope requirement — works with any valid token. GET /me none
Apartments The account's apartments and their ids. Every integration starts here, because the rest filters by apartment_id. GET /apartments apartments:read
Reservations Every apartment on the account, filterable by date, status and apartment, cursor-paginated. GET /reservations reservations:read
One reservation Guest details, amount, promo code and deposit for a single booking. GET /reservations/{id} reservations:read
Manual booking Records a booking taken off-site, rejecting dates that clash with an existing stay. POST /reservations reservations:write
Messages The whole thread with the guest, automatic mail included. GET /reservations/{id}/messages messages:read
Mail to the guest Sends real mail to the guest address and records it in the reservation thread. POST /reservations/{id}/messages messages:write
Payment link A Przelewy24 transaction on your own credentials. Single use, valid for 24 hours. POST /reservations/{id}/payment-link payments:write
Availability Occupied date ranges only, with no guest data. A year ahead by default. GET /availability availability:read
Blocked dates Ranges you blocked by hand: maintenance, personal use, a technical break. GET /blocks blocks:read
Pricing Seasonal rates, minimum-stay rules and extra fees. GET /pricing pricing:read
Guest reviews Ratings with text, stars, moderation status and the owner reply. GET /reviews reviews:read
Statistics Occupancy and revenue month by month for one apartment. GET /stats stats:read

Your first request

Issue a token in the panel

The API tab in the panel. Tick only the scopes the integration genuinely needs.

Copy it straight away

The token is shown once, at creation. Lose it and you revoke it and issue a new one.

Add the header and call

Every request carries an Authorization header with that token. The rest is plain HTTP.

Request
curl -H "Authorization: Bearer erph_live_..." \
  "https://api.erphome.pl/v1/reservations?status=confirmed&from=2026-09-01"
Response (excerpt)
{
  "data": [
    {
      "id": 128,
      "apartment_id": 3,
      "status": "confirmed",
      "source": "online",
      "check_in": "2026-09-12",
      "check_out": "2026-09-15",
      "guests": 2,
      "guest": {
        "name": "Anna Kowalska",
        "email": "[email protected]"
      },
      "amount_pln": 1350,
      "deposit": { "amount_pln": 300, "status": "paid" }
    }
  ],
  "pagination": { "limit": 100, "has_more": false, "next_after": null }
}

What owners build with it

The five uses that come up most often. Each one is assembled from the operations in the table above.

Accounting without retyping

Once a month you pull the confirmed bookings with their amounts and feed them into your accounting software, instead of copying numbers out of the panel by hand.

GET /reservations?status=confirmed

Your own sheet or report

Occupancy and revenue month by month, ready to chart in Google Sheets or Power BI.

GET /stats

A calendar on another site

Occupied dates with no guest data, so you can show availability on a blog or in an app without exposing anything about your guests.

GET /availability

Automation in Make or n8n

A scenario mails the guest on your trigger, and the whole exchange stays visible in the panel.

POST /reservations/{id}/messages

Bookings from another channel

A booking taken by phone, or from a portal with no iCal feed, goes in from a script and blocks the dates immediately.

POST /reservations

Rules, limits and what the API will not do

The boundaries here are deliberate. Better to know them before writing an integration than after.

Owner-issued tokens
The account owner only. A panel sub-user cannot reach that tab, even with full reservation permissions.
Read apart from write
The :read and :write scopes are separate even for one resource. A reporting token physically cannot write to a guest.
IP allowlist
A token can be pinned to the addresses or CIDR ranges it may be used from, so a leaked key is useless outside your integration network. Unrestricted by default, and changeable without reissuing the token.
Rate limits
300 GET and 60 POST requests per 10 minutes, counted per token. Above that you get a 429 with a Retry-After header.
No edits or cancels
Changing dates and cancelling stay in the panel, where the calendar sits next to the mail that such a change sends to the guest.
English field names
Field names and error messages are English, as API convention expects. The panel and the booking page stay in Polish.
No extra charge
The API is part of the subscription and works during the trial. No per-call fee, no cap on how many tokens you issue.

Frequently asked questions

Does the API cost extra?

No. It is part of the subscription and works from day one of the 14-day trial. There is no per-call fee and no cap on tokens, only a rate limit: 300 GET and 60 POST requests per 10 minutes per token.

Where do I get a token?

From the API tab in the panel (panel.erphome.pl). Only the account owner can issue one; panel sub-users do not see that tab. The token is displayed once, at creation, so copy it into your integration right away.

Can I pull Booking.com and Airbnb bookings through the API?

Yes, as far as they reached your calendar over iCal sync. They then look like occupied dates, because the portals pass neither guest details nor amounts in an iCal feed. Full detail exists for bookings made on your own page and for ones you added manually.

Can I change or cancel a reservation through the API?

No, and that is deliberate. Changing dates and cancelling stay in the panel, where you can see the calendar and the messages such a change will send to the guest. Through the API you can create a booking, read any of them and send a message.

Does the API handle several apartments?

Yes. Reads cover every apartment on the account by default, and the apartment_id parameter narrows them to one. Statistics are the exception, where apartment_id is required: occupancy across apartments with different nightly rates cannot be meaningfully summed into a single number.

Will it connect to Make, Zapier or n8n?

Yes, with a plain HTTP block carrying an Authorization: Bearer header and the endpoint URL. We do not publish a dedicated connector for those tools, because the API is simple enough that an HTTP block covers it.

A token takes a minute to issue

The API works from day one of the trial and costs nothing extra. 14 days free, no card.

Next

OpenAPI docs: every field and error code → Help centre: the panel, step by step → All erphome.pl features → How to choose a booking system for an apartment → Subscription pricing →