For AI agents: the complete documentation index is available at https://docs.flashnerd.com/llms.txt, the full documentation bundle is available at https://docs.flashnerd.com/llms-full.txt, and this page is available as Markdown at https://docs.flashnerd.com/reference/flashnerd-format/cards-only.md.
Skip to main content

Cards-only files for an existing deck

Use a cards-only .flashnerd archive when the destination deck already exists. Its template supplies the field definitions, order, sides, and inherited settings. This file works through that deck's Add Card flow. For an archive defining its own decks, use the format overview and its linked deck, card, and field definitions.

Get the correct field IDs

  1. Open the destination deck and tap Add Card.
  2. Choose the Flashnerd file option and tap Download Starter Template.
  3. Open the downloaded file as a ZIP on your computer, or give it to an AI tool that can inspect files.
  4. Read the example in content/cards/00000.jsonl. Preserve its field IDs and types; replace its blank values with your content.
  5. Duplicate the anonymous card line for each additional new card. Keep one complete JSON object per physical line.

The starter contains a blank example card for this template and no existing study content. It has no deck record; an optional export manifest can be omitted. A field's label such as Term is not its ID. Do not guess IDs from names or copy IDs from another deck's starter.

Archive contents

Archive root
└── content/
    └── cards/
        └── 00000.jsonl

If the destination's actual field IDs were term and definition, and both were text fields, this would be a complete card line:

{"values":{"term":{"type":"text","value":"What is the largest planet?"},"definition":{"type":"text","value":"Jupiter"}}}

These IDs are illustrative. Substitute the IDs from your downloaded starter. This example is not a universal template for every deck.

  • Omit deckId from every card, including explicit null. The selected deck supplies it.
  • Do not include content/decks/*.jsonl, even an empty deck file. A deck file switches the archive to ordinary package handling.
  • Omit a new card's own id. Missing values or missing entries within values leave those fields blank; each supplied entry must contain the matching type.
  • Referenced tags require matching records in content/tags/*.jsonl inside this archive. Tags already in the app do not satisfy missing archive references.
  • Include actual files directly under media/ for image/audio values. Follow the media reference.
  • Do not include folders, presets, preferences, SRS sets, schedules, or history. Cards, their tags, and media are the supported contents; an informational manifest is ignored.

All field value and settings rules still apply, including valid TTS source fields and settings inheritance. Compress the archive contents with STORE or DEFLATE, keep content/ at the root, and save with the .flashnerd extension.

Preview and import

Select the completed file under Flashnerd File, tap Next, inspect the cards, then tap Import Cards. The import guide has the full steps.

Keep Override existing off when you want new copies. Anonymous cards always create new records, including when override is on. To update a card, retain its actual stored ID from an app export and enable override. An ID belonging to another deck cannot update a card here. Matching updates preserve the existing card's study progress.

Add Card does not restore card timestamps from the file. New cards receive the import time for both creation and update dates; matching updates preserve the existing creation date and refresh the update date. This also applies to ordinary archives imported through Add Card. See timestamp handling.

The destination cannot grow beyond 20,000 cards. If its template changes while you prepare the import, select the file again to check it against the updated template. Review duplicate cards before importing another copy.

Using a full archive in Add Card

Add Card also accepts an ordinary archive containing cards from exactly one source deck. In that form, retain the deck record and the cards' deckId references. The source template must match all destination fields: matching checks original field IDs first, then trimmed, case-sensitive name, type, and side. Missing, extra, or ambiguous template fields fail. Individual cards can still omit values for blank fields.

Do not mix ordinary and cards-only records or expect the selected destination to repair missing references in an ordinary archive. For new content targeting an existing deck, the downloaded starter avoids this extra template-matching step.

Instructions to give an AI

Attach the downloaded starter along with this prompt:

Inspect this Flashnerd starter ZIP for my EXISTING destination deck.
Create [NUMBER] cards about [TOPIC], using its exact field IDs and types.
Follow https://docs.flashnerd.com/reference/flashnerd-format/cards-only.html
and the linked field-value reference for non-text fields.

Preserve the starter's values keys and type strings. Do not infer IDs from
field labels. If you cannot inspect the starter, ask me for its JSONL
contents before generating cards. Do not guess a destination template.

Return an unencrypted .flashnerd ZIP with content/cards/00000.jsonl at the
archive root. Use UTF-8, one complete JSON object per physical line.
Omit every card's deckId and id, and do not include a deck file, settings,
presets, schedules, or review history. Include tags or media only when
actually supplied and referenced correctly. Do not invent media assets.

State what you checked. I will review the file through this deck's Add Card
flow before importing it.
If you cannot create files, return exact filenames, JSONL contents, and
Python standard-library packaging instructions instead.

Validation needs the destination

The ordinary card schema requires deckId, so it is not the schema for a cards-only record. Do not add a fake deckId to satisfy that schema. A schema mismatch does not mean a correctly prepared cards-only file is invalid.

Check a cards-only file through that deck's Add Card preview. See validation.