Memojin, no centro das suas ferramentas.
Uma API REST completa para conectar suas plataformas ao Memojin: cursos, pastas, cartões memo e perguntas para leitura e gravação, gerações por IA, pesquisa, espaços e acompanhamento da aprendizagem. Pensada para portais acadêmicos, LMS, editoras e equipes técnicas das instituições de ensino.
Acesso liberado pela nossa equipe, organização por organização
28 operações · 14 escopos · 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
}Quatro formas de conectar o Memojin.
Uma chave age em nome de uma conta Memojin, com exatamente os mesmos direitos: você integra o que essa conta vê, nada mais.
Oferecer a revisão onde seus estudantes já trabalham
Moodle, portal da rede de ensino ou plataforma própria: exiba os cursos de uma conta de professor com seus cartões memo e suas perguntas, sem sair da sua plataforma.
Conectar o Memojin ao seu sistema de informação
Encontre os cursos, as pastas e os espaços dos seus professores nos seus painéis e nas suas ferramentas pedagógicas, sem redigitar nada.
Ampliar seus recursos com a recordação ativa
Importe seus recursos como cursos, adicione a eles seus cartões memo e suas perguntas, ou deixe a geração por conta da IA.
Automatizar o que ainda é feito à mão
Scripts, relatórios, sincronizações: o contrato OpenAPI 3.1 é lido pelas suas ferramentas, que geram a partir dele um cliente tipado, e a idempotência torna cada nova tentativa segura.
Nove recursos, um escopo por ação.
Tudo o que aparece nesta tabela já funciona hoje, com o escopo indicado. Cada operação está descrita, parâmetro por parâmetro, na referência.
Cursos
contents:readcontents:writeListar os cursos de uma pasta; ler um curso com suas seis medidas (lição, síntese, número de cartões memo, de perguntas, de episódios de podcast prontos e de fontes); criar um a partir de um título ou de um texto, salvo tal como está; editá-lo, excluí-lo.
- GET/v1/contents
- POST/v1/contents
- GET/v1/contents/{contentId}
- PATCH/v1/contents/{contentId}
- DELETE/v1/contents/{contentId}
Pastas
folders:readfolders:writePercorrer a árvore de uma biblioteca, criar uma pasta (até cinco níveis), editá-la ou excluí-la.
- GET/v1/folders
- POST/v1/folders
- GET/v1/folders/{folderId}
- PATCH/v1/folders/{folderId}
- DELETE/v1/folders/{folderId}
Cartões memo
memocards:readmemocards:writeListar os cartões de um curso, com a retenção e a última revisão da conta; adicionar um cartão (título, conteúdo, explicação), editá-lo, excluí-lo.
- GET/v1/contents/{contentId}/memocards
- POST/v1/contents/{contentId}/memocards
- GET/v1/memocards/{memocardId}
- PATCH/v1/memocards/{memocardId}
- DELETE/v1/memocards/{memocardId}
Perguntas
questions:readquestions:writeListar as perguntas de um curso; criar perguntas de quatro tipos (resposta livre, verdadeiro ou falso, escolha única, múltipla escolha); editar o enunciado, a explicação, a dificuldade ou a pontuação; excluí-las.
- GET/v1/contents/{contentId}/questions
- POST/v1/contents/{contentId}/questions
- GET/v1/questions/{questionId}
- PATCH/v1/questions/{questionId}
- DELETE/v1/questions/{questionId}
Gerações por IA
generations:writejobs:readGerar cartões memo a partir de um curso, ou perguntas a partir dos seus cartões: resposta imediata (202), depois acompanhamento da tarefa até o resultado. Os créditos de IA previstos são informados já na resposta.
- POST/v1/contents/{contentId}/memocard-generations
- POST/v1/contents/{contentId}/question-generations
- GET/v1/jobs/{jobId}
Pesquisa
search:readPesquisar nos cursos e nas pastas da conta, sem diferenciar maiúsculas nem acentos.
- GET/v1/search
Espaços
spaces:readLer os espaços dos quais a conta é proprietária, incluindo os arquivados, se solicitado. Nenhum membro é exposto.
- GET/v1/spaces
- GET/v1/spaces/{spaceId}
Sessões de estudo
study-sessions:readListar as sessões de revisão e de prática da conta, da mais recente à mais antiga, com seus contadores, filtradas por estado ou por espaço.
- GET/v1/study-sessions
Estatísticas de aprendizagem
learning-stats:readCartões memo dominados, tempo de estudo, taxa de acerto em 30 dias e sessões concluídas da conta.
- GET/v1/learning-stats
Em preparação
- Em breveServidor MCP
As operações da API disponíveis para os assistentes de IA compatíveis com MCP, com as mesmas chaves e os mesmos escopos.
- Em breveÁrea do desenvolvedor
Criar suas chaves, escolher seus escopos e acompanhar seu consumo pela sua conta, em autoatendimento.
- Em breveWebhooks de saída
Ser avisado por uma chamada assinada no seu servidor, por exemplo ao final de uma geração, em vez de consultar repetidamente.
- Em breveAcesso incluído nos planos
A API liberada diretamente com alguns planos para professores e instituições, sem solicitação prévia.
Do sandbox à produção, em três etapas.
Toda organização começa no sandbox. A produção é liberada quando sua integração estiver pronta.
Você solicita um acesso
Conte para nós sobre o seu projeto. Criamos sua organização, vinculada à conta Memojin em nome da qual ela vai agir, e entregamos a você uma chave de teste.
Você desenvolve no sandbox
Uma chave mj_test_ lê e grava os mesmos dados, com uma cota de 100 chamadas por dia. As gerações por IA são simuladas: nada é enviado nem descontado.
Você passa para a produção
Após a validação pela nossa equipe, você recebe uma chave mj_live_. Ela só é exibida uma vez: guarde-a no seu cofre de segredos.
Uma chave, seus escopos
Cada operação exige um escopo no formato recurso:read ou recurso:write, indicado na tabela acima. Uma chave só tem os escopos solicitados, e write não implica read; sem o escopo certo, a API responde 403 insufficient_scope, informando o escopo esperado.
A chave fica em uma variável de ambiente do seu servidor: a API não responde a chamadas feitas por um navegador.
Sua primeira chamada
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": ... }O protocolo HTTP, aplicado à risca.
Nenhuma convenção própria para aprender: os cabeçalhos que suas bibliotecas HTTP já conhecem, definidos pela API em cada resposta pertinente.
ETagIf-None-Match304Leituras condicionais
Cada GET retorna um ETag; enviado de volta em If-None-Match, ele gera um 304 sem corpo quando nada mudou.
If-Match412Gravações sem conflito
Envie o ETag lido em If-Match: se o recurso tiver mudado nesse meio-tempo, PATCH e DELETE respondem 412 e não alteram nada.
Idempotency-KeyIdempotent-ReplayedIdempotência
Todo POST aceita um Idempotency-Key: repetida em até 24 horas, a requisição retorna a primeira resposta, marcada com Idempotent-Replayed, sem criação nem desconto em dobro.
RateLimit-LimitRateLimit-RemainingRateLimit-ResetRetry-AfterLimites informados
Cada resposta informa em que ponto você está da sua janela de taxa; um 429 ou um 503 indica em Retry-After quando tentar novamente.
LocationLinkLinks
Uma criação responde 201 com Location; uma página traz Link rel="next"; cada erro, um Link rel="help" para a documentação do seu código.
Memojin-VersionDeprecationSunsetVersões e desativações
Memojin-Version informa qual contrato atendeu a requisição; Deprecation e Sunset (RFC 9745, RFC 8594) estão prontos para sinalizar uma operação em fim de vida.
Memojin-Credits-EstimateCréditos informados
Uma geração informa no cabeçalho, assim como no corpo, as unidades de crédito de IA que prevê usar.
X-Request-IdAccept-LanguageRastreabilidade e idiomas
Cada chamada traz um X-Request-Id, o seu ou o nosso; Accept-Language escolhe o idioma das mensagens de erro entre nove.
Um único formato de erro, { error: { code, message, details } }, e 25 códigos estáveis, cada um explicado na tabela pública de erros.
Inicie, acompanhe, recupere.
Gerar cartões memo ou perguntas leva de alguns segundos a alguns minutos. A API responde na hora, e depois você acompanha a tarefa no seu ritmo.
Uma unidade ai_card por cartão memo ou pergunta gerada, descontada dos créditos de IA da conta, como no aplicativo. Uma requisição recusada ou repetida não custa nada.
Consulte GET /v1/jobs/{jobId} a cada cinco segundos, mais ou menos, até succeeded, failed ou cancelled, e depois leia os cartões ou as perguntas do curso.
Com uma chave mj_test_, nada é gerado nem descontado: a tarefa é concluída na hora, e você testa todo o fluxo sem custo.
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()Confiável desde a concepção.
As regras que protegem os seus dados e os dos seus usuários estão no código, não apenas em um contrato.
Chaves secretas
Guardamos apenas o hash SHA-256 da sua chave, nunca a própria chave. Uma chave revogada é recusada em menos de um minuto.
Servidor a servidor
A API recusa chamadas vindas de um navegador (CORS fechado): sua chave não sai do seu servidor.
Direitos de uma única conta
Uma chave age em nome de uma conta Memojin e vê exatamente o que ela vê. O recurso de outra conta responde 404, sem revelar nada.
Escopos na medida certa
Leitura e gravação separadas, recurso por recurso: uma chave só tem os escopos que você solicita.
Sandbox isolado
Uma chave mj_test_ nunca toca o mundo real: gerações simuladas, nenhum crédito consumido, nenhum envio, 100 chamadas por dia.
Contrato verificado
A referência e o contrato OpenAPI são gerados a partir dos mesmos esquemas com os quais a API valida cada requisição.
Compatibilidade
Em /v1, apenas acréscimos compatíveis. Uma mudança incompatível virá em /v2, e a /v1 continuará disponível por pelo menos 12 meses.
Hospedagem na França
A API, o banco de dados e os arquivos rodam em nossos próprios servidores, hospedados na França. O registro de chamadas não guarda nem conteúdo nem endereço IP.
Suboperadores, prazos de conservação e direitos estão detalhados na nossa política de privacidade.
Tudo está documentado, em inglês e em francês.
A referência descreve cada operação, cada parâmetro e cada código de erro, com exemplos. Ela é gerada a partir do contrato que a API aplica: não pode contradizê-lo.
A documentação completa
Início rápido, chaves, sandbox, cada recurso e cada operação, erros, limites, créditos de IA: está tudo no site, em francês e em inglês, com exemplos em curl, JavaScript e Python.
Referência interativa
Em inglês: operações, esquemas, guias, exemplos de requisições e de respostas.
/v1/docsAbrir a referênciaReferência em francês
A mesma referência, incluindo os guias, totalmente em francês.
/v1/docs/frAbrir em francêsContrato OpenAPI 3.1
openapi.json (e openapi.fr.json), para gerar um cliente tipado na sua linguagem.
/v1/openapi.jsonAbrir o contratoTabela de erros
Cada código de erro, seu status HTTP e o que ele significa.
/v1/docs/errorsAbrir a tabelaAntes de começar.
Como obter uma chave?
Escreva para contact@memojin.com descrevendo sua organização e seu projeto. O acesso é liberado pela nossa equipe: primeiro uma chave de teste, depois uma chave de produção, após a validação.
O que a API permite fazer hoje?
Ler e gravar a biblioteca de uma conta (cursos, pastas, cartões memo, perguntas), iniciar gerações de cartões memo e de perguntas por IA e acompanhar as tarefas, pesquisar, e ler os espaços, as sessões de estudo e as estatísticas de aprendizagem. Cada operação está descrita na referência.
Quanto custa a API?
Durante o beta, o acesso é liberado mediante solicitação. Ler e gravar não consome nenhum crédito de IA; só as gerações usam os créditos de IA da conta em nome da qual a chave age, como no aplicativo: uma unidade por cartão memo ou pergunta gerada, informada já na resposta 202.
É preciso ter uma assinatura Memojin?
Sim: a chave age em nome de uma conta Memojin, e a maioria das operações exige que essa conta tenha um plano ativo, como no aplicativo. O acesso à API incluído em alguns planos está em preparação.
Posso chamar a API de um navegador ou de um aplicativo para celular?
Não: a chave é secreta e a API recusa chamadas feitas por um navegador. Chame-a pelo seu servidor, que depois repassa à sua interface o que ela precisa.
Onde os dados são processados?
Em nossos próprios servidores, hospedados na França. Uma chave só acessa os dados da conta em nome da qual age, e o registro de chamadas não guarda nem conteúdo nem endereço IP.
Vamos falar sobre a sua integração.
Conte em poucas linhas quem você é, o que quer conectar e o volume previsto. Entraremos em contato para liberar o seu sandbox.
- Primeiro o sandbox, sem compromisso
- Referência em inglês e em francês
- Dados hospedados na França