Memocards

The Memocard object (front, back, explanation, retention) and its five operations: list a content’s memocards, create, read, update and delete them.

api.memojin.com/v1 · Contract 1.0.0-beta.2 · Beta

Sections · Memocards

A memocard is a notion to remember: a front (the question) and a back (the answer), reviewed with spaced repetition in the app. Memocards belong to a content and are listed in its order.

Good to know

  • The back is written and read as text; LaTeX formulas are kept.
  • retention and lastReviewedAt describe how well the account the key acts for remembers the memocard; they are filled in lists (GET …/memocards).
  • A memocard shared through a space can be read; only its owner updates or deletes it. Deleting a memocard deletes its questions.
  • To generate a content’s memocards with AI, see AI generations.

The Memocard object

A memocard (flashcard): a front, a back, reviewed with spaced repetition.

FieldTypeDescription
idalways presentstring (uuid)Memocard identifier (UUID).
contentIdalways presentstring | nullContent the memocard belongs to.
frontalways presentstring | nullFront side: the prompt or title.
backalways presentstring | nullBack side, as plain text (formulas between $…$, $$…$$).
explanationalways presentstring | nullOptional explanation, or null.
retentionalways presentnumber | nullfrom 0 to 1Estimated retention for the account (0 to 1, spaced-repetition model), given in lists; null when never reviewed or on a single read.
lastReviewedAtalways presentstring (date-time) | nullLast review by the account, given in lists; null when never reviewed or on a single read.
createdAtalways presentstring (date-time) | nullCreation instant (ISO 8601, UTC).
updatedAtalways presentstring (date-time) | nullLast update instant (ISO 8601, UTC).
Memocard
{
  "id": "c5e8a1b2-3d4f-4a6b-9c8d-7e6f5a4b3c21",
  "contentId": "3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87",
  "front": "Where does photosynthesis take place?",
  "back": "In the chloroplasts, mainly in the leaves.",
  "explanation": null,
  "retention": 0.82,
  "lastReviewedAt": "2026-10-03T18:12:00.000Z",
  "createdAt": "2026-10-01T14:05:00.000Z",
  "updatedAt": "2026-10-01T14:05:00.000Z"
}

List the memocards of a content

GET/v1/contents/{contentId}/memocardsScope memocards:read

Memocards of the content, in its order, paginated. retention and lastReviewedAt are those of the account the key acts for.

Parameters

FieldInTypeDescription
contentIdrequiredpathstring (uuid)Content identifier (UUID).
limitoptionalqueryintegerfrom 1 to 100 · default 20Number of items per page, 1 to 100 (default 20).
cursoroptionalquerystringat most 200 charactersOpaque cursor: the nextCursor of the previous page. Keep the same limit from one page to the next.

Response 200

A page of memocards — A page of Memocard { data, nextCursor, hasMore }

Errors

HTTPMeaning
400validation_error or invalid_cursor
401invalid_api_key or revoked_api_key
403insufficient_scope, account_suspended, live_not_enabled or forbidden
404not_found — the content does not exist or is not visible to this key
406not_acceptable — the Accept header excludes application/json
429rate_limited or test_quota_exceeded — see the Retry-After and RateLimit-* headers
500internal_error
503unavailable — see the Retry-After header
Request
curl "https://api.memojin.com/v1/contents/3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87/memocards?limit=20" \
  -H "Authorization: Bearer $MEMOJIN_API_KEY"
Response 200
{
  "data": [
    {
      "id": "c5e8a1b2-3d4f-4a6b-9c8d-7e6f5a4b3c21",
      "contentId": "3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87",
      "front": "Where does photosynthesis take place?",
      "back": "In the chloroplasts, mainly in the leaves.",
      "explanation": null,
      "retention": 0.82,
      "lastReviewedAt": "2026-10-03T18:12:00.000Z",
      "createdAt": "2026-10-01T14:05:00.000Z",
      "updatedAt": "2026-10-01T14:05:00.000Z"
    }
  ],
  "nextCursor": null,
  "hasMore": false
}

Create a memocard

POST/v1/contents/{contentId}/memocardsScope memocards:write

Adds a memocard at the end of the content. Answers 201 with the memocard and its Location.

Parameters

FieldInTypeDescription
contentIdrequiredpathstring (uuid)Content identifier (UUID).
Idempotency-KeyoptionalheaderstringStrongly recommended. A unique value per operation (UUID v4), reused unchanged on every retry. Within 24 hours, the same key and the same request replay the first response (Idempotent-Replayed: true) without a second effect or charge; another request with the same key → 422 idempotency_key_reused; still running → 409 idempotency_in_progress.

Request body CreateMemocardRequest

A new memocard.

FieldTypeDescription
frontrequiredstring1 to 2000 charactersFront side (1 to 2,000 characters).
backrequiredstring1 to 20000 charactersBack side, plain text (formulas between $…$).
explanationoptionalstring | nullat most 5000 charactersOptional explanation.

Response 201

The memocard created — A Memocard object

Errors

HTTPMeaning
400validation_error or bad_request
401invalid_api_key or revoked_api_key
403insufficient_scope, account_suspended, live_not_enabled or forbidden
404not_found — the content does not exist or is not visible to this key
406not_acceptable — the Accept header excludes application/json
409idempotency_in_progress — retry after Retry-After (1 s)
413payload_too_large
415unsupported_media_type
422idempotency_key_reused, or a business rule (see the description)
429rate_limited or test_quota_exceeded — see the Retry-After and RateLimit-* headers
500internal_error
503unavailable — see the Retry-After header
Request
curl -X POST "https://api.memojin.com/v1/contents/3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87/memocards" \
  -H "Authorization: Bearer $MEMOJIN_API_KEY" \
  -H "Idempotency-Key: 6f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87" \
  -H "Content-Type: application/json" \
  -d '{
  "front": "Where does photosynthesis take place?",
  "back": "In the chloroplasts, mainly in the leaves."
}'
Response 201
{
  "id": "c5e8a1b2-3d4f-4a6b-9c8d-7e6f5a4b3c21",
  "contentId": "3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87",
  "front": "Where does photosynthesis take place?",
  "back": "In the chloroplasts, mainly in the leaves.",
  "explanation": null,
  "retention": 0.82,
  "lastReviewedAt": "2026-10-03T18:12:00.000Z",
  "createdAt": "2026-10-01T14:05:00.000Z",
  "updatedAt": "2026-10-01T14:05:00.000Z"
}

Retrieve a memocard

GET/v1/memocards/{memocardId}Scope memocards:read

One memocard visible to the account the API key acts for (its own, or shared with it through a space). Answers 304 to a matching If-None-Match.

Parameters

FieldInTypeDescription
memocardIdrequiredpathstring (uuid)Memocard identifier (UUID).

Response 200

The memocard — A Memocard object

Errors

HTTPMeaning
400validation_error — an identifier is not a UUID
401invalid_api_key or revoked_api_key
403insufficient_scope, account_suspended, live_not_enabled or forbidden
404not_found
406not_acceptable — the Accept header excludes application/json
429rate_limited or test_quota_exceeded — see the Retry-After and RateLimit-* headers
500internal_error
503unavailable — see the Retry-After header
Request
curl "https://api.memojin.com/v1/memocards/c5e8a1b2-3d4f-4a6b-9c8d-7e6f5a4b3c21" \
  -H "Authorization: Bearer $MEMOJIN_API_KEY"
Response 200
{
  "id": "c5e8a1b2-3d4f-4a6b-9c8d-7e6f5a4b3c21",
  "contentId": "3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87",
  "front": "Where does photosynthesis take place?",
  "back": "In the chloroplasts, mainly in the leaves.",
  "explanation": null,
  "retention": 0.82,
  "lastReviewedAt": "2026-10-03T18:12:00.000Z",
  "createdAt": "2026-10-01T14:05:00.000Z",
  "updatedAt": "2026-10-01T14:05:00.000Z"
}

Update a memocard

PATCH/v1/memocards/{memocardId}Scope memocards:write

Changes the front, the back or the explanation. Owner only.

Parameters

FieldInTypeDescription
memocardIdrequiredpathstring (uuid)Memocard identifier (UUID).

Request body UpdateMemocardRequest

The fields to change; the others stay as they are.

FieldTypeDescription
frontoptionalstring1 to 2000 charactersNew front side.
backoptionalstring1 to 20000 charactersNew back side, plain text.
explanationoptionalstring | nullat most 5000 charactersNew explanation, or null to clear it.

Response 200

The memocard updated — A Memocard object

Errors

HTTPMeaning
400validation_error or bad_request
401invalid_api_key or revoked_api_key
403insufficient_scope, account_suspended, live_not_enabled or forbidden
404not_found
406not_acceptable — the Accept header excludes application/json
412precondition_failed — If-Match does not match the current ETag
413payload_too_large
415unsupported_media_type
429rate_limited or test_quota_exceeded — see the Retry-After and RateLimit-* headers
500internal_error
503unavailable — see the Retry-After header
Request
curl -X PATCH "https://api.memojin.com/v1/memocards/c5e8a1b2-3d4f-4a6b-9c8d-7e6f5a4b3c21" \
  -H "Authorization: Bearer $MEMOJIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "back": "In the chloroplasts."
}'
Response 200
{
  "id": "c5e8a1b2-3d4f-4a6b-9c8d-7e6f5a4b3c21",
  "contentId": "3f1c2b0e-8d4a-4f7e-9a51-3c2d1e0f9b87",
  "front": "Where does photosynthesis take place?",
  "back": "In the chloroplasts, mainly in the leaves.",
  "explanation": null,
  "retention": 0.82,
  "lastReviewedAt": "2026-10-03T18:12:00.000Z",
  "createdAt": "2026-10-01T14:05:00.000Z",
  "updatedAt": "2026-10-01T14:05:00.000Z"
}

Delete a memocard

DELETE/v1/memocards/{memocardId}Scope memocards:write

Deletes the memocard and its questions. Owner only. Answers 204 without a body.

Parameters

FieldInTypeDescription
memocardIdrequiredpathstring (uuid)Memocard identifier (UUID).

Response 204

Deleted — No response body.

Errors

HTTPMeaning
400validation_error — an identifier is not a UUID
401invalid_api_key or revoked_api_key
403insufficient_scope, account_suspended, live_not_enabled or forbidden
404not_found
406not_acceptable — the Accept header excludes application/json
412precondition_failed — If-Match does not match the current ETag
429rate_limited or test_quota_exceeded — see the Retry-After and RateLimit-* headers
500internal_error
503unavailable — see the Retry-After header
Request
curl -X DELETE "https://api.memojin.com/v1/memocards/c5e8a1b2-3d4f-4a6b-9c8d-7e6f5a4b3c21" \
  -H "Authorization: Bearer $MEMOJIN_API_KEY"