> 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.

# 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](https://docs.flashnerd.com/reference/flashnerd-format/index.md) 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

```text
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:

```jsonl
{"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](https://docs.flashnerd.com/reference/flashnerd-format/media.md).
- 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](https://docs.flashnerd.com/reference/flashnerd-format/fields.md) 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](https://docs.flashnerd.com/guide/import-export/flashnerd.md#add-cards-to-an-existing-deck) 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](https://docs.flashnerd.com/reference/flashnerd-format/package.md#timestamps-and-calendar-dates).

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:

```text
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](https://docs.flashnerd.com/reference/flashnerd-format/validation.md).
