[{"data":1,"prerenderedAt":745},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Fentwickler-einstieg\u002Fauthentication":156,"docs-surround-\u002Fdocs\u002Fentwickler-einstieg\u002Fauthentication":742},[4],{"title":5,"path":6,"stem":7,"children":8},"Start","\u002Fdocs","docs\u002F0.index",[9,10,28,54,80,126,152],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"children":14},"Erste Schritte","\u002Fdocs\u002Ferste-schritte","docs\u002F01.erste-schritte\u002F1.index",[15,16,20,24],{"title":11,"path":12,"stem":13},{"title":17,"path":18,"stem":19},"Erste Abfrage","\u002Fdocs\u002Ferste-schritte\u002Ferste-abfrage","docs\u002F01.erste-schritte\u002F2.erste-abfrage",{"title":21,"path":22,"stem":23},"Pläne und Abrechnung","\u002Fdocs\u002Ferste-schritte\u002Fabrechnung","docs\u002F01.erste-schritte\u002F3.abrechnung",{"title":25,"path":26,"stem":27},"Dashboard","\u002Fdocs\u002Ferste-schritte\u002Fdashboard","docs\u002F01.erste-schritte\u002F4.dashboard",{"title":29,"path":30,"stem":31,"children":32},"Leitfäden","\u002Fdocs\u002Fintegration-guides","docs\u002F02.integration-guides\u002F1.index",[33,34,38,42,46,50],{"title":29,"path":30,"stem":31},{"title":35,"path":36,"stem":37},"ChatGPT","\u002Fdocs\u002Fintegration-guides\u002Fchatgpt","docs\u002F02.integration-guides\u002F2.chatgpt",{"title":39,"path":40,"stem":41},"Claude","\u002Fdocs\u002Fintegration-guides\u002Fclaude","docs\u002F02.integration-guides\u002F3.claude",{"title":43,"path":44,"stem":45},"Gemini","\u002Fdocs\u002Fintegration-guides\u002Fgemini","docs\u002F02.integration-guides\u002F4.gemini",{"title":47,"path":48,"stem":49},"Copilot","\u002Fdocs\u002Fintegration-guides\u002Fcopilot","docs\u002F02.integration-guides\u002F5.copilot",{"title":51,"path":52,"stem":53},"Andere KI-Tools","\u002Fdocs\u002Fintegration-guides\u002Fandere-ki","docs\u002F02.integration-guides\u002F6.andere-ki",{"title":55,"path":56,"stem":57,"children":58},"Grundlagen","\u002Fdocs\u002Fgrundlagen","docs\u002F03.grundlagen\u002F1.index",[59,60,64,68,72,76],{"title":55,"path":56,"stem":57},{"title":61,"path":62,"stem":63},"Was ist ein Bodenrichtwert?","\u002Fdocs\u002Fgrundlagen\u002Fwas-ist-ein-bodenrichtwert","docs\u002F03.grundlagen\u002F2.was-ist-ein-bodenrichtwert",{"title":65,"path":66,"stem":67},"Richtig suchen","\u002Fdocs\u002Fgrundlagen\u002Frichtig-suchen","docs\u002F03.grundlagen\u002F3.richtig-suchen",{"title":69,"path":70,"stem":71},"Nutzungsart","\u002Fdocs\u002Fgrundlagen\u002Fnutzungsart","docs\u002F03.grundlagen\u002F4.nutzungsart",{"title":73,"path":74,"stem":75},"Ergebnis verstehen","\u002Fdocs\u002Fgrundlagen\u002Fergebnis-verstehen","docs\u002F03.grundlagen\u002F5.ergebnis-verstehen",{"title":77,"path":78,"stem":79},"Im Team arbeiten","\u002Fdocs\u002Fgrundlagen\u002Fim-team-arbeiten","docs\u002F03.grundlagen\u002F6.im-team-arbeiten",{"title":81,"path":82,"stem":83,"children":84},"API & Integration","\u002Fdocs\u002Fentwickler-einstieg","docs\u002F04.entwickler-einstieg\u002F1.index",[85,86,90,94,112,116,121],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89},"Authentifizierung","\u002Fdocs\u002Fentwickler-einstieg\u002Fauthentication","docs\u002F04.entwickler-einstieg\u002F2.authentication",{"title":91,"path":92,"stem":93},"OAuth-App registrieren","\u002Fdocs\u002Fentwickler-einstieg\u002Foauth-app-registrieren","docs\u002F04.entwickler-einstieg\u002F3.oauth-app-registrieren",{"title":95,"path":96,"stem":97,"children":98},"REST API","\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api","docs\u002F04.entwickler-einstieg\u002F4.rest-api\u002F1.index",[99,100,104,108],{"title":95,"path":96,"stem":97},{"title":101,"path":102,"stem":103},"GET \u002Fapi\u002Fbodenrichtwert","\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api\u002Fbodenrichtwert","docs\u002F04.entwickler-einstieg\u002F4.rest-api\u002F2.bodenrichtwert",{"title":105,"path":106,"stem":107},"GET \u002Fapi\u002Fme","\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api\u002Fme","docs\u002F04.entwickler-einstieg\u002F4.rest-api\u002F3.me",{"title":109,"path":110,"stem":111},"POST \u002Fapi\u002Fbodenwert","\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api\u002Fbodenwert","docs\u002F04.entwickler-einstieg\u002F4.rest-api\u002F4.bodenwert",{"title":113,"path":114,"stem":115},"MCP Server","\u002Fdocs\u002Fentwickler-einstieg\u002Fmcp-server","docs\u002F04.entwickler-einstieg\u002F5.mcp-server",{"title":117,"path":118,"stem":119,"icon":120},"OpenAPI","\u002Fdocs\u002Fentwickler-einstieg\u002Fopenapi","docs\u002F04.entwickler-einstieg\u002F6.openapi","i-lucide-file-code-2",{"title":122,"path":123,"stem":124,"icon":125},"Fehler 451","\u002Fdocs\u002Fentwickler-einstieg\u002Ferror-451","docs\u002F04.entwickler-einstieg\u002F7.error-451","i-lucide-shield-alert",{"title":127,"path":128,"stem":129,"children":130},"Cookbooks","\u002Fdocs\u002Fcookbooks","docs\u002F05.cookbooks\u002F1.index",[131,132,136,140,144,148],{"title":127,"path":128,"stem":129},{"title":133,"path":134,"stem":135},"n8n","\u002Fdocs\u002Fcookbooks\u002Fn8n","docs\u002F05.cookbooks\u002F2.n8n",{"title":137,"path":138,"stem":139},"Python · pandas","\u002Fdocs\u002Fcookbooks\u002Fpython-pandas","docs\u002F05.cookbooks\u002F3.python-pandas",{"title":141,"path":142,"stem":143},"Excel · Power Query","\u002Fdocs\u002Fcookbooks\u002Fexcel-power-query","docs\u002F05.cookbooks\u002F4.excel-power-query",{"title":145,"path":146,"stem":147},"LangChain","\u002Fdocs\u002Fcookbooks\u002Flangchain","docs\u002F05.cookbooks\u002F5.langchain",{"title":149,"path":150,"stem":151},"Zapier · Make","\u002Fdocs\u002Fcookbooks\u002Fzapier-make","docs\u002F05.cookbooks\u002F6.zapier-make",{"title":153,"path":154,"stem":155},"Häufige Fragen","\u002Fdocs\u002Fhaeufige-fragen","docs\u002F06.haeufige-fragen",{"id":157,"title":87,"audience":158,"body":159,"description":737,"extension":738,"links":158,"meta":739,"navigation":158,"path":88,"seo":740,"stem":89,"__hash__":741},"docs\u002Fdocs\u002F04.entwickler-einstieg\u002F2.authentication.md",null,{"type":160,"value":161,"toc":722},"minimark",[162,167,176,253,256,260,263,292,327,330,334,341,346,352,381,384,441,445,452,460,466,470,531,542,546,553,561,566,583,593,597,631,634,680,683,687,708,718],[163,164,166],"h2",{"id":165},"überblick","Überblick",[168,169,170,171,175],"p",{},"Jeder Request braucht einen ",[172,173,174],"code",{},"Authorization: Bearer \u003Ctoken>","-Header. Welcher Token es ist, hängt vom Szenario ab:",[177,178,179,195],"table",{},[180,181,182],"thead",{},[183,184,185,189,192],"tr",{},[186,187,188],"th",{},"Szenario",[186,190,191],{},"Methode",[186,193,194],{},"Wo einrichten",[196,197,198,217,238],"tbody",{},[183,199,200,204,210],{},[201,202,203],"td",{},"Eigenes Skript, n8n, Zapier, Excel, Notebook",[201,205,206],{},[207,208,209],"strong",{},"API-Key",[201,211,212],{},[213,214,216],"a",{"href":215},"\u002Fdashboard\u002Fentwickler","Dashboard → API-Keys",[183,218,219,222,232],{},[201,220,221],{},"SaaS \u002F App, deren End-User sich mit bodenrichtwert.ai einloggen",[201,223,224,227,228,231],{},[207,225,226],{},"OAuth 2.0 + PKCE"," (",[172,229,230],{},"authorization_code",")",[201,233,234],{},[213,235,237],{"href":236},"\u002Fdashboard\u002Fentwickler?tab=oauth-apps","Dashboard → OAuth-Apps",[183,239,240,243,249],{},[201,241,242],{},"Server-Job oder CI, der im eigenen Namen läuft",[201,244,245,248],{},[207,246,247],{},"Client Credentials"," (M2M)",[201,250,251],{},[213,252,237],{"href":236},[168,254,255],{},"Alle drei Token-Typen laufen durch dieselbe serverseitige Validierung und werden als SHA-256-Hash gespeichert.",[163,257,259],{"id":258},"weg-1-api-key-einfachster-weg","Weg 1: API-Key (einfachster Weg)",[168,261,262],{},"Persönlicher Access Token mit wählbarer Lebensdauer (30 Tage \u002F 90 Tage \u002F 1 Jahr \u002F unbegrenzt). Die Nutzung zählt gegen deinen eigenen Account.",[264,265,266,272,282,289],"ol",{},[267,268,269,270],"li",{},"Login → ",[213,271,216],{"href":215},[267,273,274,277,278,281],{},[207,275,276],{},"„Neuer API-Key\""," anklicken, Namen vergeben (z.B. ",[172,279,280],{},"n8n-Produktion","), Lebensdauer wählen.",[267,283,284,285,288],{},"Der Key wird ",[207,286,287],{},"genau einmal"," angezeigt — im Passwort-Manager oder Secret-Manager ablegen.",[267,290,291],{},"Sofort einsetzen:",[293,294,299],"pre",{"className":295,"code":296,"language":297,"meta":298,"style":298},"language-bash shiki shiki-themes github-light","curl -H \"Authorization: Bearer brw_pat_…\" \\\n  \"https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert?address=Hannover&nutzungsart=W\"\n","bash","",[172,300,301,321],{"__ignoreMap":298},[302,303,306,310,314,318],"span",{"class":304,"line":305},"line",1,[302,307,309],{"class":308},"s7eDp","curl",[302,311,313],{"class":312},"sYu0t"," -H",[302,315,317],{"class":316},"sYBdl"," \"Authorization: Bearer brw_pat_…\"",[302,319,320],{"class":312}," \\\n",[302,322,324],{"class":304,"line":323},2,[302,325,326],{"class":316},"  \"https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert?address=Hannover&nutzungsart=W\"\n",[168,328,329],{},"Einen Key jederzeit im Dashboard widerrufen — die Wirkung tritt innerhalb von ~5 Minuten ein (Cloudflare-KV-Zwischenspeicher).",[163,331,333],{"id":332},"weg-2-oauth-20-mit-pkce-end-user-flow","Weg 2: OAuth 2.0 mit PKCE (End-User-Flow)",[168,335,336,337,340],{},"Für Apps, bei denen ",[207,338,339],{},"Dritt-Nutzer"," sich mit ihrem bodenrichtwert.ai-Account einloggen — typisch für SaaS-Integrationen oder MCP-Clients wie Claude Desktop \u002F ChatGPT. Nutzung zählt gegen den End-User.",[342,343,345],"h3",{"id":344},"_1-app-registrieren","1. App registrieren",[168,347,348,349,351],{},"Im ",[213,350,237],{"href":236}," eine neue App anlegen:",[353,354,355,361,367,375],"ul",{},[267,356,357,360],{},[207,358,359],{},"Name + Beschreibung"," (sichtbar im Consent-Dialog)",[267,362,363,366],{},[207,364,365],{},"Typ:"," Public (Mobile \u002F SPA) oder Confidential (Server)",[267,368,369,372,373],{},[207,370,371],{},"Grant-Types:"," ",[172,374,230],{},[267,376,377,380],{},[207,378,379],{},"Redirect-URIs:"," mindestens eine HTTPS-URL (Localhost erlaubt)",[168,382,383],{},"Alternativ via RFC 7591 Dynamic Client Registration:",[293,385,387],{"className":295,"code":386,"language":297,"meta":298,"style":298},"curl -X POST https:\u002F\u002Fbodenrichtwert.ai\u002Foauth\u002Fregister \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"client_name\": \"Mein Integration-Script\",\n    \"redirect_uris\": [\"https:\u002F\u002Fexample.com\u002Fcallback\"]\n  }'\n",[172,388,389,404,414,423,429,435],{"__ignoreMap":298},[302,390,391,393,396,399,402],{"class":304,"line":305},[302,392,309],{"class":308},[302,394,395],{"class":312}," -X",[302,397,398],{"class":316}," POST",[302,400,401],{"class":316}," https:\u002F\u002Fbodenrichtwert.ai\u002Foauth\u002Fregister",[302,403,320],{"class":312},[302,405,406,409,412],{"class":304,"line":323},[302,407,408],{"class":312},"  -H",[302,410,411],{"class":316}," \"Content-Type: application\u002Fjson\"",[302,413,320],{"class":312},[302,415,417,420],{"class":304,"line":416},3,[302,418,419],{"class":312},"  -d",[302,421,422],{"class":316}," '{\n",[302,424,426],{"class":304,"line":425},4,[302,427,428],{"class":316},"    \"client_name\": \"Mein Integration-Script\",\n",[302,430,432],{"class":304,"line":431},5,[302,433,434],{"class":316},"    \"redirect_uris\": [\"https:\u002F\u002Fexample.com\u002Fcallback\"]\n",[302,436,438],{"class":304,"line":437},6,[302,439,440],{"class":316},"  }'\n",[342,442,444],{"id":443},"_2-authorization-code-holen","2. Authorization Code holen",[168,446,447,448,451],{},"Leite den Nutzer zu ",[172,449,450],{},"\u002Foauth\u002Fauthorize"," um:",[293,453,458],{"className":454,"code":456,"language":457,"meta":298},[455],"language-text","https:\u002F\u002Fbodenrichtwert.ai\u002Foauth\u002Fauthorize\n  ?response_type=code\n  &client_id=CLIENT_ID\n  &redirect_uri=https:\u002F\u002Fexample.com\u002Fcallback\n  &code_challenge=CODE_CHALLENGE\n  &code_challenge_method=S256\n","text",[172,459,456],{"__ignoreMap":298},[168,461,462,463,465],{},"Nach Login und Consent erhältst du per Redirect einen ",[172,464,172],{},"-Parameter.",[342,467,469],{"id":468},"_3-token-einlösen","3. Token einlösen",[293,471,473],{"className":295,"code":472,"language":297,"meta":298,"style":298},"curl -X POST https:\u002F\u002Fbodenrichtwert.ai\u002Foauth\u002Ftoken \\\n  -H \"Content-Type: application\u002Fx-www-form-urlencoded\" \\\n  -d \"grant_type=authorization_code\" \\\n  -d \"code=AUTH_CODE\" \\\n  -d \"client_id=CLIENT_ID\" \\\n  -d \"code_verifier=CODE_VERIFIER\"\n",[172,474,475,488,497,506,515,524],{"__ignoreMap":298},[302,476,477,479,481,483,486],{"class":304,"line":305},[302,478,309],{"class":308},[302,480,395],{"class":312},[302,482,398],{"class":316},[302,484,485],{"class":316}," https:\u002F\u002Fbodenrichtwert.ai\u002Foauth\u002Ftoken",[302,487,320],{"class":312},[302,489,490,492,495],{"class":304,"line":323},[302,491,408],{"class":312},[302,493,494],{"class":316}," \"Content-Type: application\u002Fx-www-form-urlencoded\"",[302,496,320],{"class":312},[302,498,499,501,504],{"class":304,"line":416},[302,500,419],{"class":312},[302,502,503],{"class":316}," \"grant_type=authorization_code\"",[302,505,320],{"class":312},[302,507,508,510,513],{"class":304,"line":425},[302,509,419],{"class":312},[302,511,512],{"class":316}," \"code=AUTH_CODE\"",[302,514,320],{"class":312},[302,516,517,519,522],{"class":304,"line":431},[302,518,419],{"class":312},[302,520,521],{"class":316}," \"client_id=CLIENT_ID\"",[302,523,320],{"class":312},[302,525,526,528],{"class":304,"line":437},[302,527,419],{"class":312},[302,529,530],{"class":316}," \"code_verifier=CODE_VERIFIER\"\n",[168,532,533,534,537,538,541],{},"Antwort enthält ",[172,535,536],{},"access_token"," (1 h gültig) und ",[172,539,540],{},"refresh_token"," (30 Tage, rotierend).",[163,543,545],{"id":544},"weg-3-client-credentials-m2m","Weg 3: Client Credentials (M2M)",[168,547,548,549,552],{},"Für Server-Jobs, die ",[207,550,551],{},"in deinem eigenen Namen"," laufen — Batch-Exporte, Cron-Jobs, interne Tools. Nutzung zählt gegen den App-Owner (dich).",[342,554,556,557,560],{"id":555},"_1-confidential-app-mit-client_credentials-anlegen","1. Confidential App mit ",[172,558,559],{},"client_credentials"," anlegen",[168,562,348,563,565],{},[213,564,237],{"href":236},":",[353,567,568,573,580],{},[267,569,570,572],{},[207,571,365],{}," Confidential (Pflicht)",[267,574,575,372,577,579],{},[207,576,371],{},[172,578,559],{}," aktivieren",[267,581,582],{},"Redirect-URIs können leer bleiben",[168,584,585,586,372,589,592],{},"Nach dem Erstellen wird ",[172,587,588],{},"client_secret",[207,590,591],{},"einmalig"," angezeigt — sicher ablegen.",[342,594,596],{"id":595},"_2-access-token-holen","2. Access Token holen",[293,598,600],{"className":295,"code":599,"language":297,"meta":298,"style":298},"curl -X POST https:\u002F\u002Fbodenrichtwert.ai\u002Foauth\u002Ftoken \\\n  -u CLIENT_ID:CLIENT_SECRET \\\n  -d \"grant_type=client_credentials\"\n",[172,601,602,614,624],{"__ignoreMap":298},[302,603,604,606,608,610,612],{"class":304,"line":305},[302,605,309],{"class":308},[302,607,395],{"class":312},[302,609,398],{"class":316},[302,611,485],{"class":316},[302,613,320],{"class":312},[302,615,616,619,622],{"class":304,"line":323},[302,617,618],{"class":312},"  -u",[302,620,621],{"class":316}," CLIENT_ID:CLIENT_SECRET",[302,623,320],{"class":312},[302,625,626,628],{"class":304,"line":416},[302,627,419],{"class":312},[302,629,630],{"class":316}," \"grant_type=client_credentials\"\n",[168,632,633],{},"Antwort:",[293,635,639],{"className":636,"code":637,"language":638,"meta":298,"style":298},"language-json shiki shiki-themes github-light","{ \"access_token\": \"…\", \"token_type\": \"bearer\", \"expires_in\": 3600 }\n","json",[172,640,641],{"__ignoreMap":298},[302,642,643,647,650,653,656,659,662,664,667,669,672,674,677],{"class":304,"line":305},[302,644,646],{"class":645},"sgsFI","{ ",[302,648,649],{"class":312},"\"access_token\"",[302,651,652],{"class":645},": ",[302,654,655],{"class":316},"\"…\"",[302,657,658],{"class":645},", ",[302,660,661],{"class":312},"\"token_type\"",[302,663,652],{"class":645},[302,665,666],{"class":316},"\"bearer\"",[302,668,658],{"class":645},[302,670,671],{"class":312},"\"expires_in\"",[302,673,652],{"class":645},[302,675,676],{"class":312},"3600",[302,678,679],{"class":645}," }\n",[168,681,682],{},"Kein Refresh-Token — bei Bedarf einen neuen Access-Token holen (RFC 6749 §4.4.3).",[342,684,686],{"id":685},"_3-token-verwenden","3. Token verwenden",[293,688,690],{"className":295,"code":689,"language":297,"meta":298,"style":298},"curl -H \"Authorization: Bearer …\" \\\n  \"https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert?address=Köln\"\n",[172,691,692,703],{"__ignoreMap":298},[302,693,694,696,698,701],{"class":304,"line":305},[302,695,309],{"class":308},[302,697,313],{"class":312},[302,699,700],{"class":316}," \"Authorization: Bearer …\"",[302,702,320],{"class":312},[302,704,705],{"class":304,"line":323},[302,706,707],{"class":316},"  \"https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert?address=Köln\"\n",[709,710,712],"callout",{"icon":711},"i-lucide-info",[168,713,714,715,717],{},"Secret rotieren, sobald du einen Verdacht auf Kompromittierung hast — im ",[213,716,237],{"href":236}," per „Secret rotieren\"-Button. Das alte Secret wird sofort ungültig.",[719,720,721],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}",{"title":298,"searchDepth":416,"depth":416,"links":723},[724,725,726,731],{"id":165,"depth":323,"text":166},{"id":258,"depth":323,"text":259},{"id":332,"depth":323,"text":333,"children":727},[728,729,730],{"id":344,"depth":416,"text":345},{"id":443,"depth":416,"text":444},{"id":468,"depth":416,"text":469},{"id":544,"depth":323,"text":545,"children":732},[733,735,736],{"id":555,"depth":416,"text":734},"1. Confidential App mit client_credentials anlegen",{"id":595,"depth":416,"text":596},{"id":685,"depth":416,"text":686},"Drei Wege an einen Bearer Token — API-Key, OAuth 2.0 mit PKCE, oder Client Credentials für M2M.","md",{},{"title":87,"description":737},"5gs8u-ejmgJwyw3gRpYngNPYa6NGOg3NTJMU7HIxoNg",[743,744],{"title":81,"path":82,"stem":83,"children":-1},{"title":91,"path":92,"stem":93,"children":-1},1785091389688]