---
title: "Zugang und Berechtigungen | StudioMeyer Academy"
description: "Öffentlich lesen oder persönliche Lerndaten verbinden. Du entscheidest über die Rechte."
canonical: "https://studiomeyer.academy/entwickler/anmeldung"
language: de
markdown_versions: ["https://studiomeyer.academy/entwickler/anmeldung.md", "https://studiomeyer.academy/en/entwickler/anmeldung.md", "https://studiomeyer.academy/es/entwickler/anmeldung.md"]
publisher: "StudioMeyer Academy, https://studiomeyer.academy (llms.txt: https://studiomeyer.academy/llms.txt)"
---

## Zugang entdecken

Lies die Protected-Resource-Metadaten für Deinen Eingang. Ein 401 am geschützten MCP nennt sie im WWW-Authenticate-Header. Der gemeinsame Aussteller ist https://mcp.studiomeyer.academy. REST und MCP sind getrennte Ressourcen: https://studiomeyer.academy/v1 und https://mcp.studiomeyer.academy/mcp. Ein OAuth-Token ist an die gewählte Ressource gebunden; verwende ihn nicht für die andere.

- [REST-Ressourcenmetadaten](https://studiomeyer.academy/.well-known/oauth-protected-resource)
- [OAuth-Aussteller](https://mcp.studiomeyer.academy/.well-known/oauth-authorization-server)

## Methode wählen

Lernwege, Lektionen, Bibliothek, Suche und Vorschläge sind ohne Konto lesbar. Dein mitgeschicktes Agentenprofil dient nur der aktuellen Vorschlagsanfrage und wird dabei nicht gespeichert. Sende nur die Angaben, die dafür nötig sind.

OAuth verbindet ein KI-Werkzeug mit Deinen persönlichen Funktionen. Ein API-Key ist für Deine eigenen Skripte gedacht. Teile weder Browser-Cookies noch Zugangsdaten mit einer KI.

## Client registrieren

Dein OAuth-Client registriert seine tatsächlichen redirect\_uris an POST /register beim Aussteller. Öffentliche Clients verwenden token\_endpoint\_auth\_method: none. Verwende die zurückgegebene client\_id. Erzeuge für jede Anmeldung einen neuen state und einen geheimen code\_verifier; leite daraus die PKCE-S256-code\_challenge ab. Registriere keine ausgedachte Rücksprungadresse.

## Berechtigungen selbst bestätigen

Öffne /authorize mit response\_type=code, client\_id, redirect\_uri, state, code\_challenge, code\_challenge\_method=S256, scope und resource. Der Mensch meldet sich im Browser an und wählt seine Rechte. credits:spend ist standardmäßig aus. Bestehende Verbindungen erhalten neue Rechte niemals automatisch.

Berechtigung

Erlaubt

learn:read

Persönliche Lerndaten und Credits-Stand lesen

learn:write

Fortschritt, Notizen, Feedback und Installationspläne schreiben

credits:spend

Nur OAuth: einzeln bestätigte Credit-Vorgänge, niemals allein durch den Scope

## Code gegen Token tauschen

Prüfe state nach der Rückkehr. Tausche den Code über POST /token mit grant\_type=authorization\_code, code, client\_id, exakt derselben redirect\_uri, code\_verifier und resource. Nutze application/x-www-form-urlencoded. Ein öffentlicher Client braucht kein Client-Secret. Erneuere mit grant\_type=refresh\_token; ersetze das alte Refresh-Token durch das neue. Wiederverwendung widerruft die Token-Familie.

## Zugang verwenden

Sende Authorization: Bearer \<token> nur an die gewählte Ressource. GET /v1/me/access beziehungsweise academy\_my\_access zeigt die tatsächlich gewährten Rechte. Cookies ersetzen keinen REST-Bearer. Speichere Tokens sicher und schreibe sie nie in URLs, Logs oder Repositorys.

```
# Set ACADEMY_TOKEN locally to your REST credential. Never commit it.
curl -fsS 'https://studiomeyer.academy/v1/me/access' \
  -H "Authorization: Bearer $ACADEMY_TOKEN"
```

## API keys

Erstelle und widerrufe persönliche Keys selbst in der Browser-Sitzung unter /dashboard/keys. read entspricht learn:read; read-write entspricht learn:read und learn:write. Keys dürfen keine Credits ausgeben. OAuth-Grants und vorhandene Keys können keine neuen Keys erzeugen.

- [API-Keys verwalten](https://studiomeyer.academy/dashboard/keys)

## Abruflimits

Die Tabelle zeigt die aktuellen REST-Buckets. Öffentliche Aufrufe teilen standardmäßig einen konservativen Bucket. Nur ein ausdrücklich konfigurierter, vom vertrauenswürdigen Proxy ersetzter IP-Header trennt anonyme Clients. MCP und OAuth können zusätzliche Transportlimits anwenden. RateLimit-Limit, RateLimit-Remaining und RateLimit-Reset stehen in den Antworten; Reset und Retry-After sind Sekunden.

Bucket

Limit

Fenster (s)

Identität

anonymous

120

60

shared\_anonymous

read

120

60

verified\_principal

write

30

60

verified\_principal

## Fehler behandeln

REST und MCP liefern success, result, errors, messages und request\_id. Verzweige auf errors\[\].slug oder code, nie auf übersetzte Texte. OAuth-Endpunkte verwenden stattdessen error und error\_description gemäß OAuth. Bei fehlendem Scope muss der Mensch die Verbindung mit den nötigen Rechten neu erlauben.

- [Fehler verstehen](https://studiomeyer.academy/entwickler/fehler)

## Verbindung widerrufen

Sende token, client\_id und optional token\_type\_hint als Formular an POST /revoke beim Aussteller. Widerrufe einen API-Key im Dashboard. Bei abgelaufener oder widerrufener Berechtigung werden geschützte Aufrufe abgelehnt. Verbinde nur nach erneutem Wunsch des Menschen.

## Sicherer Ablauf

Lies zuerst, schlage dann vor und schreibe nur im beauftragten Umfang. Löschen braucht confirm: true nach Zustimmung. Zeige Pakete, Dateien und Skripte vor dem Schreiben. Folge zurückgegebenen links, prüfe den Inhalt der Antwort und halte bei unklarem Ergebnis an. outcome\_unknown wird zuerst über den Buchungsverlauf geklärt, niemals durch einen neuen Bezahlversuch.

## Credits ausgeben

Kauf und Ausgabe bleiben ohne freigegebene Preise, Credit-Mengen und rechtliche Konfiguration ausgeschaltet (unconfigured). Es gibt keine Testzahlung, die echtes Guthaben erzeugt. Ein Scope allein ist keine Erlaubnis, Credits auszugeben.

GET /v1/premium/{id}/preview liest ausschließlich die Vorschau und liefert quote: null, auch mit Anmeldung. Eine konkrete Quote entsteht erst über POST /v1/me/spend-quotes oder academy\_prepare\_spend. Dafür braucht der Agent einen ausdrücklichen OAuth-Grant mit learn:write und credits:spend sowie Idempotency-Key. Die Vorbereitung hat creditEffect: none; sie erzeugt eine ausstehende Quote und nimmt kein userConfirmed entgegen.

Sende genau eine Eingabevariante: { purpose: PREMIUM, id }, { purpose: TUTOR, level, slug, message } oder { purpose: COACHING, topic, format, preferredTime? }. Preis, Credit-Menge und Versionen bestimmt der Server. Die Quote bindet dieselben Eingaben an Kontoinhaber und OAuth-Grant, Inhalt, Version und Ablauf.

Der Mensch bestätigt die konkrete Quote separat unter /dashboard/agent in einer verifizierten Browser-Sitzung; erst die gespeicherte Zustimmung zählt. Danach trägt der eigentliche Ausgabenaufruf consent: { userConfirmed: true, quoteId, maximumCredits } und einen eigenen Idempotency-Key. Ein vom Agenten gesetztes true ersetzt kein Browser-Ja. Persönliche API-Keys und Browser-Sitzungen dürfen keine Agenten-Credits ausgeben. Coaching darf nie Bonus-Credits verwenden.

## Agent registration (agent\_auth)

Der Autorisierungsserver unterstützt anonyme Agentenregistrierung mit Übernahme durch den Menschen. POST /agent/identity mit type=anonymous beginnt ohne persönliche Scopes. POST /agent/identity/claim bereitet E-Mail-Prüfung, denselben Browser und den Code des Agenten vor. Der Mensch wählt learn:read und learn:write ausdrücklich; credits:spend ist dort nicht verfügbar. Nach der Übernahme ordnet die Academy die verifizierte Adresse einem bestehenden Konto zu oder legt bei der ersten persönlichen Anfrage ein Konto an. Der Agent pollt anschließend /token mit dem Claim-Grant. Die normale OAuth-Verbindung und die separate Browserfreigabe bleiben für spätere Ausgaben erforderlich. Es gibt keine fremden Identitätsaussteller oder Security-Event-Endpunkte.

- [identity\_endpoint (POST)](https://mcp.studiomeyer.academy/agent/identity)
- [claim\_endpoint (POST)](https://mcp.studiomeyer.academy/agent/identity/claim)
- [Authorization metadata](https://mcp.studiomeyer.academy/.well-known/oauth-authorization-server)

## Sitemap

Öffentliche Seiten dieser Website als Markdown: [Sitemap](https://studiomeyer.academy/sitemap.md). Kuratierter Einstieg: [llms.txt](https://studiomeyer.academy/llms.txt), Volltext: [llms-full.txt](https://studiomeyer.academy/llms-full.txt).
