Memojin, ingebouwd in uw tools.
Een complete REST-API om uw platformen aan Memojin te koppelen: cursussen, mappen, memokaarten en vragen, zowel lezen als schrijven, AI-generaties, zoeken, ruimtes en het volgen van het leerproces. Ontworpen voor ELO's, LMS'en, uitgevers en de technische teams van onderwijsinstellingen.
Toegang verleend door ons team, organisatie per organisatie
28 bewerkingen · 14 scopes · OpenAPI 3.1
curl "https://api.memojin.com/v1/contents?limit=20" \
-H "Authorization: Bearer $MEMOJIN_API_KEY" \
-H "Accept-Language: fr"{
"data": [
{
"id": "3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87",
"title": "Photosynthesis",
"description": null,
"language": "en",
"folderId": null,
"imageUrl": null,
"createdAt": "2026-09-28T17:04:51.000Z",
"updatedAt": "2026-10-02T08:30:12.000Z",
"inclusions": {
"hasBody": true,
"hasSummary": true,
"memocardsCount": 42,
"questionsCount": 18,
"podcastsReadyCount": 1,
"sourcesCount": 2
}
}
],
"nextCursor": "eyJvIjoyMH0",
"hasMore": true
}Vier manieren om Memojin aan te sluiten.
Een sleutel handelt namens één Memojin-account, met precies diens rechten: u integreert wat dat account ziet, niets meer.
Herhalen aanbieden waar uw studenten al werken
Moodle, een regionale ELO of een eigen platform: toon de cursussen van een docentenaccount met hun memokaarten en vragen, zonder uw platform te verlaten.
Memojin koppelen aan uw informatiesysteem
Vind de cursussen, mappen en ruimtes van uw docenten terug in uw dashboards en onderwijstools, zonder iets opnieuw in te voeren.
Uw lesmateriaal aanvullen met actief herhalen
Importeer uw materiaal als cursussen, voeg er uw memokaarten en vragen aan toe, of laat de AI ze genereren.
Automatiseren wat nog met de hand gebeurt
Scripts, rapporten, synchronisaties: het OpenAPI 3.1-contract is leesbaar voor uw tools, die er een getypeerde client uit halen, en idempotentie maakt elke nieuwe poging veilig.
Negen resources, één scope per actie.
Alles in deze tabel werkt vandaag, met de aangegeven scope. Elke bewerking wordt in de referentie beschreven, parameter voor parameter.
Cursussen
contents:readcontents:writeDe cursussen van een map weergeven; een cursus lezen met zijn zes meetwaarden (les, samenvatting, aantal memokaarten, vragen, gereedstaande podcastafleveringen en bronnen); er een maken op basis van een titel of een tekst, ongewijzigd opgeslagen; hem bewerken, hem verwijderen.
- GET/v1/contents
- POST/v1/contents
- GET/v1/contents/{contentId}
- PATCH/v1/contents/{contentId}
- DELETE/v1/contents/{contentId}
Mappen
folders:readfolders:writeDe mappenstructuur van een bibliotheek doorlopen, een map maken (tot vijf niveaus diep), hem bewerken of verwijderen.
- GET/v1/folders
- POST/v1/folders
- GET/v1/folders/{folderId}
- PATCH/v1/folders/{folderId}
- DELETE/v1/folders/{folderId}
Memokaarten
memocards:readmemocards:writeDe kaarten van een cursus weergeven, met de retentie en de laatste herhaling van het account; een kaart toevoegen (titel, inhoud, uitleg), bewerken, verwijderen.
- GET/v1/contents/{contentId}/memocards
- POST/v1/contents/{contentId}/memocards
- GET/v1/memocards/{memocardId}
- PATCH/v1/memocards/{memocardId}
- DELETE/v1/memocards/{memocardId}
Vragen
questions:readquestions:writeDe vragen van een cursus weergeven; vragen van vier typen maken (open antwoord, waar of onwaar, enkelvoudige keuze, meerkeuze); de vraagstelling, de uitleg, de moeilijkheid of de punten ervan bewerken; ze verwijderen.
- GET/v1/contents/{contentId}/questions
- POST/v1/contents/{contentId}/questions
- GET/v1/questions/{questionId}
- PATCH/v1/questions/{questionId}
- DELETE/v1/questions/{questionId}
AI-generaties
generations:writejobs:readMemokaarten genereren uit een cursus, of vragen uit de kaarten ervan: direct antwoord (202), daarna het volgen van de taak tot het resultaat. De verwachte AI-credits worden al in het antwoord vermeld.
- POST/v1/contents/{contentId}/memocard-generations
- POST/v1/contents/{contentId}/question-generations
- GET/v1/jobs/{jobId}
Zoeken
search:readZoeken in de cursussen en mappen van het account, ongeacht hoofdletters of accenten.
- GET/v1/search
Ruimtes
spaces:readDe ruimtes lezen waarvan het account eigenaar is, desgevraagd ook de gearchiveerde. Er worden geen leden prijsgegeven.
- GET/v1/spaces
- GET/v1/spaces/{spaceId}
Studiesessies
study-sessions:readDe herhalings- en oefensessies van het account weergeven, van de nieuwste tot de oudste, met hun tellers, gefilterd op status of op ruimte.
- GET/v1/study-sessions
Leerstatistieken
learning-stats:readBeheerste memokaarten, studietijd, slagingspercentage over 30 dagen en voltooide sessies van het account.
- GET/v1/learning-stats
In voorbereiding
- BinnenkortMCP-server
De bewerkingen van de API beschikbaar voor AI-assistenten die MCP ondersteunen, met dezelfde sleutels en dezelfde scopes.
- BinnenkortOntwikkelaarsomgeving
Zelf uw sleutels aanmaken, hun scopes kiezen en uw verbruik volgen vanuit uw account, via selfservice.
- BinnenkortUitgaande webhooks
Een melding krijgen via een ondertekende aanroep op uw server, bijvoorbeeld aan het einde van een generatie, in plaats van te pollen.
- BinnenkortToegang inbegrepen in de abonnementen
De API direct beschikbaar bij bepaalde docenten- en instellingsabonnementen, zonder voorafgaande aanvraag.
Van sandbox naar productie, in drie stappen.
Elke organisatie begint in de sandbox. Productie gaat open zodra uw integratie klaar is.
U vraagt toegang aan
Beschrijf ons uw project. Wij maken uw organisatie aan, gekoppeld aan het Memojin-account waarvoor zij zal handelen, en geven u een testsleutel.
U ontwikkelt in de sandbox
Een mj_test_-sleutel leest en schrijft dezelfde gegevens, met een quotum van 100 aanroepen per dag. AI-generaties worden er gesimuleerd: er wordt niets verzonden of afgeschreven.
U gaat naar productie
Na goedkeuring door ons team ontvangt u een mj_live_-sleutel. Die wordt maar één keer getoond: bewaar hem in uw secrets-kluis.
Eén sleutel, meerdere scopes
Elke bewerking vereist een scope in de vorm resource:read of resource:write, aangegeven in de tabel hierboven. Een sleutel draagt alleen de aangevraagde scopes, en write impliceert geen read; zonder de juiste scope antwoordt de API 403 insufficient_scope en noemt daarbij de verwachte scope.
De sleutel blijft in een omgevingsvariabele op uw server: de API antwoordt niet op aanroepen vanuit een browser.
Uw eerste aanroep
curl "https://api.memojin.com/v1/contents?limit=20" \
-H "Authorization: Bearer $MEMOJIN_API_KEY" \
-H "Accept-Language: fr"const res = await fetch("https://api.memojin.com/v1/contents?limit=20", {
headers: { Authorization: `Bearer ${process.env.MEMOJIN_API_KEY}` },
});
if (!res.ok) {
const { error } = await res.json();
throw new Error(`${error.code}: ${error.message}`);
}
const { data, nextCursor, hasMore } = await res.json();import os, requests
res = requests.get(
"https://api.memojin.com/v1/contents",
params={"limit": 20},
headers={"Authorization": f"Bearer {os.environ['MEMOJIN_API_KEY']}"},
timeout=10,
)
if not res.ok:
error = res.json()["error"]
raise RuntimeError(f"{error['code']}: {error['message']}")
page = res.json() # { "data": [...], "nextCursor": ..., "hasMore": ... }Het HTTP-protocol, naar de letter toegepast.
Geen eigen conventie om te leren: de headers die uw HTTP-bibliotheken al kennen, door de API gezet op elke response waarop ze van toepassing zijn.
ETagIf-None-Match304Voorwaardelijk lezen
Elke GET geeft een ETag terug; teruggestuurd in If-None-Match levert die een 304 zonder body op als er niets is veranderd.
If-Match412Schrijven zonder conflicten
Stuur de gelezen ETag mee in If-Match: als de resource intussen is veranderd, antwoorden PATCH en DELETE met 412 en wijzigen ze niets.
Idempotency-KeyIdempotent-ReplayedIdempotentie
Elke POST accepteert een Idempotency-Key: binnen 24 uur opnieuw verzonden, geeft het verzoek het eerste antwoord terug, gemarkeerd met Idempotent-Replayed, zonder dubbele aanmaak of dubbele afschrijving.
RateLimit-LimitRateLimit-RemainingRateLimit-ResetRetry-AfterAangekondigde limieten
Elk antwoord vertelt waar u staat in uw rate-limitvenster; een 429 of een 503 geeft in Retry-After aan wanneer u het opnieuw kunt proberen.
LocationLinkLinks
Een aanmaak antwoordt 201 met Location; een pagina draagt Link rel="next"; elke fout een Link rel="help" naar de documentatie van zijn code.
Memojin-VersionDeprecationSunsetVersies en uitfasering
Memojin-Version zegt welk contract het verzoek heeft afgehandeld; Deprecation en Sunset (RFC 9745, RFC 8594) staan klaar om een bewerking aan het einde van haar levensduur te signaleren.
Memojin-Credits-EstimateAangekondigde credits
Een generatie vermeldt in haar header, net als in haar body, de AI-crediteenheden die ze verwacht te gebruiken.
X-Request-IdAccept-LanguageTraceerbaarheid en talen
Elke aanroep draagt een X-Request-Id, de uwe of de onze; Accept-Language kiest de taal van de foutmeldingen uit negen talen.
Eén enkele foutvorm, { error: { code, message, details } }, en 25 stabiele codes, elk uitgelegd in de openbare fouttabel.
Starten, volgen, ophalen.
Memokaarten of vragen genereren duurt van enkele seconden tot enkele minuten. De API antwoordt meteen, daarna volgt u de taak in uw eigen tempo.
Eén ai_card-eenheid per gegenereerde memokaart of vraag, afgeschreven van de AI-credits van het account, net als in de app. Een geweigerd of opnieuw verzonden verzoek kost niets.
Vraag GET /v1/jobs/{jobId} ongeveer elke vijf seconden op tot succeeded, failed of cancelled, en lees daarna de kaarten of de vragen van de cursus.
Met een mj_test_-sleutel wordt niets gegenereerd of afgeschreven: de taak is meteen voltooid, en u test het hele traject kosteloos.
curl -X POST "https://api.memojin.com/v1/contents/$CONTENT_ID/memocard-generations" \
-H "Authorization: Bearer $MEMOJIN_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"
HTTP/1.1 202 Accepted
Memojin-Credits-Estimate: ai_card=12
{
"jobId": "9b8a7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"status": "pending",
"estimate": { "operation": "ai_card", "units": 12 }
}curl "https://api.memojin.com/v1/jobs/$JOB_ID" \
-H "Authorization: Bearer $MEMOJIN_API_KEY"
{
"id": "9b8a7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"type": "memocard_generation",
"status": "succeeded",
"progress": 100,
"contentId": "3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87",
"error": null,
"createdAt": "2026-10-04T10:00:00.000Z",
"updatedAt": "2026-10-04T10:00:41.000Z"
}import os, time, uuid, requests
API = "https://api.memojin.com/v1"
H = {"Authorization": f"Bearer {os.environ['MEMOJIN_API_KEY']}"}
job = requests.post(
f"{API}/contents/{content_id}/memocard-generations",
headers={**H, "Idempotency-Key": str(uuid.uuid4())},
timeout=30,
).json() # 202 : {"jobId": ..., "status": "pending", "estimate": {...}}
while True:
state = requests.get(f"{API}/jobs/{job['jobId']}", headers=H, timeout=10).json()
if state["status"] in ("succeeded", "failed", "cancelled"):
break
time.sleep(5)
cards = requests.get(f"{API}/contents/{content_id}/memocards", headers=H, timeout=10).json()Betrouwbaar tot in de kern.
De regels die uw gegevens en die van uw gebruikers beschermen, staan in de code, niet alleen in een contract.
Geheime sleutels
We bewaren alleen de SHA-256-hash van uw sleutel, nooit de sleutel zelf. Een ingetrokken sleutel wordt binnen een minuut geweigerd.
Server naar server
De API weigert aanroepen vanuit een browser (CORS gesloten): uw sleutel verlaat uw server niet.
Rechten van één account
Een sleutel handelt namens één Memojin-account en ziet precies wat dat account ziet. De resource van een ander account antwoordt 404, zonder iets prijs te geven.
Zo beperkt mogelijke scopes
Lezen en schrijven gescheiden, resource per resource: een sleutel draagt alleen de scopes die u aanvraagt.
Afgeschermde sandbox
Een mj_test_-sleutel raakt nooit de echte wereld: gesimuleerde generaties, geen credits verbruikt, niets verzonden, 100 aanroepen per dag.
Gecontroleerd contract
De referentie en het OpenAPI-contract worden gegenereerd uit precies de schema's waarmee de API elk verzoek valideert.
Compatibiliteit
Onder /v1 alleen compatibele toevoegingen. Een incompatibele wijziging komt onder /v2, en /v1 blijft minstens 12 maanden beschikbaar.
Hosting in Frankrijk
De API, de database en de bestanden draaien op onze eigen servers, gehost in Frankrijk. Het aanroeplogboek bewaart geen inhoud en geen IP-adres.
Subverwerkers, bewaartermijnen en rechten worden toegelicht in ons privacybeleid.
Alles is beschreven, in het Engels en het Frans.
De referentie beschrijft elke bewerking, elke parameter en elke foutcode, met voorbeelden. Ze wordt gegenereerd uit het contract dat de API toepast: ze kan het niet tegenspreken.
De volledige documentatie
Snelstart, sleutels, sandbox, elke resource en elke bewerking, fouten, limieten, AI-credits: alles staat op de site, in het Frans en het Engels, met voorbeelden in curl, JavaScript en Python.
Interactieve referentie
In het Engels: bewerkingen, schema's, handleidingen, voorbeelden van verzoeken en antwoorden.
/v1/docsReferentie openenReferentie in het Frans
Dezelfde referentie, inclusief handleidingen, volledig in het Frans.
/v1/docs/frIn het Frans openenOpenAPI 3.1-contract
openapi.json (en openapi.fr.json), om een getypeerde client in uw programmeertaal te genereren.
/v1/openapi.jsonContract openenFouttabel
Elke foutcode, de HTTP-status ervan en wat die betekent.
/v1/docs/errorsTabel openenVoordat u begint.
Hoe krijg ik een sleutel?
Schrijf ons op contact@memojin.com met een beschrijving van uw organisatie en uw project. De toegang wordt verleend door ons team: eerst een testsleutel, daarna een productiesleutel na goedkeuring.
Wat kan de API vandaag?
De bibliotheek van een account lezen en schrijven (cursussen, mappen, memokaarten, vragen), AI-generaties van memokaarten en vragen starten en de taak volgen, zoeken, en de ruimtes, studiesessies en leerstatistieken lezen. Elke bewerking wordt in de referentie beschreven.
Wat kost de API?
Tijdens de bèta is de toegang op aanvraag beschikbaar. Lezen en schrijven verbruikt geen AI-credits; alleen generaties gebruiken de AI-credits van het account waarvoor de sleutel handelt, net als in de app: één eenheid per gegenereerde memokaart of vraag, al vermeld in het 202-antwoord.
Is een Memojin-abonnement nodig?
Ja: de sleutel handelt namens een Memojin-account, en voor de meeste bewerkingen moet dat account een actief abonnement hebben, net als in de app. API-toegang inbegrepen in bepaalde abonnementen is in voorbereiding.
Kan ik de API aanroepen vanuit een browser of een mobiele app?
Nee: de sleutel is geheim en de API weigert aanroepen vanuit een browser. Roep de API aan vanaf uw server, die vervolgens aan uw interface doorgeeft wat die nodig heeft.
Waar worden de gegevens verwerkt?
Op onze eigen servers, gehost in Frankrijk. Een sleutel heeft alleen toegang tot de gegevens van het account waarvoor hij handelt, en het aanroeplogboek bewaart geen inhoud en geen IP-adres.
Laten we praten over uw integratie.
Vertel ons in een paar regels wie u bent, wat u wilt koppelen en welk volume u verwacht. We nemen contact met u op om uw sandbox te openen.
- Eerst een sandbox, vrijblijvend
- Referentie in het Engels en het Frans
- Gegevens gehost in Frankrijk