GET /api/v1/status
Checks the key and shows plan, scopes and usage for the current month.
Esempio
curl "https://hops24.de/api/v1/status" \ -H "Authorization: Bearer hk_test_…"
Tutto ciò che ti serve per l’integrazione. Versione 1 · URL di base: https://hops24.de/api/v1
Scarica il file OpenAPI Non hai ancora una chiave? Registrati gratis
Invia la tua chiave nell’header a ogni richiesta. Non inserire mai le chiavi negli URL o nel codice pubblico – i domini per le chiamate dal browser li inserisci tu nel tuo account API.
Authorization: Bearer hk_live_… # or X-API-Key: hk_live_…
Le chiavi con hk_test_ restituiscono dati di esempio fissi (annunci 900001–900004). Così puoi integrare prima di andare live. Le chiavi live iniziano con hk_live_ e restituiscono annunci reali dal 20.10.2026.
Le risposte positive contengono data (e, per gli elenchi, meta con le informazioni di paginazione); gli errori contengono error con code e message. Prezzi come numero nella valuta indicata in currency (EUR, in Svizzera CHF, nel Regno Unito GBP); se manca un prezzo, price_on_request è true.
{ "data": [ … ], "meta": { "page": 1, "per_page": 20, "total": 14, "pages": 1 } }
{ "error": { "code": "quota_exceeded", "message": "…" } }
| HTTP | Codice |
|---|---|
| 400 | invalid_parameter |
| 401 | unauthorized |
| 403 | insufficient_scope · no_provider_account · provider_approval_required · origin_not_allowed · client_suspended |
| 404 | not_found |
| 409 | idempotency_conflict |
| 412 | version_conflict |
| 428 | precondition_required |
| 429 | rate_limited · quota_exceeded |
| 503 | temporarily_unavailable |
| 500 | server_error |
Ogni richiesta conta per la quota mensile. Gli header X-Quota-Limit e X-Quota-Remaining mostrano lo stato. Quando la quota è esaurita, l’API risponde con 429 – senza costi aggiuntivi.
| Piano | Richieste / mese | Richieste / secondo |
|---|---|---|
| Free | 1.000 | 2 |
| Starter | 25.000 | 10 |
| Business | 250.000 | 30 |
| Partner | da concordare | 50 |
/api/v1/statusChecks the key and shows plan, scopes and usage for the current month.
Esempio
curl "https://hops24.de/api/v1/status" \ -H "Authorization: Bearer hk_test_…"
/api/v1/categoriesAll categories with translations (de, en, es, fr, nl, it, pt).
Permesso: listings:read
Esempio
curl "https://hops24.de/api/v1/categories" \ -H "Authorization: Bearer hk_test_…"
/api/v1/changesPublic changes and removals after a cursor. Poll about every 60 seconds; reload details. Events are kept for 90 days – if your cursor is older, meta.resync_required asks for a full resync.
Permesso: listings:read
| Parametro | Tipo | Descrizione |
|---|---|---|
after | int | Last processed change ID, initially 0 |
limit | int | Up to 200 changes |
Esempio
curl "https://hops24.de/api/v1/changes" \ -H "Authorization: Bearer hk_test_…"
/api/v1/listingsSearch public listings. Same logic as the search on hops24.de.
Permesso: listings:read
| Parametro | Tipo | Descrizione |
|---|---|---|
q | string | Free text (title, city, description) |
country | string | Country (DE, AT, CH, FR, BE, LU, NL, ES, IT, GB, IE); default DE. Returns listings of providers in or serving this country |
postal_code | string | Postcode or city; respects delivery areas (venues: location of the venue) |
lat, lng | number | Coordinates; finds providers whose delivery radius covers the point and venues within 25 km |
category | string | Category key from /categories |
date | YYYY-MM-DD | Only listings available on this day |
max_price | number | Maximum “from” price in the listing currency |
placement | 1 | Only listings offering long-term placement |
self_pickup | 1 | Only with self pickup |
sort | string | newest (default), price, distance (requires lat/lng) |
page, per_page | int | Page (from 1) and results per page (1–50, default 20) |
Esempio
curl "https://hops24.de/api/v1/listings?category=huepfburgen&postal_code=33100&sort=price" \ -H "Authorization: Bearer hk_test_…"
/api/v1/listings/{id}Listing details incl. description, all images and technical details.
Permesso: listings:read
Esempio
curl "https://hops24.de/api/v1/listings/900001" \ -H "Authorization: Bearer hk_test_…"
/api/v1/listings/{id}/availabilityUnavailable days of a listing from today. If the provider has several identical units for the listing, a day is only unavailable once no unit is free.
Permesso: availability:read
| Parametro | Tipo | Descrizione |
|---|---|---|
months | int | Period in months (1–12, default 3) |
Esempio
curl "https://hops24.de/api/v1/listings/900001/availability?months=3" \ -H "Authorization: Bearer hk_test_…"
/api/v1/inquiriesSubmit a customer enquiry to the provider. It arrives in the provider’s HOPS24 inbox; the customer receives a confirmation. Returns 201. The Idempotency-Key header is required (also in the sandbox): retries with the same key return the same response for 30 days.
Permesso: inquiries:create
| Parametro | Tipo | Descrizione |
|---|---|---|
listing_id | int | Listing (required) |
name, email | string | Customer name and email (required) |
event_date | YYYY-MM-DD | Requested date or placement start (required) |
event_end_date | YYYY-MM-DD | End date for multi-day events |
request_type | string | event (default) or placement (only if placement_available) |
placement_location | string | Placement location (required for placement) |
phone, message | string | Optional |
lang | string | Language of the confirmation email to the customer: de, en, es, fr, nl, it, pt (default: language of the instance) |
consent | bool | Must be true: the customer agreed to the submission |
review_consent | bool | Optional: the customer agrees to be asked once by email for a review after the date |
Esempio
curl -X POST "https://hops24.de/api/v1/inquiries" \
-H "Authorization: Bearer hk_test_…" \
-H "Idempotency-Key: example-request-001" \
-H "Content-Type: application/json" \
-d '{"listing_id":900001,"name":"Erika Muster","email":"erika@example.de","event_date":"2026-11-08","message":"Kindergeburtstag, 15 Kinder","consent":true}'
/api/v1/webhooksYour webhooks with delivery status.
Permesso: webhooks
Esempio
curl "https://hops24.de/api/v1/webhooks" \ -H "Authorization: Bearer hk_live_…"
/api/v1/webhooksCreate a webhook. The signing secret is only shown in this response.
Permesso: webhooks
| Parametro | Tipo | Descrizione |
|---|---|---|
url | string | Target URL (https only, publicly reachable) |
events | array | inquiry.created, listing.updated, availability.changed, listing.removed (inquiry.replied discontinued since 2026-10-05) |
Esempio
curl -X POST "https://hops24.de/api/v1/webhooks" \
-H "Authorization: Bearer hk_live_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://partner.de/hops24-webhook","events":["inquiry.created","listing.updated"]}'
/api/v1/webhooks/{id}/testSend a webhook.test event.
Permesso: webhooks
Esempio
curl -X POST "https://hops24.de/api/v1/webhooks/7/test" \ -H "Authorization: Bearer hk_live_…"
/api/v1/webhooks/{id}Delete a webhook.
Permesso: webhooks
Esempio
curl -X DELETE "https://hops24.de/api/v1/webhooks/7" \ -H "Authorization: Bearer hk_live_…"
/api/v1/me/listingsProvider integration: your own listings incl. inactive ones, with external_ref (key must be linked to a provider account).
Permesso: own:listings:write | own:inquiries:read | own:listings:sync
Esempio
curl "https://hops24.de/api/v1/me/listings" \ -H "Authorization: Bearer hk_live_…"
/api/v1/me/listings/syncCreate and sync your own listings from your software (free on all plans, one call counts once). Matched by external_ref (SKU): create, update, and with mode full take listings no longer sent offline – never deleted. Only fields you send are changed. New listings go online once the minimum details are met (otherwise draft, see problems), unless active: false. Photos are loaded by URL (once per address, max. 5 per listing, 200 new per day). The Idempotency-Key header is required. More than 200 listings: send mode full in parts, pass sync_session from the first response and set complete: true in the last part.
Permesso: own:listings:sync
| Parametro | Tipo | Descrizione |
|---|---|---|
listings | array | 1–200 listings: external_ref (required, max. 100 chars), title (3–150, required to create), description, category (key from /categories), city, prices {from, daily, weekend, delivery, setup, deposit, placement_monthly, hourly}, sale {price, condition (new|used|demo), quantity, shipping (pickup|shipping|both), shipping_price, delivery_time, year, warranty} or false, details {dimensions, age_group, power_required, setup_duration, turnaround_days, cancellation_policy, weather_guarantee, self_pickup_allowed, deposit_cash_allowed, service_duration}, placement_available, images (list of https URLs; an empty list removes the source’s photos), active (bool) |
mode | string | partial (default: only the listings sent) or full (full sync: missing listings of this connection go offline; safeguard: if a full sync delivers less than half, nothing is taken offline) |
sync_session | int | For mode full in parts: value of meta.sync_session from the first response (valid for 24 hours) |
complete | bool | Last part of a full sync (default true) |
Esempio
curl -X POST "https://hops24.de/api/v1/me/listings/sync" \
-H "Authorization: Bearer hk_live_…" \
-H "Idempotency-Key: example-request-001" \
-H "Content-Type: application/json" \
-d '{"mode":"full","listings":[{"external_ref":"HB-001","title":"Piraten-Hüpfburg XXL","category":"huepfburgen","city":"Berlin","description":"Große Piraten-Hüpfburg mit Rutsche und Netzen, ideal für Geburtstage und Sommerfeste.","prices":{"from":199,"weekend":299,"delivery":35},"images":["https://www.example.com/bilder/piraten-1.jpg"],"active":true}]}'
/api/v1/me/listings/by-ref/{external_ref}Create or update one listing by its reference (same fields as an entry of /me/listings/sync). Returns 201 when created, otherwise 200, with ETag. If-Match is optional; when set and the listing has changed meanwhile, 412 follows.
Permesso: own:listings:sync
| Parametro | Tipo | Descrizione |
|---|---|---|
title, description, category, city, prices, sale, details, images, active | object | as for /me/listings/sync |
Esempio
curl -X PUT "https://hops24.de/api/v1/me/listings/by-ref/HB-001" \
-H "Authorization: Bearer hk_live_…" \
-H "Content-Type: application/json" \
-d '{"title":"Piraten-Hüpfburg XXL","prices":{"from":189},"active":true}'
/api/v1/me/sync/runsThe last 20 syncs of this connection with counts and notes (codes per external_ref). Reports are kept for 90 days.
Permesso: own:listings:sync
Esempio
curl "https://hops24.de/api/v1/me/sync/runs" \ -H "Authorization: Bearer hk_live_…"
/api/v1/me/listings/{id}Update your own listing using If-Match (version from GET /me/listings). Provider approval required. Activation requires the same minimum details as in the dashboard.
Permesso: own:listings:write
| Parametro | Tipo | Descrizione |
|---|---|---|
title, description | string | Title (3–150 chars), description |
prices | object | from, daily, weekend, delivery, setup, deposit, placement_monthly, hourly (in the listing currency, null clears; hourly only for services) |
is_active | bool | Activate/deactivate the listing |
Esempio
curl -X PATCH "https://hops24.de/api/v1/me/listings/123" \
-H "Authorization: Bearer hk_live_…" \
-H 'If-Match: "VERSION_FROM_GET_ME_LISTINGS"' \
-H "Content-Type: application/json" \
-d '{"prices":{"from":99,"weekend":149},"is_active":true}'
/api/v1/me/inquiriesYour enquiries with status (new, open, booked, closed) and customer details. Since 2026-10-05 open replaces the former values waiting and answered (still accepted as filters).
Permesso: own:inquiries:read
| Parametro | Tipo | Descrizione |
|---|---|---|
status | string | Filter by status |
Esempio
curl "https://hops24.de/api/v1/me/inquiries" \ -H "Authorization: Bearer hk_live_…"
/api/v1/me/bookingsYour orders within a period.
Permesso: own:inquiries:read
| Parametro | Tipo | Descrizione |
|---|---|---|
from, to | YYYY-MM-DD | Period (default: today to +12 months) |
Esempio
curl "https://hops24.de/api/v1/me/bookings" \ -H "Authorization: Bearer hk_live_…"
/api/v1/me/blocked-datesBlocked days from today with source (manual, calendar_import, api) and deletable.
Permesso: own:calendar:write
Esempio
curl "https://hops24.de/api/v1/me/blocked-dates" \ -H "Authorization: Bearer hk_live_…"
/api/v1/me/blocked-datesBlock days (for one listing or all).
Permesso: own:calendar:write
| Parametro | Tipo | Descrizione |
|---|---|---|
dates | array | List of dates YYYY-MM-DD (max. 366) |
listing_id | int | Optional; omitted = all listings |
reason | string | Optional reason |
Esempio
curl -X POST "https://hops24.de/api/v1/me/blocked-dates" \
-H "Authorization: Bearer hk_live_…" \
-H "Content-Type: application/json" \
-d '{"dates":["2026-10-23"],"listing_id":123,"reason":"Wartung"}'
/api/v1/me/blocked-datesRelease only API blocks created by this connection; manual and imported blocks stay.
Permesso: own:calendar:write
| Parametro | Tipo | Descrizione |
|---|---|---|
dates | array | List of dates YYYY-MM-DD |
listing_id | int | Optional |
Esempio
curl -X DELETE "https://hops24.de/api/v1/me/blocked-dates" \
-H "Authorization: Bearer hk_live_…" \
-H "Content-Type: application/json" \
-d '{"dates":["2026-10-23"],"listing_id":123}'
Software partner con molti account noleggiatore: accesso multi-account su richiesta nel piano Partner.
I webhook informano subito il tuo server sugli eventi (piano Business o superiore). Inviamo un POST con JSON al tuo URL; rispondi con uno stato 2xx. Le consegne non riuscite vengono ritentate dopo 1, 5 e 30 minuti e dopo 2, 6 e 24 ore.
| Codice | Descrizione |
|---|---|
listing.updated | Public listing changed |
availability.changed | Availability changed |
listing.removed | Remove listing from partner feed |
inquiry.created | New customer enquiry for the linked provider account |
inquiry.replied | Discontinued since 2026-10-05 – no longer sent (providers reply directly by email) |
webhook.test | Test event (triggered manually) |
Verifica la firma (secret da POST /webhooks)
POST https://partner.de/hops24-webhook
X-HOPS24-Event: inquiry.created
X-HOPS24-Signature: t=1760000000,v1=5f2c…
{ "id": 812, "event": "inquiry.created", "created_at": "2026-10-02T18:00:00+00:00",
"data": { "inquiry_id": 4711, "listing_id": 123, "event_date": "2026-11-01", "source": "website" } }
// PHP: verify signature
[$t, $v1] = sscanf($_SERVER['HTTP_X_HOPS24_SIGNATURE'], 't=%d,v1=%s');
$body = file_get_contents('php://input');
$ok = abs(time() - $t) < 300
&& hash_equals(hash_hmac('sha256', $t . '.' . $body, $secret), $v1);
Per ogni annuncio mostra un link all’url della risposta. Nei piani Free e Starter mostra anche la dicitura „via HOPS24“. Conserva i dati in cache al massimo 24 ore e non cederli a terzi. I contatti dei noleggiatori non sono forniti di proposito – le richieste passano da HOPS24.