docs
// Tools

erectl files

List, upload, download, and delete files in the platform's Files API, plus walk a whole directory tree with stored relative_paths queryable by prefix or rendered as a tree. Batch inputs, assistant context, fine-tune corpora, one verb each.

Overview

The erectl files command manages files stored in the platform's Files API. Files are used primarily as batch input and output containers, but can also be uploaded for general purposes such as assistant context.

The command follows the unified pattern:

erectl files
List files
erectl files <file_id>
Show file details
erectl files <file_id> --delete
Delete a file
erectl files <file_id> --download <path>
Download file content
erectl files --upload <path> --purpose <p>
Upload a single file
erectl files --upload <dir> -r
Upload a directory tree

Action flags (--delete, --download, --upload) are mutually exclusive. Only one may be specified per invocation.

Back to erectl CLI overview.

List Files

Omit all IDs and action flags to list files in the current project. The table shows ID, Filename, Purpose, Size, Status, and Created time.

bash
# List all files (default limit: 20) erectl files # Filter by purpose erectl files --purpose batch # Increase result limit erectl files --limit 50 # Combine filters erectl files --purpose assistants --limit 100 # Filter by relative_path prefix (set during directory uploads) erectl files --prefix docs/ # Render the listing as an ASCII directory tree erectl files --tree # JSON output (-o is a global flag; see erectl CLI overview) erectl files -o json

When more results exist beyond the current page, a hint is printed. Use --limit to retrieve more items in a single request. Pagination is bounded by the configured limit; a cursor flag is not exposed by this CLI.

--prefix filters the listing on each file's stored relative_path, which is populated when files are uploaded as part of a directory tree (see Upload a Directory).

--tree renders the result set as an ASCII directory tree using box-drawing connectors (+--, |--), with each leaf annotated with its byte size. Files without a relative_path are rendered at the root by filename. The --prefix and --tree flags are list-only and cannot be combined with --upload.

The global --watch flag is supported in list mode and will re-run the listing on an interval; see the erectl CLI overview for global flags.

Get File

Show the metadata for a specific file by its ID.

bash
# Human-readable key-value output erectl files file-9f1b3c2d4e5f6071829a3b4c # JSON output (full record, including expires_at and x_relative_path) erectl files file-9f1b3c2d4e5f6071829a3b4c -o json

The human-readable detail view shows: ID, Filename, Purpose, Status, Size, and Created time. The server response also carries expires_at and x_relative_path fields; these are not surfaced by the formatted view today. Use -o json to read them.

Upload a File

Upload a local file to the platform. --purpose classifies the file so the server routes and retains it correctly (see Purpose Values for the accepted set). If --purpose is omitted, the CLI sends assistants by default.

bash
# Upload a batch input file erectl files --upload requests.jsonl --purpose batch # Upload with default purpose (assistants) erectl files --upload context.txt # JSON output to capture the file ID erectl files --upload data.jsonl --purpose batch -o json

On success the CLI prints the new file ID, filename, purpose, size, and status. Capture the ID for use in batch creation or other API calls.

Tip: When creating a batch, the erectl batches --input command handles the upload step automatically. Use erectl files --upload when you need the file ID independently. --dry-run does not gate --upload; see Options Reference for its exact scope.

Upload a Directory

Pass a directory path to --upload together with -r/--recursive to walk the tree and upload every regular file beneath it. The CLI computes a relative_path for each entry from its location under the root and forwards that path to the server, where it is stored on the file record and made queryable via --prefix and --tree in list mode.

Required: Directory uploads require -r. Without it the CLI exits with: --upload of a directory requires --recursive (-r).

bash
# Upload every file under ./docs, recursively erectl files --upload ./docs -r --purpose assistants # Include hidden entries (dotfiles, .config, etc.) erectl files --upload ./docs -r --include-hidden # Follow symbolic links (skipped by default) erectl files --upload ./docs -r --follow-symlinks # Strip an absolute prefix from each stored relative_path erectl files --upload /home/me/project/docs -r \ --strip-prefix /home/me/project

// per-entryOutput

Directory uploads print one line per entry plus a summary:

output
[OK] guides/getting-started.md 4.2 KB [OK] guides/upload.md 2.1 KB [FAIL] guides/broken.bin (uploadFailed(...)) 2 uploaded, 1 failed.

The command exits non-zero when one or more entries fail. Entries are uploaded serially; no concurrency flag is exposed.

// flagsDirectory Flags

Flag / Option Description
-r, --recursive Required when --upload points at a directory. Walks the tree and uploads every regular file.
--include-hidden Include hidden entries (names starting with .) when walking a directory. Skipped by default.
--follow-symlinks Follow symbolic links when walking a directory. Skipped by default to avoid cycles.
--strip-prefix <abs> Strip the given absolute path prefix from each computed relative_path before uploading. Useful when the upload root sits deep under your workspace and you want shorter stored paths.

After upload, the stored tree can be inspected with erectl files --tree or filtered with erectl files --prefix <path>/.

Download File Content

Download the raw content of a file to a local path. This is commonly used to retrieve batch output or error files after a batch completes.

bash
# Download to a specific path erectl files file-9f1b3c2d4e5f6071829a3b4c --download output.jsonl # Download to a path under a subdirectory erectl files file-9f1b3c2d4e5f6071829a3b4c --download ./results/batch-output.jsonl

The --download flag requires both a file ID (positional argument) and a destination path. They cannot be combined with --delete or --upload.

Delete a File

Delete a file from the platform. This is permanent and cannot be undone. Use the global --dry-run flag to preview the operation.

bash
# Delete a file erectl files file-9f1b3c2d4e5f6071829a3b4c --delete # Preview without deleting erectl files file-9f1b3c2d4e5f6071829a3b4c --delete --dry-run

There is no confirmation prompt for file deletion. Use --dry-run to verify the target before committing. The flag is honored only by --delete; --upload and --download execute over the wire regardless. See Options Reference for the canonical statement.

Purpose Values

The --purpose flag classifies a file and determines how it is processed and retained by the platform.

Value Description
batch Input or output file for the Batch API. Used with erectl batches --input.
assistants General-purpose file for use as assistant context (default when --purpose is omitted).
vision Image attachments referenced by vision-capable models. Text-only deployments do not consume this class today.
user_data Arbitrary user-supplied data files (datasets, exports, attachments).
fine-tune Training corpora for fine-tuning workflows.

When listing, use --purpose to filter results to a specific category. When uploading, it sets the purpose stored on the file record. The CLI forwards the string as-is; the server validates it against the table above and rejects unknown values with HTTP 400.

Options Reference

Full reference for all flags and options accepted by erectl files.

Action Flags (mutually exclusive)

Flag / Option Requires File ID Description
--delete Yes Permanently delete the file.
--download <path> Yes Download the file content to the given local path.
--upload <path> No Upload a file from the given local path. Cannot be combined with a file ID argument.

List / Upload Options

Option Description
--purpose <value> Filter by purpose when listing, or set purpose when uploading. Default for upload: assistants. See Purpose Values for accepted values.
--limit <n> Maximum number of results when listing. Default: 20.
--prefix <p> List mode only. Filter results to files whose stored relative_path starts with the given prefix. Mutually exclusive with --upload.
--tree List mode only. Render the result set as an ASCII directory tree. Mutually exclusive with --upload.

Directory Upload Flags

Flag / Option Description
-r, --recursive Required when --upload targets a directory. Walks the tree and uploads each regular file with a computed relative_path.
--include-hidden Include hidden entries (names starting with .) during the walk.
--follow-symlinks Follow symbolic links during the walk. Skipped by default.
--strip-prefix <abs> Strip the given absolute path prefix from each computed relative_path before uploading.

Global Flags Used by files

The following flags are defined globally on erectl (see the CLI overview) and are referenced by the files subcommand:

Flag Description
-o <format> Output format. Use -o json to emit machine-readable records on list, get, and upload.
--watch List mode only. Re-runs the listing on an interval.
--dry-run Honored by --delete only. Has no effect on --upload or --download.
--quiet Suppress spinners and per-entry output.

Examples

// 01Upload a Batch Input File and Capture the ID

bash
# Upload and capture file ID with jq FILE_ID=$(erectl files --upload requests.jsonl --purpose batch -o json \ | jq -r '.id') echo "Uploaded: $FILE_ID"

// 02List and Download All Batch Output Files

bash
# List batch files erectl files --purpose batch # Download a specific output file erectl files file-9f1b3c2d4e5f6071829a3b4c --download batch-results.jsonl

// 03Upload a Documentation Tree and Inspect It

bash
# Upload every file beneath ./docs, stripping the workspace prefix erectl files --upload ./docs -r \ --purpose assistants \ --strip-prefix "$(pwd)" # Inspect the resulting tree on the server erectl files --tree # Filter to one subtree erectl files --prefix docs/guides/

// 04Clean Up Old Files

bash
# Preview deletion (--dry-run is honored for --delete only) erectl files file-9f1b3c2d4e5f6071829a3b4c --delete --dry-run # Delete erectl files file-9f1b3c2d4e5f6071829a3b4c --delete

// see also File retention, tiers, and encryption live in Storage.