API-Referenz der Headless-Schnittstelle
Esta página aún no está disponible en tu idioma.
PLUS Die Headless-Schnittstelle ist Teil der WordPress REST API und antwortet unter dem Namensraum immomakler-headless/v1. Die Basis-URL lautet daher
https://ihre-wordpress-adresse.de/wp-json/immomakler-headless/v1/Alle Endpunkte antworten erst, wenn Sie die Schnittstelle im Backend Ihrer Website (wp-admin) unter WP-ImmoMakler → Integrationen → Headless aktiviert haben; siehe Headless-Betrieb mit eigenem Frontend.
Authentifizierung
Abschnitt betitelt „Authentifizierung“Lesende Endpunkte sind standardmäßig öffentlich. Haben Sie die Option “API-Key auch für lesende Anfragen verlangen” aktiviert, muss jede Anfrage den API-Key mitschicken, entweder im eigenen Header oder als Bearer-Token:
curl -H "X-ImmoMakler-Key: IHR-API-KEY" https://ihre-wordpress-adresse.de/wp-json/immomakler-headless/v1/propertiescurl -H "Authorization: Bearer IHR-API-KEY" https://ihre-wordpress-adresse.de/wp-json/immomakler-headless/v1/propertiesFehlt der Key oder stimmt er nicht, antwortet die Schnittstelle mit 401 und dem Fehlercode headless_unauthorized.
Gemeinsame Parameter
Abschnitt betitelt „Gemeinsame Parameter“| Parameter | Bedeutung |
|---|---|
page, per_page | Seite und Seitengröße einer Liste. per_page ist auf 100 begrenzt, bei der Übersicht /properties/manifest auf 1000. |
fields | summary liefert die Kurzform für Listen (Daten der Listenansicht, Titelbild, Status, Adresse, Links), full die vollständige Immobilie für die Detailansicht. Listen liefern standardmäßig summary, die Einzelabfrage full. |
status | open zeigt die Immobilien der Immobilienliste, reference nur Referenzobjekte, all beides. Listen liefern standardmäßig open, die Einzelabfrage all. |
modified_since | Nur Immobilien, die seit diesem Zeitpunkt (ISO 8601, zum Beispiel 2026-10-11T08:00:00Z) geändert wurden. |
locale | Sprache der Bezeichnungen und Kategorienamen, zum Beispiel de_DE oder en. Auf mehrsprachigen Websites mit WPML oder Polylang wählt der Parameter auch die Sprache der Immobilien: Listen und Suche liefern die Immobilien dieser Sprache, eine einzelne Immobilie kommt in dieser Sprache, sofern eine Übersetzung existiert, sonst in der Sprache der Website. Ohne den Parameter gilt die Sprache der Website. |
Listen antworten mit einem Umschlag:
{ "items": [], "total": 42, "total_pages": 3, "page": 1, "per_page": 20, "generated_at": "2026-10-11T08:15:00+00:00"}Zusätzlich tragen Listen die Header X-WP-Total, X-WP-TotalPages und einen Link-Header mit rel="next" und rel="prev".
Caching
Abschnitt betitelt „Caching“Lesende Antworten tragen Cache-Control: public, max-age=60, s-maxage=300, stale-while-revalidate=600 und einen ETag. Schicken Sie den ETag beim nächsten Abruf im Header If-None-Match mit, antwortet die Schnittstelle mit 304 Not Modified, solange sich die Daten nicht geändert haben. Im Browser übernimmt das der HTTP-Cache des Browsers von selbst; schickt ein Frontend If-None-Match selbst mit, erhält sein Code bei unveränderten Daten eine leere Antwort und muss dann die zuvor geladenen Daten verwenden. Nach jeder Übertragung Ihrer Maklersoftware und nach jeder Änderung an einer Immobilie verwirft WP-ImmoMakler seinen Zwischenspeicher, sodass die nächste Anfrage die aktuellen Daten liefert.
Endpunkte
Abschnitt betitelt „Endpunkte“GET /site
Abschnitt betitelt „GET /site“Beschreibt die Website einmal pro Build: die Adresse von WordPress und Frontend, die Pfadmuster, die verfügbaren Sprachen (locales, und unter languages je Sprache Code, Locale, Name, Standardsprache und das Frontend-Verzeichnis prefix), Währung, Funktionsumfang (PDF, Merkliste, Suchaufträge, Umkreissuche), alle Kategorien mit ihrer Kennung (id: type, country, marketing, usage, location, feature, status), ihrem Suchparameter (param), ihrem WordPress-Namen, ihrer Query-Variable und ihrem URL-Pfad, die in Ihren Einstellungen gewählten Datenfelder als englische Keys (keys.archive, keys.single, keys.single_areas, keys.single_prices, keys.epass, keys.contact), die registrierten Bildgrößen und unter search den Aufbau Ihres Suchformulars: die angezeigten Kategorien, die Bereiche mit Key, Slug des Suchformulars, Einheit, Schrittweite und Höchstwert, die Sortierungen mit Beschriftung, die Standardsortierung, die Umkreissuche mit ihren Radien und unter search.places die Adressvervollständigung der Umkreissuche, falls Sie einen Anbieter dafür eingerichtet haben (siehe unten).
GET /properties
Abschnitt betitelt „GET /properties“Die Immobilienliste, zuletzt geänderte zuerst. Unterstützt page, per_page, fields, status, modified_since und locale.
GET /properties/manifest
Abschnitt betitelt „GET /properties/manifest“Die kompakte Übersicht aller sichtbaren Immobilien für den Abgleich beim Bauen eines statischen Frontends. Jeder Eintrag nennt object_number, post_id, slug, language, locale, translations, modified_gmt, public_since, is_reference, is_project, is_project_unit und frontend_url. Unterstützt page, per_page (bis 1000), status und locale.
GET /properties/{object_number}
Abschnitt betitelt „GET /properties/{object_number}“Eine Immobilie, adressiert über ihre Objektnummer. Die Objektnummer wird URL-kodiert übergeben (A%2F1 für A/1); Groß- und Kleinschreibung spielen keine Rolle. Eine Immobilie, die die Immobilienliste nicht zeigt, antwortet mit 404 und dem Fehlercode headless_not_found. Unterstützt fields, status und locale. Auf mehrsprachigen Websites tragen alle Übersetzungen einer Immobilie dieselbe Objektnummer; locale entscheidet, welche davon geliefert wird, und translations nennt die anderen.
GET /search
Abschnitt betitelt „GET /search“Die Immobiliensuche mit den Filtern Ihrer Website. Die Parameter sind englisch; die Namen aus der Suche Ihrer WordPress-Website nimmt die Schnittstelle als Aliasse an, sodass eine gefilterte Adresse der Immobilienliste und eine Suchanfrage dasselbe bedeuten:
- Kategorien über ihren Suchparameter (
type,marketing,usage,location,country,features; der Parameter steht insite.taxonomies[].param) mit Begriffs-Slugs; die Status-Kategorie heißt hierobjektstatus, weilstatuswie bei/propertieszwischen offenen Immobilien, Referenzen und allen wählt. Mehrere Begriffe trennen Sie mit Komma, wenn einer davon passen soll (type=wohnung,haus), oder mit Plus, wenn alle passen müssen (features=balkon+garten). Bei der Ausstattung bedeutet auch eine Liste (features[]=balkon&features[]=garten) “alle”. Die Query-Variablen der WordPress-Website (typ,vermarktungsart,nutzungsart,ort,land,ausstattung) gelten als Aliasse. - Bereiche über
{key}_minund{key}_max, zum Beispielprice_min=200000&price_max=500000oderrooms_min=3. Welche Bereiche es gibt und wie weit sie reichen, nenntsite.search.ranges;von-{source_slug}undbis-{source_slug}aus dem Suchformular Ihrer Website (von-kaufpreis,bis-qm) gelten als Aliasse. Die Bereiche gelten genauso wie in der Suche Ihrer Website; ein Kaufpreis von 0 (auf Anfrage) fällt wie dort nicht heraus. id(Aliasobjekt-id): Objektnummer oder ihr Anfang.centerundradius(km) für die Umkreissuche (ab PLUS, mit aktivierter Umkreissuche);radiusist optional. Einlocation-Filter wird dann wie auf der Website ignoriert. Unterradiusnennt die Antwort die gefundene Adresse oder den Fehler, falls der Ort nicht ermittelt werden konnte.bounds=süd,west,nord,ostfür den sichtbaren Kartenausschnitt in Dezimalgrad.ordermit einem Key aussite.search.orders; ohne Angabe gilt die Standardsortierung Ihrer Website.facets=1ergänzt unterfacetsje Kategorie-Kennung (type,location,feature, …) die Begriffe des Ergebnisses mit ihrer Anzahl, häufigste zuerst, für Zähler neben den Filtern. Eine Kategorie, nach der mit “einer dieser Begriffe” gefiltert wird, zählt ihre eigenen Begriffe ohne diesen Filter: Wertype=wohnunggewählt hat, sieht weiterhin, wie viele Häuser es gibt, und kann wechseln. Ein “alle diese Begriffe”-Filter wie die Ausstattung engt seine Zähler weiter ein.- Dazu
page,per_page,fields,statusundlocalewie bei/properties.
Die Antwort enthält neben den Immobilien unter applied die Filter, wie die Schnittstelle sie verstanden hat, mit den englischen Kennungen und Keys, sodass ein Frontend seinen Formularzustand daraus herstellen kann. Es gelten dieselben Sichtbarkeitsregeln wie für die Immobilienliste.
Adressvorschläge für die Umkreissuche
Abschnitt betitelt „Adressvorschläge für die Umkreissuche“Ist unter WP-ImmoMakler → Integrationen → Geodienste ein Anbieter für die Adressvervollständigung eingerichtet, beschreibt site.search.places, wie ein Frontend Vorschläge holt, während ein Besucher im Feld der Umkreissuche tippt; ohne Anbieter ist places null. Der Ablauf ist derselbe wie im Suchformular Ihrer Website, und der Key des Anbieters bleibt dabei auf Ihrem Server:
GETaufplaces.token_urlliefert ein für 15 Minuten gültiges Token und unterproxy_urldie Adresse des Fast-API-Proxys, der ohne WordPress antwortet;proxy_urlist leer, wenn der Proxy abgeschaltet ist oder der Anbieter nicht Google ist.- Jede Eingabe geht als
POSTmit dem JSON-Body{ "q": "Hambu", "session": "…", "languageCode": "de" }und dem HeaderX-ImmoMakler-Sign: <Token>anproxy_url, ersatzweise anplaces.suggest_url. Die Antwort ist{ "suggestions": [ { "label": "Hamburg, Deutschland", "placeId": "…" } ] }. - Den gewählten
labelübergibt das Frontend alscenteran/search.
Beide Endpunkte stehen auch im OpenAPI-Dokument und in llms.txt, mit ihrem eigenen Namespace immomakler/v1 als Server. sessions sagt, ob der Anbieter je Tippfolge abrechnet; dann verwendet ein Frontend für eine Folge von Eingaben denselben zufälligen session-Wert und beginnt nach einer Auswahl oder drei Minuten Pause einen neuen. min_length, max_results und debounce_ms sind die Werte Ihrer Website. Rufen Sie die Endpunkte aus dem Browser auf, nicht von einem Server: Die Begrenzungen (90 Anfragen pro Minute und Besucher am Proxy, 600 nicht aus dem Cache beantwortete pro Stunde) gelten je Besucher. Der Proxy nimmt Anfragen von der Adresse Ihres Frontends und den erlaubten Ursprüngen an; eine Änderung dieser Einstellungen übernimmt er mit dem nächsten Speichern.
GET /search/markers
Abschnitt betitelt „GET /search/markers“Die Kartenmarker eines ganzen Suchergebnisses: dieselben Filter wie /search, aber ohne Seiten. Zu jeder Immobilie mit Position liefert die Antwort Objektnummer, Titel, Koordinaten, ob die Position genau ist, den ersten Preis der Listenansicht, ein Vorschaubild und die Frontend-Adresse. Ein Frontend zeigt so alle Treffer auf der Karte, während die Liste seitenweise lädt. Die Antwort ist auf 1000 Marker begrenzt; capped meldet, wenn ein Ergebnis darüber lag.
GET /properties/{object_number}/similar
Abschnitt betitelt „GET /properties/{object_number}/similar“Ähnliche Immobilien, so wie Ihre Website sie unter einer Immobilie zeigt: gleiche Objektart und Vermarktungsart in der Nähe, schrittweise gelockert, bis etwas passt, in zufälliger Reihenfolge. count begrenzt die Anzahl (Standard: Ihre Einstellung, höchstens 12). Einheiten desselben Bauprojekts bleiben außen vor, wenn Ihre Website sie in der eigenen Tabelle zeigt.
GET /properties/{object_number}/units
Abschnitt betitelt „GET /properties/{object_number}/units“Die Einheiten eines Bauprojekts, so wie die Tabelle “Weitere Einheiten in diesem Projekt” sie zeigt: alle Einheiten nach Objektnummer, auch verkaufte und vermietete, die die Immobilienliste nicht mehr führt. Für eine Immobilie, die kein Bauprojekt ist, antwortet die Schnittstelle mit 404.
GET /taxonomies
Abschnitt betitelt „GET /taxonomies“Alle Kategorien unter ihrer Kennung (type, marketing, usage, location, country, feature, status), jeweils mit Suchparameter, WordPress-Namen und ihren Begriffen: term_id, slug, name, parent, count, description und source_slug, der sprachunabhängige Slug des Begriffs. Mit hide_empty=false erscheinen auch Begriffe ohne Immobilien. Die Anzahl zählt alle Immobilien eines Begriffs, auch solche, die die Immobilienliste ausblendet.
GET /contacts und GET /contacts/{post_id}
Abschnitt betitelt „GET /contacts und GET /contacts/{post_id}“Die veröffentlichten Kontaktpersonen mit Name, Beschreibung, Porträt, den Kontaktfeldern aus Ihren Einstellungen und der Anzahl ihrer Immobilien.
GET /content/pages und GET /content/pages/{pfad}
Abschnitt betitelt „GET /content/pages und GET /content/pages/{pfad}“Die veröffentlichten Seiten Ihrer Website, ohne die Vorlagenseiten von WP-ImmoMakler. Die Liste nennt zu jeder Seite den hierarchischen Pfad (ueber-uns/team), die übergeordnete Seite, die Reihenfolge, das Seitentemplate, ob sie die Startseite ist und ihre Adresse auf dem Frontend. Die Einzelabfrage über den Pfad liefert die Seite als Block-Struktur: Jeder Block trägt seinen Namen (core/paragraph, immomakler/single-data, …), seine Attribute, sein inneres HTML, seine Unterblöcke und unter rendered das HTML, das WordPress für ihn ausgeben würde. Blöcke von WP-ImmoMakler haben kein rendered; ein Frontend stellt sie aus den Immobiliendaten dar. Dazu kommen content_html, der gesamte Inhalt als ein HTML-Fragment, und seo mit Titel und Beschreibung aus Yoast SEO oder Rank Math, sofern dort gepflegt. Links auf Ihre WordPress-Website zeigen in beiden Fassungen bereits auf das Frontend; Bilder und Dokumente bleiben auf WordPress.
GET /content/posts und GET /content/posts/{slug}
Abschnitt betitelt „GET /content/posts und GET /content/posts/{slug}“Die veröffentlichten Beiträge, neueste zuerst, mit Kategorien, Schlagwörtern, Auszug und Beitragsbild; unterstützt modified_since. Die Einzelabfrage liefert dieselbe Block-Struktur wie bei Seiten.
GET /spam/token, POST /enquiries und POST /withdrawal
Abschnitt betitelt „GET /spam/token, POST /enquiries und POST /withdrawal“Die Formularrouten: das Token für den Spam-Schutz, Kontaktanfragen und Widerrufe aus einem eigenen Frontend. Sie nehmen Anfragen nur von den erlaubten Ursprüngen oder mit dem API-Key entgegen und werden nie zwischengespeichert. Aufbau der Dokumente, Fehlercodes und das Zusammenspiel mit dem Spam-Schutz beschreibt die Seite Formulare über die Headless-Schnittstelle; site.forms nennt die Felder, Pflichtfelder und Zustimmungstexte Ihrer Formulare.
Webhook
Abschnitt betitelt „Webhook“Die Schnittstelle meldet Änderungen an Ihren Immobilien von sich aus an Ihr Frontend; Aufbau, Signatur und Wiederholung der Nachricht beschreibt die Seite Webhook, Links und Weiterleitung.
Menüs und Branding in /site
Abschnitt betitelt „Menüs und Branding in /site“site.menus enthält die drei Menüpositionen, die WP-ImmoMakler für Ihr Frontend registriert und die Sie im Backend Ihrer Website (wp-admin) unter Design → Menüs belegen: primary (Hauptnavigation), footer und legal (Impressum, Datenschutz). Jeder Eintrag trägt Titel, die in WordPress gespeicherte Adresse, unter frontend_url die Adresse auf dem Frontend, Ziel, CSS-Klassen, den Typ des Ziels und seine Untereinträge.
site.branding liefert die Gestaltungsvorgaben aus den Abschnitten “Branding” und “Astro-Starter” der Headless-Einstellungen: die Gestaltungsvorlage (preset), Name und Claim der Website, Logo und Standard-Vorschaubild mit allen Bildgrößen, Primär- und Akzentfarbe als Hex-Werte, die Schriftkombination (sans, serif-headlines, humanist, system) und die Eckenrundung (none, small, medium, large). Ein Frontend schreibt diese Werte in seine Design-Tokens, sodass Sie das Erscheinungsbild in WordPress ändern, ohne das Frontend anzufassen.
Aufbau einer Immobilie
Abschnitt betitelt „Aufbau einer Immobilie“Die vollständige Form (fields=full) einer Immobilie, gekürzt:
{ "object_number": "A-1234", "source_id": "7f3c…", "post_id": 4711, "slug": "wohnung-kaufen-in-hamburg-a-1234", "language": "de", "locale": "de_DE", "translations": { "en_GB": { "object_number": "A-1234", "post_id": 4712, "slug": "flat-for-sale-in-hamburg-a-1234", "frontend_url": "https://ihr-frontend.de/en/properties/flat-for-sale-in-hamburg-a-1234/" } }, "published_gmt": "2026-09-01T10:00:00+00:00", "modified_gmt": "2026-10-10T08:15:00+00:00", "title": "3-Zimmer-Wohnung in Hamburg-Altona, 85 m²", "object_title": "Helle Stadtwohnung mit Blick aufs Wasser", "subtitle": "Hamburg-Altona · Wohnung · Kauf", "excerpt": "…", "status": { "terms": [ { "slug": "offen", "name": "offen" } ], "is_open": true, "is_reserved": false, "is_reference": false, "archived": false, "is_project": false, "is_project_unit": false, "is_hidden_project": false, "project_id": null, "public_since": "2026-09-01T10:00:00+00:00" }, "marketing": { "type": "sale", "usage": "residential", "property_types": [ "wohnung" ] }, "taxonomies": { "type": [ { "term_id": 12, "slug": "wohnung", "name": "Wohnung", "parent": 0, "source_slug": "wohnung" } ] }, "address": { "street": "Elbchaussee", "house_number": "1", "postal_code": "22763", "city": "Hamburg", "district": "Altona", "state": "Hamburg", "country": "DEU", "country_name": "Deutschland" }, "geo": { "lat": 53.55, "lng": 9.93, "exact": true, "radius_m": null }, "fields": { "property": [ { "key": "rooms", "source_key": "anzahl_zimmer", "label": "Zimmer", "value": "3", "text": "3 Zimmer", "raw": 3 } ], "areas": [ { "key": "living_area", "source_key": "wohnflaeche", "label": "Wohnfläche ca.", "value": "85 m²", "text": "Wohnfläche ca. 85 m²", "raw": 85 } ], "prices": [ { "key": "purchase_price", "source_key": "kaufpreis", "label": "Kaufpreis", "value": "350.000 €", "text": "Kaufpreis 350.000 €", "raw": 350000 } ], "epass": [] }, "descriptions": { "description": { "source_key": "objektbeschreibung", "label": "Beschreibung", "html": "<p>…</p>", "text": "…" } }, "media": { "featured": { "id": 99, "alt": "", "title": "Wohnzimmer", "mime": "image/jpeg", "sizes": { "immomakler-archive-thumb": { "url": "…", "width": 400, "height": 267 }, "full": { "url": "…", "width": 2000, "height": 1333 } } }, "images_count": 12, "floorplans_count": 1, "images": [], "floorplans": [], "downloads": [ { "id": 101, "title": "Exposé", "url": "…", "filename": "expose.pdf", "is_pdf": true, "is_floorplan": false } ], "links": [], "videos": [ { "type": "embed", "url": "https://www.youtube.com/watch?v=…", "embeddable": true } ], "virtual_tours": [] }, "contact": { "post_id": 7, "name": "Erika Mustermann", "slug": "erika-mustermann", "wp_url": "…", "photo": { "…": "…" }, "fields": [ { "key": "full_name", "source_key": "kontaktperson_fullname", "label": "Ansprechpartner", "value": "Erika Mustermann" } ] }, "seo": { "title": "…", "description": "…", "canonical": "https://ihr-frontend.de/immobilien/wohnung-kaufen-in-hamburg-a-1234/", "og_image_url": "…" }, "json_ld": [ { "@context": "https://schema.org", "@type": [ "Product" ] } ], "links": { "frontend_url": "https://ihr-frontend.de/immobilien/wohnung-kaufen-in-hamburg-a-1234/", "wp_url": "https://ihre-wordpress-adresse.de/immobilien/wohnung-kaufen-in-hamburg-a-1234/", "archive_frontend_url": "https://ihr-frontend.de/immobilien/", "og_image_url": "…/og-image/1/", "pdf_url": "…?pdf", "qr_url": "…?qrcode" }}seo enthält den SEO-Titel und die Beschreibung der Immobilie, wie WP-ImmoMakler sie beim Import erzeugt oder die KI-Texte sie geschrieben haben; haben Sie für die Immobilie in Yoast SEO oder Rank Math einen eigenen Titel oder eine eigene Beschreibung eingetragen, gehen diese vor. Vorlagen mit Platzhaltern wie %%title%% bleiben dem SEO-Plugin überlassen und werden hier nicht berücksichtigt.
Jedes Datenfeld trägt einen englischen key, der auf jeder Website gleich ist, und unter source_key den Namen, den WordPress und OpenImmo verwenden. Dazu gehören die Bezeichnung (label) und der Anzeigetext (value) in der Sprache der Website, beides als ein Satzteil (text) wie in der Textform der Elementor-Tags, etwa “3,5 Zimmer” oder “2 Stellplätze”, sowie der Rohwert (raw) als Zahl oder Zeichenkette. Enthält ein Anzeigetext HTML, etwa einen Link, liefert html zusätzlich die unveränderte Fassung. Die Kurzform (fields=summary) ersetzt die Gruppen property, areas, prices und epass durch archive und archive_prices, also die Felder der Listenansicht, und lässt descriptions, json_ld sowie die Bild-, Dokument- und Videolisten weg.
Maschinenlesbare Beschreibung
Abschnitt betitelt „Maschinenlesbare Beschreibung“Die Schnittstelle beschreibt sich selbst. Beide Endpunkte sind immer öffentlich, auch wenn Sie den API-Key für lesende Anfragen verlangen, denn sie geben keine Immobiliendaten aus.
GET /openapi.json
Abschnitt betitelt „GET /openapi.json“Ein OpenAPI-3.1-Dokument mit allen Endpunkten, Parametern, Antwortschemata und den beiden Authentifizierungsarten. Entwicklungswerkzeuge wie Postman, Insomnia oder Generatoren für typisierte Clients lesen es direkt; die Parameter stammen aus den registrierten Routen, sodass das Dokument mit jeder Erweiterung der Schnittstelle Schritt hält. Unter webhooks beschreibt es die Nachrichten, die Ihre Website an das Frontend sendet, mit Headern, Signatur und Aufbau; die Einleitung nennt die Fehlercodes und die Regel für Formulare, die ein Server weiterreicht.
GET /llms.txt und GET /llms-full.txt
Abschnitt betitelt „GET /llms.txt und GET /llms-full.txt“Eine Kurzbeschreibung im Textformat nach der llms.txt-Konvention: Zweck der Schnittstelle, Basis-URL, Authentifizierung, die Regel, Immobilien über die Objektnummer zu adressieren, die Fehlercodes, der Webhook und die Liste der Endpunkte mit Links. Die Variante llms-full.txt ergänzt zu jedem Endpunkt die Parameter und die Felder der Antwort.
Für KI-Website-Builder
Abschnitt betitelt „Für KI-Website-Builder“KI-gestützte Werkzeuge, die aus einer Beschreibung Code erzeugen, kommen mit diesen beiden Dateien ohne weitere Erklärung zurecht:
- Lovable, Bolt, v0, Replit: Geben Sie im Prompt die Adresse von
llms.txtoderopenapi.jsonan, zum Beispiel “Baue eine Immobilienliste mit der API unter https://ihre-wordpress-adresse.de/wp-json/immomakler-headless/v1/llms.txt”. Lesende Anfragen funktionieren direkt aus dem Browser, da WordPress die REST API für alle Ursprünge freigibt. - Base44: Hinterlegen Sie die Adresse von
openapi.jsonals benutzerdefinierte OpenAPI-Integration. Verlangen Sie den API-Key für lesende Anfragen, legen Sie ihn dort als Secret ab; Base44 ruft die Schnittstelle dann aus einer Backend-Funktion auf.
Erzeugter Code sollte Immobilien stets über object_number adressieren und die Links aus links.frontend_url verwenden; beides steht so in llms.txt.
Fehlercodes
Abschnitt betitelt „Fehlercodes“| HTTP-Status | Code | Bedeutung |
|---|---|---|
401 | headless_unauthorized | Der API-Key fehlt oder ist falsch, obwohl er für lesende Anfragen verlangt wird. |
404 | headless_not_found | Die Immobilie oder Kontaktperson existiert nicht oder wird nicht öffentlich gezeigt. |
404 | rest_no_route | Die Schnittstelle ist nicht aktiviert. |
400 | headless_invalid_modified_since | Der Parameter modified_since ist kein gültiges Datum. |
403 | headless_forbidden | Eine Formularroute wurde weder von einem erlaubten Ursprung noch mit dem API-Key aufgerufen. |
422 | headless_validation_failed | Pflichtfelder fehlen oder sind ungültig; data.errors nennt sie. |
422 | headless_unknown_property | Eine Objektnummer in properties gehört zu keiner veröffentlichten Immobilie. |
422 | headless_spam_rejected | Die Eingabe wurde als Spam abgewiesen. |
429 | headless_rate_limited | Zu viele Anfragen in dieser Stunde. |
502 | headless_delivery_failed | Die Anfrage ist gespeichert, konnte aber nicht an alle Empfänger zugestellt werden. |
Filter für Entwickler
Abschnitt betitelt „Filter für Entwickler“immomakler_headless_frontend_urländert eine URL, die die Schnittstelle an das Frontend ausgibt. Parameter: die URL, die WordPress-ID der Immobilie (0 für die Immobilienliste) und die Art (propertyoderarchive).immomakler_headless_propertyändert das JSON-Dokument einer Immobilie, bevor es ausgegeben und zwischengespeichert wird. Parameter: das Dokument, die WordPress-ID und die Form (summaryoderfull).immomakler_headless_presetslegt fest, welche Gestaltungsvorlagen der Abschnitt “Astro-Starter” zur Auswahl anbietet. Parameter: ein Array aus Vorlagen-Slug und Bezeichnung.immomakler_headless_webhook_payloadändert die Nachricht des Webhooks, bevor sie signiert und gesendet wird. Parameter: die Nachricht als Array und der Name des Ereignisses (properties.changedoderping).immomakler_contact_property_urländert die Adresse einer Immobilie in der E-Mail einer Kontaktanfrage. Bei aktivierter Schnittstelle mit hinterlegter Frontend-Adresse zeigt sie auf das Frontend. Parameter: die URL und die WordPress-ID der Immobilie.