Voor ontwikkelaars
Langrit-naslag voor ontwikkelaars
Bouw je eigen tutor, bot of script op het leergeheugen: een standaard MCP-server, OAuth 2.1, persoonlijke tokens en een REST API.
Overzicht
Twee ingangen, één geheugen. Elke aanroep leest of schrijft hetzelfde leerdossier als de Langrit-app, dus herhalingen, reeksen en niveaus blijven gelijk.
https://langrit.com/mcphttps://langrit.com/api/v1Snel aan de slag
Verbind een MCP-client
claude mcp add --transport http langrit https://langrit.com/mcpcurl https://langrit.com/mcp \
-H "Authorization: Bearer lgr_…" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"whats_due","arguments":{"limit":5}}}'Roep de REST API aan met een persoonlijk token
curl https://langrit.com/api/v1/due?limit=5 \
-H "Authorization: Bearer lgr_…"Authenticatie
Stuur bij elk verzoek een bearer-token mee. Gebruik OAuth 2.1 als mensen verbinden vanuit jouw app, of een persoonlijk token voor je eigen scripts.
OAuth 2.1
Clients vinden de autorisatieserver via discovery, vanaf de WWW-Authenticate-header van een 401 op /mcp. Dynamische clientregistratie en client ID metadata documents worden ondersteund, dus de meeste clients hoeven niets in te stellen.
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata="https://langrit.com/.well-known/oauth-protected-resource/mcp"GET https://langrit.com/.well-known/oauth-protected-resource/mcp
GET https://langrit.com/.well-known/oauth-authorization-server
authorize https://langrit.com/oauth/authorize
token https://langrit.com/oauth/token
register https://langrit.com/oauth/register
revoke https://langrit.com/oauth/revoke- Alleen authorization code met PKCE (S256). De redirect bevat code, state en iss.
- Toegangstokens zijn een uur geldig. Refresh tokens zijn 60 dagen geldig en wisselen bij elk gebruik; een oud refresh token werkt dan niet meer.
- Redirect-URI's: https, http op localhost (elke poort) of een eigen app-scheme.
Scopes
read | Profiel, herhalingen, patronen, export |
write | Ook fouten opslaan en herhalingen beoordelen (inclusief read) |
Persoonlijke tokens
Maak er tot vijf aan in Instellingen, API-toegang. Je ziet een token maar één keer en je kunt het altijd intrekken.
MCP-server
Streamable HTTP, stateless, JSON-antwoorden. Stuur elk JSON-RPC-bericht met POST; GET geeft 405, want er is geen serverstream.
Tools
| Tool | Scope | Invoer | Geeft terug |
|---|---|---|---|
learner_profile | read | {} | Talen, niveau, abonnement, aantal herhalingen |
whats_due | read | limit? | Kaarten die aan de beurt zijn, met modus, vraag en keuzes |
my_patterns | read | window? 7d | 30d | 90d | Patronen met aantallen en voorbeelden |
remember_mistake | write | wrong, correct, rule?, context? | items[≤20] | Nieuwe of samengevoegde kaarten, patroon, hint |
grade_review | write | card_id, answer, mode, elapsed_ms? | Goed of fout, verwacht antwoord, volgende herhaling, ladder |
Prompts en resources
De prompts today, quiz, my-mistakes en write openen een studiesessie in de talen van de leerling. De resource langrit://me geeft het profiel terug als JSON.
Vraagmodi
recognition komt met keuzes en het verwachte antwoord; typed en translate tonen het antwoord nooit voor de beoordeling.
REST API
Hetzelfde geheugen via HTTPS. JSON erin en eruit.
| Endpoint | Wat het doet |
|---|---|
| GET /api/v1/me | Je profiel, abonnement en aantal herhalingen |
| POST /api/v1/mistakes | Eén fout of tot 20 opslaan (write) |
| GET /api/v1/due | Herhalingen die aan de beurt zijn, met de vraagmodus |
| POST /api/v1/reviews | Een antwoord beoordelen (write) |
| GET /api/v1/patterns | Foutpatronen over 7, 30 of 90 dagen |
| GET /api/v1/export | Kaarten, fouten en herhalingen als JSON, CSV of Anki |
Voorbeeld
POST /api/v1/mistakes
Idempotency-Key: 6f1c…
{ "wrong": "de huis", "correct": "het huis", "rule": "huis is a het-word" }
201 -> { "created": 1, "merged": 0,
"cards": [{ "id": 812, "pattern": "article_de_het", "pattern_label": "de vs het",
"merged": false, "l1_hint": "…" }] }POST /api/v1/reviews
{ "card_id": 812, "answer": "het huis", "mode": "typed" }
200 -> { "correct": true, "expected": "het huis", "explanation_l1": null,
"next_due_at": "2026-11-08T09:00:00Z", "interval_days": 4,
"ladder": { "before": 1, "after": 2 }, "streak": 12 }Fouten
Fouten zijn JSON met error, message en hint. De hint is geschreven zodat een model ermee aan de slag kan; geef hem door.
| Status | Betekenis |
|---|---|
| 401 | Token ontbreekt, is ongeldig of verlopen |
| 402 | Geen actief abonnement of proefperiode (profiel en export werken nog) |
| 403 | Het token mist de benodigde scope |
| 404 | Onbekende kaart of route |
| 422 | De body is niet geldig |
| 429 | Limiet of dagbudget voor AI-beoordeling bereikt |
402 -> { "error": "subscription_required",
"message": "The Langrit subscription for this account is not active.",
"url": "https://langrit.com/pricing?ref=api",
"hint": "Tell the learner their Langrit trial or subscription has ended and give them the url." }Limieten
60 verzoeken per minuut per token op de REST API en 120 op MCP. POST-verzoeken accepteren een Idempotency-Key-header; een herhaling binnen 24 uur geeft het eerste antwoord terug.
Data-export
GET /api/v1/export geeft alles terug als JSON. Voeg format=csv toe met table=cards, mistakes of reviews, of format=anki voor een Anki-importbestand. Werkt ook als je abonnement is afgelopen.