Error codes
Every code the API returns, with its meaning. Generated from the registry the API itself is typed against.
Every error has the same shape:
{ "error": "rate_limited" }The code is an identifier for a branch in your program, not a sentence for a person. There is exactly one code per meaning, and none disappears silently: the API may only return codes from this registry. Branch on the code, never on the HTTP status alone; an unknown code is a case for your generic message.
Sign-in and account
| Code | Meaning |
|---|---|
account_exists | An account already exists for this address. |
no_account | There is no account for this address. |
anmeldung_pausiert | Sign-up is paused by the operations switch. |
keine_freigabe | Sign-in is paused, and this address has not been approved. |
konto_pruefung_fehlt | The account check could not be reached. |
wegwerf_adresse | A disposable address. No reply would reach it. |
adresse_unzustellbar | The address's domain accepts no mail: it does not exist, or it has no mail server. |
invalid_code | The code entered is not correct. |
unauthorized | No valid session. |
forbidden | Signed in, but not allowed. |
schluessel_recht_fehlt | This API key may not write here: outside the MCP server, only a key with the right freigeben writes. |
verbindung_ungueltig | The consent for a connection has expired, was changed, belongs to no known client, or mixes the rights of both sides. |
seite_fehlt | A connection as a provider needs an account that has set up the provider side. |
contact_missing | There is no contact for this session. |
confirmation_mismatch | The confirmation does not match what was required. |
Approval list (admin panel)
| Code | Meaning |
|---|---|
freigabe_vorhanden | An approval already exists for this address or domain. |
domain_zu_breit | A mail provider's domain cannot be approved, only single addresses on it. |
Shape of the request
| Code | Meaning |
|---|---|
invalid_body | The request body does not match the schema. |
invalid_query | The query parameters do not match the schema. |
invalid_id | The ID is not a valid ID. |
invalid_input | The input is not valid. |
query_required | The search query is missing. |
no_fields | Not a single field was sent. |
unknown_key | The key is unknown. |
missing_property_id | The property ID is missing. |
payload_too_large | The request body or file is larger than allowed. |
not_found | There is nothing under this ID. |
Rate limit
| Code | Meaning |
|---|---|
rate_limited | Too many requests in too short a time. |
Files
| Code | Meaning |
|---|---|
datei_fehlt | No file was included. |
invalid_attachment | The attachment is not allowed. |
typ_nicht_erlaubt | This file type is not allowed. |
typ_stimmt_nicht | The file content does not match its type. |
zu_viele | More files than allowed. |
zu_gross_gesamt | The files together are larger than allowed. |
kein_xml | The file is not XML. |
kein_openimmo | The XML is not OpenImmo. |
kaputt | The file could not be read. |
leer | The file or upload contains nothing. |
unbekanntes_fach | This document folder does not exist. |
datei_nicht_abrufbar | The file could not be fetched from the address given. |
Plan and payment
| Code | Meaning |
|---|---|
payment_required | This cannot continue without payment. |
plan_required | Your plan does not include this. |
tarif_zu_klein | Your plan does not include this (provider side). |
quota_exceeded | The limit of your plan has been reached (searchers). |
mandate_limit | More search orders than your plan allows. |
abo_vorhanden | A subscription is already running. |
zustimmung_fehlt | Consent to the terms and the data processing agreement in their current version is missing. |
kein_wechsel | Switching to the same plan is not a switch. |
no_customer | There is no Stripe customer for this account. |
plan_not_configured | No price is set up for this plan. |
billing_not_configured | Payment is not set up. |
billing_unavailable | The payment service is not responding. |
verkauf_pausiert | Sales are paused by operations. |
kuendigung_fehlgeschlagen | The cancellation did not go through. |
kein_abo | No subscription is running for this account. |
nicht_gekuendigt | There is no cancellation that could be withdrawn. |
maklervertrag_offen | A brokerage contract is still running. |
Search order
| Code | Meaning |
|---|---|
mandate_conflict | The search order contradicts an existing one. |
mandate_incomplete | The search order is missing required details. |
no_active_mandate | There is no active search order. |
send_failed | The message was not sent. |
claim_not_stored | The claim was not stored. |
schon_angefragt | There is already an enquiry for this property. |
kein_uebergang | The match has changed in the meantime; the decision leads nowhere from its current state. |
Listing and property
| Code | Meaning |
|---|---|
unvollstaendig | The listing is missing required details. |
inserat_abgeschlossen | The property has been sold or let. |
inserat_reserviert | The property is reserved. |
inserat_gesperrt | The listing is blocked. |
kuerzel_vergeben | Someone already has this short name. |
keine_adresse | The address is missing. |
adresse_vergeben | A property with this address already exists. |
eigene_adresse | You cannot invite your own address. |
schon_eingeladen | This person has already been invited. |
entwurf_leer | The draft came back empty. |
entwurf_fehlgeschlagen | The draft could not be created. |
versand_fehlgeschlagen | Sending did not go through. |
zu_wenig | Not enough material for this step. |
seller_disabled | The provider side is switched off. |
abruf | Fetching from the external system failed. |
abgeschlossen | The process is finished and can no longer be changed. |
inserat_aktiv | The property is still listed. |
nicht_online | The listing is not live right now. |
beispielobjekt | The property is a made-up sample; no enquiry goes to it. |
impressum_fehlt | A commercial provider needs a stored legal notice before their properties appear in ChatGPT and Claude. |
Enquiry without an account
| Code | Meaning |
|---|---|
einwilligung_fehlt | Explicit consent to passing the enquiry on to the provider, in its current version, is missing. |
CRM
| Code | Meaning |
|---|---|
email_vergeben | This office already has a contact with this email address. |
name_vergeben | A list of this kind already has this name. |
Connections to external systems
| Code | Meaning |
|---|---|
geheimnis_nicht_eingerichtet | Access credentials cannot be stored securely right now. |
anbindung_nicht_gespeichert | The connection could not be saved. |
schluessel_falsch | The external system rejects the credentials. |
keine_berechtigung | The credentials are valid but may not read properties. |
nicht_erreichbar | The external system could not be reached. |
quelle_drosselt | The external system is not accepting further requests right now. |
quelle_abgewiesen | The external system rejected the request. |
quelle_unlesbar | The external system answered with something that cannot be read. |
zielfeld_unbekannt | This target field does not exist. |
lauf_nicht_zuruecknehmbar | This run cannot be undone. |
lauf_laeuft | A run is already in progress for this connection. |
lauf_beendet | This run has already finished. |
Background jobs (admin panel)
| Code | Meaning |
|---|---|
job_nicht_fehlgeschlagen | This job has not failed (or no longer has). |
The agent in the background
| Code | Meaning |
|---|---|
vorschlag_entschieden | This suggestion has already been decided: accepted, rejected or expired. |
bestaetigung_noetig | Only a person's click carries out this action, in the assistant's card or in the app. |
bestaetigung_abgelaufen | The confirmation has expired; the action has to be prepared again. |
stufe_aus | The office has switched this kind of action off in its automation; nothing is prepared. |
wert_geaendert | The value has been changed again since the agent's change; resetting would overwrite that. |
schon_rueckgaengig | This change by the agent has already been undone. |
Viewings
| Code | Meaning |
|---|---|
voll | The viewing is fully booked. |
vorbei | The time is in the past. |
schon_gebucht | This person already has a booking. |
kalender_belegt | The provider already has another appointment at this time. |
kalender_nicht_eingerichtet | This calendar provider is not set up at Athaus. |
Social networks
| Code | Meaning |
|---|---|
social_nicht_eingerichtet | The connection to social networks is not set up at Athaus. |
social_kein_konto | The office has no connected account in any matching network. |
social_vorlage_noetig | The channel's reply window has closed; a reply would only go out as an approved template. |
werbekonto_fehlt | Ads are not fully set up; the ad account or a step towards it is missing. |
monatsbudget_erschoepft | The approved monthly ad budget no longer covers this. |
Valuation
| Code | Meaning |
|---|---|
unsupported_property_type | There is no valuation for this property type. |
bewertung_fertig | The valuation is final; to change an assumption, create a new valuation. |
unbekannte_annahme | There is no assumption with this key. |
bewertung_nicht_fertig | The valuation is still a draft; the owner report is only available once it is final. |
bewertung_ohne_spanne | The valuation has no range; without a value there is no owner report. |
annahme_von_hand | A person set this assumption; an extracted value does not replace it. |
incomplete | A valuation needs more details. |
ambiguous | The input is ambiguous. |
Webhooks from external systems
| Code | Meaning |
|---|---|
missing_signature | The signature is missing. |
invalid_signature | The Stripe signature is not valid. |
bad_payload | The webhook body does not match. |
bad_signature | The webhook signature is not valid. |
retry_later | Try again later. |
Everything else
| Code | Meaning |
|---|---|
tool_failed | The agent's tool failed. |
internal_error | An error that has no code of its own. |