GET /api/v1/status
Checks the key and shows plan, scopes and usage for the current month.
Exemplo
curl "https://hops24.net/api/v1/status" \ -H "Authorization: Bearer hk_test_…"
Tudo o que você precisa para integrar. Versão 1 · URL base: https://hops24.net/api/v1
Envie sua chave em um cabeçalho em toda requisição. Nunca coloque chaves em URLs ou em código público – os domínios para chamadas pelo navegador você mesmo cadastra na sua conta de API.
Authorization: Bearer hk_live_… # or X-API-Key: hk_live_…
Chaves que começam com hk_test_ retornam dados de exemplo fixos (anúncios 900001–900004), para você integrar antes de entrar no ar. Chaves de produção começam com hk_live_ e retornam anúncios reais a partir de 20/10/2026.
Respostas bem-sucedidas contêm data (e meta com paginação nas listas); erros contêm error com code e message. Preços como números na moeda indicada em currency (USD); se faltar, price_on_request é true.
{ "data": [ … ], "meta": { "page": 1, "per_page": 20, "total": 14, "pages": 1 } }
{ "error": { "code": "quota_exceeded", "message": "…" } }
| HTTP | Código |
|---|---|
| 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 |
Cada requisição conta para a cota mensal. Os cabeçalhos X-Quota-Limit e X-Quota-Remaining mostram sua situação. Quando a cota acaba, a API responde com 429 – sem cobranças extras.
| Plano | Requisições / mês | Requisições / segundo |
|---|---|---|
| Free | 1.000 | 2 |
| Starter | 25.000 | 10 |
| Business | 250.000 | 30 |
| Partner | sob consulta | 50 |
/api/v1/statusChecks the key and shows plan, scopes and usage for the current month.
Exemplo
curl "https://hops24.net/api/v1/status" \ -H "Authorization: Bearer hk_test_…"
/api/v1/categoriesAll categories with translations (de, en, es, fr, nl, it, pt).
Escopo: listings:read
Exemplo
curl "https://hops24.net/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.
Escopo: listings:read
| Parâmetro | Tipo | Descrição |
|---|---|---|
after | int | Last processed change ID, initially 0 |
limit | int | Up to 200 changes |
Exemplo
curl "https://hops24.net/api/v1/changes" \ -H "Authorization: Bearer hk_test_…"
/api/v1/listingsSearch public listings. Same logic as the search on hops24.de.
Escopo: listings:read
| Parâmetro | Tipo | Descrição |
|---|---|---|
q | string | Free text (title, city, description) |
country | string | Country (US, MX, BR, AR); default US. 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) |
Exemplo
curl "https://hops24.net/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.
Escopo: listings:read
Exemplo
curl "https://hops24.net/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.
Escopo: availability:read
| Parâmetro | Tipo | Descrição |
|---|---|---|
months | int | Period in months (1–12, default 3) |
Exemplo
curl "https://hops24.net/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.
Escopo: inquiries:create
| Parâmetro | Tipo | Descrição |
|---|---|---|
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 |
Exemplo
curl -X POST "https://hops24.net/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.
Escopo: webhooks
Exemplo
curl "https://hops24.net/api/v1/webhooks" \ -H "Authorization: Bearer hk_live_…"
/api/v1/webhooksCreate a webhook. The signing secret is only shown in this response.
Escopo: webhooks
| Parâmetro | Tipo | Descrição |
|---|---|---|
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) |
Exemplo
curl -X POST "https://hops24.net/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.
Escopo: webhooks
Exemplo
curl -X POST "https://hops24.net/api/v1/webhooks/7/test" \ -H "Authorization: Bearer hk_live_…"
/api/v1/webhooks/{id}Delete a webhook.
Escopo: webhooks
Exemplo
curl -X DELETE "https://hops24.net/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).
Escopo: own:listings:write | own:inquiries:read | own:listings:sync
Exemplo
curl "https://hops24.net/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.
Escopo: own:listings:sync
| Parâmetro | Tipo | Descrição |
|---|---|---|
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) |
Exemplo
curl -X POST "https://hops24.net/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.
Escopo: own:listings:sync
| Parâmetro | Tipo | Descrição |
|---|---|---|
title, description, category, city, prices, sale, details, images, active | object | as for /me/listings/sync |
Exemplo
curl -X PUT "https://hops24.net/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.
Escopo: own:listings:sync
Exemplo
curl "https://hops24.net/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.
Escopo: own:listings:write
| Parâmetro | Tipo | Descrição |
|---|---|---|
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 |
Exemplo
curl -X PATCH "https://hops24.net/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).
Escopo: own:inquiries:read
| Parâmetro | Tipo | Descrição |
|---|---|---|
status | string | Filter by status |
Exemplo
curl "https://hops24.net/api/v1/me/inquiries" \ -H "Authorization: Bearer hk_live_…"
/api/v1/me/bookingsYour orders within a period.
Escopo: own:inquiries:read
| Parâmetro | Tipo | Descrição |
|---|---|---|
from, to | YYYY-MM-DD | Period (default: today to +12 months) |
Exemplo
curl "https://hops24.net/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.
Escopo: own:calendar:write
Exemplo
curl "https://hops24.net/api/v1/me/blocked-dates" \ -H "Authorization: Bearer hk_live_…"
/api/v1/me/blocked-datesBlock days (for one listing or all).
Escopo: own:calendar:write
| Parâmetro | Tipo | Descrição |
|---|---|---|
dates | array | List of dates YYYY-MM-DD (max. 366) |
listing_id | int | Optional; omitted = all listings |
reason | string | Optional reason |
Exemplo
curl -X POST "https://hops24.net/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.
Escopo: own:calendar:write
| Parâmetro | Tipo | Descrição |
|---|---|---|
dates | array | List of dates YYYY-MM-DD |
listing_id | int | Optional |
Exemplo
curl -X DELETE "https://hops24.net/api/v1/me/blocked-dates" \
-H "Authorization: Bearer hk_live_…" \
-H "Content-Type: application/json" \
-d '{"dates":["2026-10-23"],"listing_id":123}'
Parceiros de software com muitas contas de locadores: acesso multiconta sob consulta no plano Partner.
Webhooks avisam seu servidor sobre eventos na hora (plano Business ou superior). Enviamos um POST com JSON para a sua URL; responda com status 2xx. Entregas com falha são repetidas após 1, 5 e 30 minutos e após 2, 6 e 24 horas.
| Código | Descrição |
|---|---|
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) |
Verifique a assinatura (secret de 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);
Mostre em cada anúncio um link para a url da resposta. Nos planos Free e Starter mostre também “via HOPS24”. Guarde os dados em cache por no máximo 24 horas e não os repasse. Os dados de contato dos locadores intencionalmente não são fornecidos – as solicitações passam pela HOPS24.