Partner-API · v1

API-documentatie

Alles wat je nodig hebt voor de integratie. Versie 1 · Basis-URL: https://hops24.de/api/v1

OpenAPI-bestand downloaden Nog geen sleutel? Toegang aanvragen

Authenticatie

Stuur je sleutel bij elke aanvraag mee in de header. Zet sleutels nooit in URL’s of openbare code – voor browseraanroepen geven we je domeinen vrij.

Authorization: Bearer hk_live_…
# or
X-API-Key: hk_live_…

Sandbox

Sleutels met hk_test_ geven vaste voorbeeldgegevens (aanbod 900001–900003), zodat je kunt integreren voordat je live gaat. Live-sleutels beginnen met hk_live_.

Antwoordformaat

Succesvolle antwoorden bevatten data (en meta met paginering bij lijsten); fouten bevatten error met code en message. Prijzen in euro als getal; ontbreekt een prijs, dan is price_on_request true.

{ "data": [ … ], "meta": { "page": 1, "per_page": 20, "total": 14, "pages": 1 } }

{ "error": { "code": "quota_exceeded", "message": "…" } }

Foutcodes

HTTPCode
400invalid_parameter
401unauthorized
403insufficient_scope · origin_not_allowed · client_suspended
404not_found
429rate_limited · quota_exceeded
500server_error

Limieten & quota

Elke aanvraag telt mee voor het maandquotum. De headers X-Quota-Limit en X-Quota-Remaining tonen de stand. Is het quotum op, dan antwoordt de API met 429 – zonder extra kosten.

PakketVerzoeken / maandVerzoeken / seconde
Free 1.000 2
Starter 25.000 10
Business 250.000 30
Partner in overleg 50

Endpoints

GET /api/v1/status

Checks the key and shows plan, scopes and usage for the current month.

Voorbeeld

curl "https://hops24.de/api/v1/status" \
  -H "Authorization: Bearer hk_test_…"

GET /api/v1/categories

All categories with translations (de, en, es, fr, nl).

Recht: listings:read

Voorbeeld

curl "https://hops24.de/api/v1/categories" \
  -H "Authorization: Bearer hk_test_…"

GET /api/v1/listings

Search public listings. Same logic as the search on hops24.de.

Recht: listings:read

ParameterTypeBeschrijving
qstringFree text (title, city, description)
postal_codestringPostcode or city; respects delivery areas
lat, lngnumberCoordinates; finds providers whose delivery radius covers the point
categorystringCategory key from /categories
dateYYYY-MM-DDOnly listings available on this day
max_pricenumberMaximum “from” price in euros
placement1Only listings offering long-term placement
self_pickup1Only with self pickup
sortstringnewest (default), price, distance (requires lat/lng)
page, per_pageintPage (from 1) and results per page (1–50, default 20)

Voorbeeld

curl "https://hops24.de/api/v1/listings?category=huepfburgen&postal_code=33100&sort=price" \
  -H "Authorization: Bearer hk_test_…"

GET /api/v1/listings/{id}

Listing details incl. description, all images and technical details.

Recht: listings:read

Voorbeeld

curl "https://hops24.de/api/v1/listings/900001" \
  -H "Authorization: Bearer hk_test_…"

GET /api/v1/listings/{id}/availability

Unavailable days of a listing from today.

Recht: availability:read

ParameterTypeBeschrijving
monthsintPeriod in months (1–12, default 3)

Voorbeeld

curl "https://hops24.de/api/v1/listings/900001/availability?months=3" \
  -H "Authorization: Bearer hk_test_…"

POST /api/v1/inquiries

Submit a customer enquiry to the provider. It arrives in the provider’s HOPS24 inbox; the customer receives a confirmation. Returns 201.

Recht: inquiries:create

ParameterTypeBeschrijving
listing_idintListing (required)
name, emailstringCustomer name and email (required)
event_dateYYYY-MM-DDRequested date or placement start (required)
event_end_dateYYYY-MM-DDEnd date for multi-day events
request_typestringevent (default) or placement (only if placement_available)
placement_locationstringPlacement location (required for placement)
phone, messagestringOptional
consentboolMust be true: the customer agreed to the submission

Voorbeeld

curl -X POST "https://hops24.de/api/v1/inquiries" \
  -H "Authorization: Bearer hk_test_…" \
  -H "Content-Type: application/json" \
  -d '{"listing_id":900001,"name":"Erika Muster","email":"erika@example.de","event_date":"2026-11-02","message":"Kindergeburtstag, 15 Kinder","consent":true}'

GET /api/v1/webhooks

Your webhooks with delivery status.

Recht: webhooks

Voorbeeld

curl "https://hops24.de/api/v1/webhooks" \
  -H "Authorization: Bearer hk_live_…"

POST /api/v1/webhooks

Create a webhook. The signing secret is only shown in this response.

Recht: webhooks

ParameterTypeBeschrijving
urlstringTarget URL (https only, publicly reachable)
eventsarrayinquiry.created, inquiry.replied

Voorbeeld

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","inquiry.replied"]}'

POST /api/v1/webhooks/{id}/test

Send a webhook.test event.

Recht: webhooks

Voorbeeld

curl -X POST "https://hops24.de/api/v1/webhooks/7/test" \
  -H "Authorization: Bearer hk_live_…"

DELETE /api/v1/webhooks/{id}

Delete a webhook.

Recht: webhooks

Voorbeeld

curl -X DELETE "https://hops24.de/api/v1/webhooks/7" \
  -H "Authorization: Bearer hk_live_…"

GET /api/v1/me/listings

Provider integration: your own listings incl. inactive ones (key must be linked to a provider account).

Recht: own:inquiries:read

Voorbeeld

curl "https://hops24.de/api/v1/me/listings" \
  -H "Authorization: Bearer hk_live_…"

PATCH /api/v1/me/listings/{id}

Update your own listing. Activation requires the same minimum details as in the dashboard.

Recht: own:listings:write

ParameterTypeBeschrijving
title, descriptionstringTitle (3–150 chars), description
pricesobjectfrom, daily, weekend, delivery, setup, deposit, placement_monthly (euros, null clears)
is_activeboolActivate/deactivate the listing

Voorbeeld

curl -X PATCH "https://hops24.de/api/v1/me/listings/123" \
  -H "Authorization: Bearer hk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"prices":{"from":99,"weekend":149},"is_active":true}'

GET /api/v1/me/inquiries

Your enquiries with status (new, waiting, answered, booked, closed) and customer details.

Recht: own:inquiries:read

ParameterTypeBeschrijving
statusstringFilter by status

Voorbeeld

curl "https://hops24.de/api/v1/me/inquiries" \
  -H "Authorization: Bearer hk_live_…"

GET /api/v1/me/bookings

Your orders within a period.

Recht: own:inquiries:read

ParameterTypeBeschrijving
from, toYYYY-MM-DDPeriod (default: today to +12 months)

Voorbeeld

curl "https://hops24.de/api/v1/me/bookings" \
  -H "Authorization: Bearer hk_live_…"

GET /api/v1/me/blocked-dates

Blocked days from today (manual and calendar import).

Recht: own:calendar:write

Voorbeeld

curl "https://hops24.de/api/v1/me/blocked-dates" \
  -H "Authorization: Bearer hk_live_…"

POST /api/v1/me/blocked-dates

Block days (for one listing or all).

Recht: own:calendar:write

ParameterTypeBeschrijving
datesarrayList of dates YYYY-MM-DD (max. 366)
listing_idintOptional; omitted = all listings
reasonstringOptional reason

Voorbeeld

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-17"],"listing_id":123,"reason":"Wartung"}'

DELETE /api/v1/me/blocked-dates

Release manually blocked days (calendar imports stay).

Recht: own:calendar:write

ParameterTypeBeschrijving
datesarrayList of dates YYYY-MM-DD
listing_idintOptional

Voorbeeld

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-17"],"listing_id":123}'

Softwarepartners met veel aanbiedersaccounts: multi-accounttoegang op aanvraag in het pakket Partner.

Webhooks

Webhooks melden gebeurtenissen direct aan je server (pakket Business of hoger). We sturen een POST met JSON naar je URL; antwoord met een 2xx-status. Mislukte leveringen herhalen we na 1, 5 en 30 minuten en 2, 6 en 24 uur.

CodeBeschrijving
inquiry.createdNew customer enquiry for the linked provider account
inquiry.repliedProvider replied to an enquiry you submitted (without content)
webhook.testTest event (triggered manually)

Handtekening controleren (secret uit 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: Signatur prüfen
[$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);

Weergaveregels

Toon bij elk aanbod een link naar de url uit het antwoord. Bij Free en Starter ook ‘via HOPS24’. Gegevens maximaal 24 uur cachen en niet doorgeven. Contactgegevens van aanbieders worden bewust niet geleverd – aanvragen lopen via HOPS24.

De API-gebruiksvoorwaarden zijn van toepassing (Duits).

Contact