[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"public-branding":3,"content-de-api-keys":8,"public-ads-config":444},{"siteName":4,"primaryColor":5,"accentColor":6,"faviconUrl":7,"logoUrl":7},"KiroCloud","#ffffff","#888888","",{"id":9,"title":10,"author":11,"body":12,"category":434,"description":435,"extension":436,"lastUpdated":11,"meta":437,"navigation":325,"order":439,"path":440,"readTime":11,"seo":441,"stem":442,"__hash__":443},"docs\u002Fdocs\u002Fde\u002Fapi-keys.md","API Keys",null,{"type":13,"value":14,"toc":423},"minimark",[15,20,24,29,32,77,87,91,99,122,126,129,162,177,181,186,243,247,305,309,365,369,419],[16,17,19],"h1",{"id":18},"api-automatisierung","API & Automatisierung",[21,22,23],"p",{},"KiroCloud bietet eine moderne, REST-basierte API an, mit der du externe Tools, Bots oder CI\u002FCD-Pipelines an dein Dashboard anbinden kannst. Alle Anfragen erfordern eine sichere Authentifizierung via API-Schlüssel.",[25,26,28],"h2",{"id":27},"_1-api-schlüssel-erstellen","1. API-Schlüssel erstellen",[21,30,31],{},"API-Schlüssel werden direkt in deinem Benutzer-Dashboard generiert:",[33,34,35,44,50,53,60,67],"ol",{},[36,37,38,39,43],"li",{},"Navigiere im Dashboard zu ",[40,41,42],"strong",{},"Einstellungen > Entwickler & API-Schlüssel",".",[36,45,46,47,43],{},"Klicke auf ",[40,48,49],{},"Neuen API-Schlüssel erstellen",[36,51,52],{},"Vergib einen eindeutigen Namen (z. B. \"GitHub Actions Deployment\").",[36,54,55,56,59],{},"Bestimme die ",[40,57,58],{},"Gültigkeitsdauer"," (in Tagen).",[36,61,62,63,66],{},"Wähle die benötigten ",[40,64,65],{},"Berechtigungen (Scopes)",". Vergib stets nur die Rechte, die für den jeweiligen Anwendungsfall zwingend nötig sind (Prinzip der geringsten Privilegien \u002F Least Privilege).",[36,68,46,69,72,73,76],{},[40,70,71],{},"Erstellen"," und ",[40,74,75],{},"kopiere den Token sofort",". Er wird dir danach nie wieder im Klartext angezeigt!",[78,79,80],"blockquote",{},[21,81,82,86],{},[83,84,85],"span",{},"!WARNING","\nTeile deinen API-Schlüssel niemals öffentlich. Sollte ein Schlüssel kompromittiert werden, lösche (revoke) ihn umgehend im Dashboard.",[25,88,90],{"id":89},"_2-authentifizierung","2. Authentifizierung",[21,92,93,94,98],{},"Um sich bei der KiroCloud-API zu authentifizieren, musst du den API-Schlüssel im ",[95,96,97],"code",{},"Authorization","-Header als Bearer-Token mitsenden.",[100,101,105],"pre",{"className":102,"code":103,"language":104,"meta":7,"style":7},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Authorization: Bearer kiro_sec_DEIN_SCHLUESSEL\n","bash",[95,106,107],{"__ignoreMap":7},[83,108,111,115,119],{"class":109,"line":110},"line",1,[83,112,114],{"class":113},"sBMFI","Authorization:",[83,116,118],{"class":117},"sfazB"," Bearer",[83,120,121],{"class":117}," kiro_sec_DEIN_SCHLUESSEL\n",[25,123,125],{"id":124},"_3-berechtigungen-scopes","3. Berechtigungen (Scopes)",[21,127,128],{},"Je nachdem, was du automatisieren willst, benötigt dein API-Schlüssel spezifische Scopes:",[130,131,132,138,144,150,156],"ul",{},[36,133,134,137],{},[95,135,136],{},"bots:read"," - Erlaubt das Auslesen des Status und der Metriken deiner eigenen Discord Bots.",[36,139,140,143],{},[95,141,142],{},"bots:write"," - Erlaubt Steuerungsbefehle (Starten, Stoppen, Neustarten) und das Senden von Embeds.",[36,145,146,149],{},[95,147,148],{},"tickets:read"," - Erlaubt das Einsehen deiner eigenen Support-Tickets.",[36,151,152,155],{},[95,153,154],{},"tickets:write"," - Erlaubt das Eröffnen neuer Support-Tickets und Antworten.",[36,157,158,161],{},[95,159,160],{},"servers:read"," - Erlaubt die Abfrage des Serverstatus für verknüpfte Minecraft-Server.",[78,163,164],{},[21,165,166,169,170,172,173,176],{},[83,167,168],{},"!TIP","\nEin API Key mit dem Scope ",[95,171,142],{}," kann beispielsweise nach einem erfolgreichen GitHub Actions Build automatisch einen Neustart des Bots über ",[95,174,175],{},"POST \u002Fapi\u002Fv1\u002Fbots\u002F:id\u002Frestart"," auslösen.",[25,178,180],{"id":179},"_4-beispiel-aufrufe","4. Beispiel-Aufrufe",[182,183,185],"h3",{"id":184},"curl","cURL",[100,187,189],{"className":102,"code":188,"language":104,"meta":7,"style":7},"curl -X GET \"https:\u002F\u002Fapi.kirocloud.de\u002Fapi\u002Fv1\u002Fbots\" \\\n  -H \"Authorization: Bearer kiro_sec_YOUR_API_KEY\" \\\n  -H \"Accept: application\u002Fjson\"\n",[95,190,191,215,230],{"__ignoreMap":7},[83,192,193,195,198,201,205,208,211],{"class":109,"line":110},[83,194,184],{"class":113},[83,196,197],{"class":117}," -X",[83,199,200],{"class":117}," GET",[83,202,204],{"class":203},"sMK4o"," \"",[83,206,207],{"class":117},"https:\u002F\u002Fapi.kirocloud.de\u002Fapi\u002Fv1\u002Fbots",[83,209,210],{"class":203},"\"",[83,212,214],{"class":213},"sTEyZ"," \\\n",[83,216,218,221,223,226,228],{"class":109,"line":217},2,[83,219,220],{"class":117},"  -H",[83,222,204],{"class":203},[83,224,225],{"class":117},"Authorization: Bearer kiro_sec_YOUR_API_KEY",[83,227,210],{"class":203},[83,229,214],{"class":213},[83,231,233,235,237,240],{"class":109,"line":232},3,[83,234,220],{"class":117},[83,236,204],{"class":203},[83,238,239],{"class":117},"Accept: application\u002Fjson",[83,241,242],{"class":203},"\"\n",[182,244,246],{"id":245},"nodejs-javascript-fetch","Node.js \u002F JavaScript (Fetch)",[100,248,252],{"className":249,"code":250,"language":251,"meta":7,"style":7},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const response = await fetch(\"https:\u002F\u002Fapi.kirocloud.de\u002Fapi\u002Fv1\u002Fbots\", {\n  method: \"GET\",\n  headers: {\n    \"Authorization\": \"Bearer kiro_sec_YOUR_API_KEY\",\n    \"Content-Type\": \"application\u002Fjson\"\n  }\n});\nconst data = await response.json();\nconsole.log(data);\n","javascript",[95,253,254,259,264,269,275,281,287,293,299],{"__ignoreMap":7},[83,255,256],{"class":109,"line":110},[83,257,258],{},"const response = await fetch(\"https:\u002F\u002Fapi.kirocloud.de\u002Fapi\u002Fv1\u002Fbots\", {\n",[83,260,261],{"class":109,"line":217},[83,262,263],{},"  method: \"GET\",\n",[83,265,266],{"class":109,"line":232},[83,267,268],{},"  headers: {\n",[83,270,272],{"class":109,"line":271},4,[83,273,274],{},"    \"Authorization\": \"Bearer kiro_sec_YOUR_API_KEY\",\n",[83,276,278],{"class":109,"line":277},5,[83,279,280],{},"    \"Content-Type\": \"application\u002Fjson\"\n",[83,282,284],{"class":109,"line":283},6,[83,285,286],{},"  }\n",[83,288,290],{"class":109,"line":289},7,[83,291,292],{},"});\n",[83,294,296],{"class":109,"line":295},8,[83,297,298],{},"const data = await response.json();\n",[83,300,302],{"class":109,"line":301},9,[83,303,304],{},"console.log(data);\n",[182,306,308],{"id":307},"python-requests","Python (Requests)",[100,310,314],{"className":311,"code":312,"language":313,"meta":7,"style":7},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import requests\n\nurl = \"https:\u002F\u002Fapi.kirocloud.de\u002Fapi\u002Fv1\u002Fbots\"\nheaders = {\n    \"Authorization\": \"Bearer kiro_sec_YOUR_API_KEY\",\n    \"Content-Type\": \"application\u002Fjson\"\n}\n\nresponse = requests.get(url, headers=headers)\nprint(response.json())\n","python",[95,315,316,321,327,332,337,341,345,350,354,359],{"__ignoreMap":7},[83,317,318],{"class":109,"line":110},[83,319,320],{},"import requests\n",[83,322,323],{"class":109,"line":217},[83,324,326],{"emptyLinePlaceholder":325},true,"\n",[83,328,329],{"class":109,"line":232},[83,330,331],{},"url = \"https:\u002F\u002Fapi.kirocloud.de\u002Fapi\u002Fv1\u002Fbots\"\n",[83,333,334],{"class":109,"line":271},[83,335,336],{},"headers = {\n",[83,338,339],{"class":109,"line":277},[83,340,274],{},[83,342,343],{"class":109,"line":283},[83,344,280],{},[83,346,347],{"class":109,"line":289},[83,348,349],{},"}\n",[83,351,352],{"class":109,"line":295},[83,353,326],{"emptyLinePlaceholder":325},[83,355,356],{"class":109,"line":301},[83,357,358],{},"response = requests.get(url, headers=headers)\n",[83,360,362],{"class":109,"line":361},10,[83,363,364],{},"print(response.json())\n",[25,366,368],{"id":367},"_5-fehlerbehebung","5. Fehlerbehebung",[370,371,372,385],"table",{},[373,374,375],"thead",{},[376,377,378,382],"tr",{},[379,380,381],"th",{},"Status Code",[379,383,384],{},"Möglicher Grund",[386,387,388,399,409],"tbody",{},[376,389,390,396],{},[391,392,393],"td",{},[95,394,395],{},"401 Unauthorized",[391,397,398],{},"API-Schlüssel fehlt, ist ungültig oder abgelaufen.",[376,400,401,406],{},[391,402,403],{},[95,404,405],{},"403 Forbidden",[391,407,408],{},"Der API-Schlüssel hat nicht den erforderlichen Scope für diesen Endpunkt.",[376,410,411,416],{},[391,412,413],{},[95,414,415],{},"429 Too Many Requests",[391,417,418],{},"Rate-Limit überschritten.",[420,421,422],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":7,"searchDepth":217,"depth":217,"links":424},[425,426,427,428,433],{"id":27,"depth":217,"text":28},{"id":89,"depth":217,"text":90},{"id":124,"depth":217,"text":125},{"id":179,"depth":217,"text":180,"children":429},[430,431,432],{"id":184,"depth":232,"text":185},{"id":245,"depth":232,"text":246},{"id":307,"depth":232,"text":308},{"id":367,"depth":217,"text":368},"api","Verwalte und nutze KiroCloud API-Schlüssel für die Automatisierung","md",{"icon":438},"i-lucide-key",0,"\u002Fdocs\u002Fde\u002Fapi-keys",{"title":10,"description":435},"docs\u002Fde\u002Fapi-keys","cvpaNNLdXuHptlZr8Cn6t2obzr_HccjR_pACQL58ky0",{"enabled":325,"clientPubId":445,"docsSlotId":7,"newsSlotId":7,"guidesSlotId":7,"dashboardSlotId":7,"docsEnabled":325,"newsEnabled":325,"guidesEnabled":325,"dashboardEnabled":325},"ca-pub-9454065621077312"]