# Export records to JSONL

Use **Export records to JSONL** to load records from a data source and append them to a JSON Lines file within an allowed filesystem sandbox. JSONL stores one JSON value per line, which is useful for processing records with other tools.

This starter writes to its configured destination. It does not automatically download the file into your browser.

## Configure the export

| Parameter | What to enter |
| --- | --- |
| `workflow_name` | A nonempty workflow name. |
| `data_source_id` | The source whose retained records should be exported. |
| `limit` | Maximum records loaded for this nonbatched selection: 1–5,000, default 500. |
| `root_path` | The permitted sandbox root supplied for this filesystem destination. |
| `relative_path` | File path inside that root; default `exports/records.jsonl`. |

Use an approved root available to the destination. A local path on your own computer is not automatically accessible to the workflow. The relative path must stay within the allowed root; traversal outside it is not a valid way to reach another directory.

## Create and verify

1. Choose the template and select the source identity.
2. Set a small limit and a test output file.
3. Create the workflow and inspect `load → export`.
4. Validate the definition and start a Manual run.
5. Inspect the file through its supported destination access.
6. Confirm the number of JSON lines and sample record contents.

The loader requests the configured number of records. This recipe does not enable source batching, so a successful export at the limit is not proof that the complete source was exported. Increase scope deliberately or adapt the workflow for supported paging when you need a full dataset.

The destination uses the filesystem connector with `format: jsonl`. Preserve valid JSON values if downstream tools expect to parse each line independently.

## Repeat safely

The recipe supplies an idempotency key based on the run identity. A separate new run has a new identity and can append the records again. Check the existing file and decide whether you want accumulation or a separately named export before repeating the process.

If execution fails, inspect whether earlier lines were written. Permission problems, unavailable sandbox roots, invalid relative paths, and record-loading limits are different causes and need different fixes.

See [Write via connector](/docs/steps/connector-write), [Data](/docs/data/overview), and [workflow reliability](/docs/workflows/reliability).

## Prepared job settings

The starter is enabled and uses a Manual trigger. These settings are supplied by the recipe; review them in the editor before adapting the process. `${…}` values below refer to the corresponding template parameter or run variable.

| Setting | Prepared value |
| --- | --- |
| `load.config.data_source_id` | `"${data_source_id}"` |
| `load.config.limit` | `"${limit}"` |
| `export.config.connector` | `"fs"` |
| `export.config.config.root_path` | `"${root_path}"` |
| `export.config.config.relative_path` | `"${relative_path}"` |
| `export.config.config.format` | `"jsonl"` |
| `export.config.idempotency_key_template` | `"fs-export:${run_id}"` |
