Escolher país

Você vê os anúncios do país escolhido. O idioma segue as configurações do seu navegador.

API de parceiros · v1

Documentação da API

Tudo o que você precisa para integrar. Versão 1 · URL base: https://hops24.net/api/v1

Baixar arquivo OpenAPI Ainda sem chave? Cadastre-se grátis

Autenticação

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_…

Sandbox

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.

Formato da resposta

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": "…" } }

Códigos de erro

HTTPCódigo
400invalid_parameter
401unauthorized
403insufficient_scope · no_provider_account · provider_approval_required · origin_not_allowed · client_suspended
404not_found
409idempotency_conflict
412version_conflict
428precondition_required
429rate_limited · quota_exceeded
503temporarily_unavailable
500server_error

Limites e cotas

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.

PlanoRequisições / mêsRequisições / segundo
Free 1.000 2
Starter 25.000 10
Business 250.000 30
Partner sob consulta 50

Endpoints

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_…"

GET /api/v1/categories

All 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_…"

GET /api/v1/changes

Public 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âmetroTipoDescrição
afterintLast processed change ID, initially 0
limitintUp to 200 changes

Exemplo

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

GET /api/v1/listings

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

Escopo: listings:read

ParâmetroTipoDescrição
qstringFree text (title, city, description)
countrystringCountry (US, MX, BR, AR); default US. Returns listings of providers in or serving this country
postal_codestringPostcode or city; respects delivery areas (venues: location of the venue)
lat, lngnumberCoordinates; finds providers whose delivery radius covers the point and venues within 25 km
categorystringCategory key from /categories
dateYYYY-MM-DDOnly listings available on this day
max_pricenumberMaximum “from” price in the listing currency
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)

Exemplo

curl "https://hops24.net/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.

Escopo: listings:read

Exemplo

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

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

Unavailable 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âmetroTipoDescrição
monthsintPeriod in months (1–12, default 3)

Exemplo

curl "https://hops24.net/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. 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âmetroTipoDescrição
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
langstringLanguage of the confirmation email to the customer: de, en, es, fr, nl, it, pt (default: language of the instance)
consentboolMust be true: the customer agreed to the submission
review_consentboolOptional: 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}'

GET /api/v1/webhooks

Your webhooks with delivery status.

Escopo: webhooks

Exemplo

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

POST /api/v1/webhooks

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

Escopo: webhooks

ParâmetroTipoDescrição
urlstringTarget URL (https only, publicly reachable)
eventsarrayinquiry.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"]}'

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

Send a webhook.test event.

Escopo: webhooks

Exemplo

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

DELETE /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_…"

GET /api/v1/me/listings

Provider 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_…"

POST /api/v1/me/listings/sync

Create 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âmetroTipoDescrição
listingsarray1–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)
modestringpartial (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_sessionintFor mode full in parts: value of meta.sync_session from the first response (valid for 24 hours)
completeboolLast 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}]}'

PUT /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âmetroTipoDescrição
title, description, category, city, prices, sale, details, images, activeobjectas 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}'

GET /api/v1/me/sync/runs

The 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_…"

PATCH /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âmetroTipoDescrição
title, descriptionstringTitle (3–150 chars), description
pricesobjectfrom, daily, weekend, delivery, setup, deposit, placement_monthly, hourly (in the listing currency, null clears; hourly only for services)
is_activeboolActivate/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}'

GET /api/v1/me/inquiries

Your 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âmetroTipoDescrição
statusstringFilter by status

Exemplo

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

GET /api/v1/me/bookings

Your orders within a period.

Escopo: own:inquiries:read

ParâmetroTipoDescrição
from, toYYYY-MM-DDPeriod (default: today to +12 months)

Exemplo

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

GET /api/v1/me/blocked-dates

Blocked 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_…"

POST /api/v1/me/blocked-dates

Block days (for one listing or all).

Escopo: own:calendar:write

ParâmetroTipoDescrição
datesarrayList of dates YYYY-MM-DD (max. 366)
listing_idintOptional; omitted = all listings
reasonstringOptional 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"}'

DELETE /api/v1/me/blocked-dates

Release only API blocks created by this connection; manual and imported blocks stay.

Escopo: own:calendar:write

ParâmetroTipoDescrição
datesarrayList of dates YYYY-MM-DD
listing_idintOptional

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

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ódigoDescrição
listing.updatedPublic listing changed
availability.changedAvailability changed
listing.removedRemove listing from partner feed
inquiry.createdNew customer enquiry for the linked provider account
inquiry.repliedDiscontinued since 2026-10-05 – no longer sent (providers reply directly by email)
webhook.testTest 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);

Regras de exibição

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.

Valem os termos de uso da API.

Contato