×
Card JSON Schema Guide
Use this guide to understand how to build and format your cards.
1. Base Information
Every card needs these core attributes to show up in the library.
"id": "unique-card-123", // Must be unique!
"title": "My Card Name",
"path": ["Shelf Name", "Book Name"], // Generates the sidebar folders
"tags": ["tag1", "tag2"] // Helps with search
2. Media (Optional)
All media must be placed inside the media/ folder of your ZIP package.
"media": {
"coverImage": "media/my-image.jpg",
"audio": "media/voice-note.mp3",
"attachments": [
{ "name": "Cheat Sheet", "file": "media/doc.pdf" }
]
}
3. Reference Mode (Optional)
The reading mode for the card. Text supports Markdown : headers (#), **bold**, *italic*, `code`, lists, > quotes, [links](url), tables, and ``` fenced code blocks. Existing HTML also still works.
"reference": {
"enabled": true,
"blocks": [
{ "type": "text", "content": "## Markdown works here\n- point one\n- point two" },
{ "type": "image", "file": "media/diagram.jpg" },
{ "type": "video", "file": "media/clip.mp4" },
{ "type": "video", "url": "https://www.youtube.com/embed/..." },
{ "type": "audio", "file": "media/note.m4a" },
{ "type": "code", "language": "js", "content": "console.log('hi');" },
{ "type": "quote", "content": "Well begun is half done.", "cite": "Aristotle" },
{ "type": "callout", "variant": "tip", "content": "Variants: note, tip, warning" },
{ "type": "divider" }
]
}
4. Process Engine (Optional)
Creates a step-by-step swiping workflow. You can optionally ask for input to generate a report.
"process": {
"enabled": true,
"steps": [
{ "id": 1, "text": "Basic instruction step." },
{
"id": 2,
"text": "Step asking for data.",
"input": { "type": "text", "prompt": "Enter notes:" }
}
]
}
5. Testing Engine (Optional)
Creates flashcards and multiple-choice quizzes.
"testing": {
"enabled": true,
"flashcard": {
"front": "Question?",
"back": "Answer!"
},
"quiz": [
{
"question": "Which is correct?",
"options": ["Wrong", "Right", "Wrong"],
"correctIndex": 1
}
]
}