Memojin, dentro i vostri strumenti.
Un’API REST completa per collegare le vostre piattaforme a Memojin: contenuti, cartelle, schede memo e domande in lettura e in scrittura, generazione con l’IA, ricerca, spazi e monitoraggio dell’apprendimento. Pensata per piattaforme di apprendimento, fornitori di LMS, editori e team tecnici di istituti e università.
Il nostro team apre l’accesso, un’organizzazione alla volta
28 operazioni · 14 scope · 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
}Quattro modi per collegare Memojin.
Una chiave agisce per conto di un account Memojin, con esattamente i suoi diritti: integrate ciò che quell’account vede, niente di più.
Portare il ripasso dove i vostri studenti lavorano già
Moodle, una piattaforma regionale o la vostra: mostrate i contenuti di un account docente con le loro schede memo e le loro domande, senza lasciare la vostra piattaforma.
Collegare Memojin al vostro sistema informativo
Ritrovate i contenuti, le cartelle e gli spazi dei vostri docenti nei vostri cruscotti e strumenti didattici, senza reinserirli.
Prolungare le vostre risorse con il richiamo attivo
Importate le vostre risorse come contenuti, aggiungete le vostre schede memo e domande, oppure affidatene la generazione all’IA.
Automatizzare ciò che si fa ancora a mano
Script, report, sincronizzazioni: i vostri strumenti leggono il contratto OpenAPI 3.1 e ne ricavano un client tipizzato, e l’idempotenza rende sicuro ogni nuovo tentativo.
Nove risorse, uno scope per azione.
Tutto ciò che è in questa tabella risponde oggi, con lo scope indicato. Ogni operazione è descritta, parametro per parametro, nel riferimento.
Contenuti
contents:readcontents:writeElencare i contenuti di una cartella; leggere un contenuto con le sue sei misure (corpo, riassunto, numero di schede memo, domande, episodi di podcast pronti e fonti); crearne uno da un titolo o da un testo, salvato così com’è; modificarlo, eliminarlo.
- GET/v1/contents
- POST/v1/contents
- GET/v1/contents/{contentId}
- PATCH/v1/contents/{contentId}
- DELETE/v1/contents/{contentId}
Cartelle
folders:readfolders:writePercorrere l’albero delle cartelle di una biblioteca, creare una cartella (fino a cinque livelli), modificarla o eliminarla.
- GET/v1/folders
- POST/v1/folders
- GET/v1/folders/{folderId}
- PATCH/v1/folders/{folderId}
- DELETE/v1/folders/{folderId}
Schede memo
memocards:readmemocards:writeElencare le schede di un contenuto, con la ritenzione e l’ultimo ripasso dell’account; aggiungere una scheda (fronte, retro, spiegazione), modificarla, eliminarla.
- GET/v1/contents/{contentId}/memocards
- POST/v1/contents/{contentId}/memocards
- GET/v1/memocards/{memocardId}
- PATCH/v1/memocards/{memocardId}
- DELETE/v1/memocards/{memocardId}
Domande
questions:readquestions:writeElencare le domande di un contenuto; crearne di quattro tipi (risposta libera, vero o falso, scelta singola, scelta multipla); modificarne l’enunciato, la spiegazione, la difficoltà o i punti; eliminarle.
- GET/v1/contents/{contentId}/questions
- POST/v1/contents/{contentId}/questions
- GET/v1/questions/{questionId}
- PATCH/v1/questions/{questionId}
- DELETE/v1/questions/{questionId}
Generazione con l’IA
generations:writejobs:readGenerare schede memo da un contenuto, o domande dalle sue schede: risposta immediata (202), poi monitoraggio del lavoro fino al risultato. I crediti IA previsti sono indicati già nella risposta.
- POST/v1/contents/{contentId}/memocard-generations
- POST/v1/contents/{contentId}/question-generations
- GET/v1/jobs/{jobId}
Ricerca
search:readCercare nei contenuti e nelle cartelle dell’account, senza distinguere maiuscole né accenti.
- GET/v1/search
Spazi
spaces:readLeggere gli spazi (classi, gruppi) di cui l’account è proprietario, archiviati compresi su richiesta. Nessun membro è esposto.
- GET/v1/spaces
- GET/v1/spaces/{spaceId}
Sessioni di studio
study-sessions:readElencare le sessioni di ripasso e di esercizio dell’account, dalla più recente alla più vecchia, con i loro contatori, filtrate per stato o per spazio.
- GET/v1/study-sessions
Statistiche di apprendimento
learning-stats:readSchede memo padroneggiate, tempo di studio, tasso di successo su 30 giorni e sessioni completate dell’account.
- GET/v1/learning-stats
In preparazione
- ProssimamenteServer MCP
Le operazioni dell’API offerte agli assistenti IA compatibili con MCP, con le stesse chiavi e gli stessi scope.
- ProssimamenteSpazio sviluppatori
Creare le vostre chiavi, sceglierne gli scope e seguire il consumo dal vostro account, in self-service.
- ProssimamenteWebhook in uscita
Ricevere una chiamata firmata sul vostro server, per esempio alla fine di una generazione, invece di interrogare a intervalli.
- ProssimamenteAccesso incluso nei piani
L’API aperta direttamente con alcuni piani per docenti e istituti, senza richiesta preventiva.
Dalla sandbox alla produzione, in tre passi.
Ogni organizzazione inizia nella sandbox. La produzione si apre quando la vostra integrazione è pronta.
Richiedete l’accesso
Descriveteci il vostro progetto. Creiamo la vostra organizzazione, collegata all’account Memojin per cui agirà, e vi consegniamo una chiave di test.
Sviluppate nella sandbox
Una chiave mj_test_ legge e scrive gli stessi dati, con una quota di 100 chiamate al giorno. La generazione con l’IA è simulata: nulla viene inviato né conteggiato.
Passate in produzione
Dopo la convalida del nostro team, ricevete una chiave mj_live_. Viene mostrata una sola volta: conservatela nel vostro gestore di segreti.
Una chiave, i suoi scope
Ogni operazione richiede uno scope della forma risorsa:read o risorsa:write, indicato nella tabella qui sopra. Una chiave porta solo gli scope richiesti, e write non implica read; senza quello giusto, l’API risponde 403 insufficient_scope indicando lo scope atteso.
La chiave resta in una variabile d’ambiente del vostro server: l’API non risponde alle chiamate da un browser.
La vostra prima chiamata
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": ... }Il protocollo HTTP, alla lettera.
Nessuna convenzione interna da imparare: le intestazioni che le vostre librerie HTTP conoscono già, poste dall’API su ogni risposta interessata.
ETagIf-None-Match304Letture condizionali
Ogni GET restituisce un ETag; rinviato in If-None-Match, dà un 304 senza corpo quando nulla è cambiato.
If-Match412Scritture senza conflitti
Inviate l’ETag letto in If-Match: se la risorsa è cambiata nel frattempo, PATCH e DELETE rispondono 412 e non modificano nulla.
Idempotency-KeyIdempotent-ReplayedIdempotenza
Ogni POST accetta un Idempotency-Key: ripetuta entro 24 ore, la richiesta restituisce la prima risposta, marcata Idempotent-Replayed, senza doppia creazione né doppio conteggio.
RateLimit-LimitRateLimit-RemainingRateLimit-ResetRetry-AfterLimiti dichiarati
Ogni risposta indica a che punto siete della vostra finestra di limite; un 429 o un 503 indica in Retry-After quando riprovare.
LocationLinkLink
Una creazione risponde 201 con Location; una pagina porta Link rel="next"; ogni errore, un Link rel="help" verso la documentazione del suo codice.
Memojin-VersionDeprecationSunsetVersioni e ritiro
Memojin-Version indica quale contratto ha servito la richiesta; Deprecation e Sunset (RFC 9745, RFC 8594) sono pronti a segnalare un’operazione a fine vita.
Memojin-Credits-EstimateCrediti dichiarati
Una generazione indica nella sua intestazione, come nel suo corpo, le unità di credito IA che prevede di usare.
X-Request-IdAccept-LanguageTracciabilità e lingue
Ogni chiamata porta un X-Request-Id, il vostro o il nostro; Accept-Language sceglie la lingua dei messaggi di errore fra cinque.
Una sola forma di errore, { error: { code, message, details } }, e 25 codici stabili, ciascuno spiegato nella tabella pubblica degli errori.
Avviate, seguite, recuperate.
Generare schede memo o domande richiede da pochi secondi a qualche minuto. L’API risponde subito, poi seguite il lavoro al vostro ritmo.
Un’unità ai_card per scheda memo o domanda generata, presa dai crediti IA dell’account, come nell’app. Una richiesta rifiutata o ripetuta non costa nulla.
Interrogate GET /v1/jobs/{jobId} circa ogni cinque secondi fino a succeeded, failed o cancelled, poi leggete le schede o le domande del contenuto.
Con una chiave mj_test_, nulla viene generato né conteggiato: il lavoro termina subito, e provate l’intero percorso senza costi.
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()Affidabile per costruzione.
Le regole che proteggono i vostri dati e quelli dei vostri utenti sono nel codice, non solo in un contratto.
Chiavi segrete
Conserviamo solo l’impronta SHA-256 della vostra chiave, mai la chiave stessa. Una chiave revocata viene rifiutata entro un minuto.
Da server a server
L’API rifiuta le chiamate da un browser (CORS chiuso): la vostra chiave non lascia il vostro server.
I diritti di un solo account
Una chiave agisce per conto di un account Memojin e vede esattamente ciò che esso vede. La risorsa di un altro account risponde 404, senza rivelare nulla.
Scope essenziali
Lettura e scrittura separate, risorsa per risorsa: una chiave porta solo gli scope che richiedete.
Sandbox isolata
Una chiave mj_test_ non tocca mai il mondo reale: generazione simulata, nessun credito consumato, nessun invio, 100 chiamate al giorno.
Contratto verificato
Il riferimento e il contratto OpenAPI sono generati dagli stessi schemi con cui l’API convalida ogni richiesta.
Compatibilità
Sotto /v1, solo aggiunte compatibili. Una modifica incompatibile arriverà come /v2, e /v1 resterà in servizio almeno 12 mesi.
Hosting in Francia
L’API, il database e i file girano sui nostri server, ospitati in Francia. Il registro delle chiamate non conserva né contenuti né indirizzi IP.
Responsabili del trattamento, tempi di conservazione e diritti sono descritti nella nostra informativa sulla privacy.
Tutto è scritto, in inglese e in francese.
Il riferimento descrive ogni operazione, ogni parametro e ogni codice di errore, con esempi. È generato dal contratto che l’API applica: non può contraddirlo.
La documentazione completa
Avvio rapido, chiavi, sandbox, ogni risorsa e ogni operazione, errori, limiti, crediti IA: è tutto sul sito, in inglese e in francese, con esempi in curl, JavaScript e Python.
Riferimento interattivo
In inglese: operazioni, schemi, guide, esempi di richieste e risposte.
/v1/docsAprire il riferimentoRiferimento in francese
Lo stesso riferimento, guide comprese, interamente in francese.
/v1/docs/frAprire in franceseContratto OpenAPI 3.1
openapi.json (e openapi.fr.json), per generare un client tipizzato nel vostro linguaggio.
/v1/openapi.jsonAprire il contrattoTabella degli errori
Ogni codice di errore, il suo stato HTTP e il suo significato.
/v1/docs/errorsAprire la tabellaPrima di iniziare.
Come ottengo una chiave?
Scriveteci a contact@memojin.com descrivendo la vostra organizzazione e il vostro progetto. Il nostro team apre l’accesso: prima una chiave di test, poi, dopo la convalida, una chiave di produzione.
Cosa permette oggi l’API?
Leggere e scrivere la biblioteca di un account (contenuti, cartelle, schede memo, domande), avviare generazioni di schede memo e di domande con l’IA e seguirne i lavori, cercare, e leggere gli spazi, le sessioni di studio e le statistiche di apprendimento. Ogni operazione è descritta nel riferimento.
Quanto costa l’API?
Durante la beta, l’accesso è aperto su richiesta. Leggere e scrivere non consuma crediti IA; solo le generazioni usano i crediti IA dell’account per cui la chiave agisce, come nell’app: un’unità per scheda memo o domanda generata, indicata nella risposta 202.
Serve un abbonamento Memojin?
Sì: la chiave agisce per conto di un account Memojin, e la maggior parte delle operazioni richiede che questo account abbia un piano attivo, come nell’app. L’accesso all’API incluso in alcuni piani è in preparazione.
Posso chiamare l’API da un browser o da un’app mobile?
No: la chiave è segreta e l’API rifiuta le chiamate da un browser. Chiamatela dal vostro server, che poi passa alla vostra interfaccia ciò di cui ha bisogno.
Dove vengono trattati i dati?
Sui nostri server, ospitati in Francia. Una chiave accede solo ai dati dell’account per cui agisce, e il registro delle chiamate non conserva né contenuti né indirizzi IP.
Parliamo della vostra integrazione.
Diteci in poche righe chi siete, cosa volete collegare e il volume previsto. Vi ricontatteremo per aprire la vostra sandbox.
- Prima la sandbox, senza impegno
- Riferimento in inglese e in francese
- Dati ospitati in Francia