xeroctl uploads
List, inspect, cancel, and delete upload sessions from the terminal. One verb per action. Bulk operations are not supported.
Overview
xeroctl uploads is the management surface for existing
chunked upload sessions: list, inspect, cancel, delete. New sessions
are created by xeroctl upload, not here.
To start a new upload: xeroctl upload <path> <name>. This page does not initiate transfers.
Related limits (initiating uploads):
- Default chunk size: Xerotier defaults to
100 MiBper chunk. This diverges from OpenAI's64 MBdefault; clients written against the OpenAI SDK may need to set chunk size explicitly when targeting Xerotier. - Maximum upload size: Not a fixed value. The router resolves the maximum allowed size per request via
resolveMaxUploadSize, which honours the caller's tier and project quota. There is no flat 8 GB ceiling; consult your tier configuration for the effective limit.
The command follows the unified pattern:
xeroctl uploads # List upload sessions
xeroctl uploads <id> # Show session details
xeroctl uploads <id> --cancel # Cancel a running session
xeroctl uploads <id> --delete # Delete a session record
--cancel and --delete are mutually exclusive.
Both require an upload session ID.
Back to xeroctl CLI overview.
Command Index
Every xeroctl uploads verb in scan order. Click a row to jump.
| Verb | Invocation | Purpose |
|---|---|---|
| LIST | xeroctl uploads | List sessions. Filterable by --status, capped by --limit. |
| GET | xeroctl uploads <id> | Show one session: status, progress, chunk counts, expiry. |
| CANCEL | xeroctl uploads <id> --cancel | Stop an in-flight session. No further chunks accepted. |
| DELETE | xeroctl uploads <id> --delete | Delete a session record. Currently aliases cancel server-side. |
--cancel and --delete are mutually exclusive. Both
require a session ID. Add --dry-run to preview without
mutating state; add -o json to any verb for machine-readable
output.
List Upload Sessions
Omit all IDs and action flags to list upload sessions. The table shows ID, Filename, Size, Status, Progress, and Created time.
# List all sessions
xeroctl uploads
# Filter by status
xeroctl uploads --status uploading
xeroctl uploads --status pending
xeroctl uploads --status completed
xeroctl uploads --status cancelled
xeroctl uploads --status expired
# Limit the number of results
xeroctl uploads --limit 10
# Combine filter and limit
xeroctl uploads --status uploading --limit 5
# JSON output
xeroctl uploads -o json
When more results exist a hint is printed at the end of the table. Use
--limit to adjust the page size.
--status values are not validated. The flag is forwarded as-is to GET /v1/uploads?status=<value>. Unknown values do not error; they yield an empty list. Use only the values listed under Status Values: pending, uploading, completed, cancelled, expired.
Get Upload Session
Provide an upload session ID to display its full details.
# Human-readable key-value output
xeroctl uploads upl_abc123
# JSON output
xeroctl uploads upl_abc123 -o json
The detail view includes: ID, Status, Filename, Size, Type, Chunk Size, Total Chunks, Uploaded Chunks, Progress, Created, and Expires.
Progress is shown as a percentage string when available. When not directly available, it is computed from the uploaded and total chunk counts.
Cancel Upload
Stop a running or pending session. The session moves to cancelled
and refuses further chunks. Use --dry-run to preview.
# Cancel an upload session
xeroctl uploads upl_abc123 --cancel
# Preview without cancelling
xeroctl uploads upl_abc123 --cancel --dry-run
After cancellation the CLI prints the session ID and updated status.
Delete Upload Session
Drop a session record. The CLI prompts for confirmation unless
--force is set. Use --dry-run to preview.
# Delete with confirmation prompt
xeroctl uploads upl_abc123 --delete
# Skip confirmation
xeroctl uploads upl_abc123 --delete --force
# Preview without deleting
xeroctl uploads upl_abc123 --delete --dry-run
Important: --delete currently maps to the DELETE /v1/uploads/{id} endpoint, which the router implements as an alias for cancel. In effect, --delete on an in-progress session does cancel the underlying transfer rather than only removing a record. Treat --delete and --cancel as having the same server-side effect today.
Status Values
Upload sessions move through the following statuses during their lifecycle.
Use --status when listing to filter to a specific state.
| Status | Description |
|---|---|
pending |
Session created; no chunks have been uploaded yet. |
uploading |
Chunks are actively being received by the platform. |
completed |
Upload finished successfully and the model is available for use. |
cancelled |
Session was cancelled (via --cancel or --delete); no further chunks are accepted. |
expired |
Session passed its expiry deadline before completion and was retired by the platform. |
Options Reference
Full reference for all flags and options accepted by xeroctl uploads.
Action Flags (mutually exclusive)
| Flag | Requires Session ID | Description |
|---|---|---|
--cancel |
Yes | Cancel an active upload session. |
--delete |
Yes | Delete an upload session record. Prompts for confirmation unless --force is set. |
Modifier and List Options
| Option | Description |
|---|---|
--force |
Skip the confirmation prompt when deleting a session. |
--limit <n> |
Maximum number of results when listing (1-100). |
--status <value> |
Filter list results by status. Accepted values: pending, uploading, completed, cancelled, expired. The value is passed through to the API without server-side validation; unknown values yield an empty list. |
Failure Modes
What you see when a command does not succeed, and where to look next. The CLI exits non-zero on every failure; the table below maps the surface signal to its cause.
| Surface | Cause | Remediation |
|---|---|---|
not found on get / cancel / delete |
Session ID does not exist for this project, or already cleaned up at expiry. | Run xeroctl uploads to list current sessions. Use Status Values to scope by state. |
Empty list with --status set |
Either no sessions match or --status value is misspelled (not validated). |
Re-run without --status to confirm sessions exist. Then check the value against Status Values. |
| Conflict / already terminal | Cancel or delete issued against a session already in completed, cancelled, or expired. |
Read the session first: xeroctl uploads <id>. Terminal states do not need a follow-up action. |
| Auth failure (401 / 403) | The configured API key is missing, revoked, or not scoped to this project. | Verify with xeroctl config; rotate via xeroctl keys if needed. |
| Network or 5xx | Transport failure or transient server error. | Retry. Sessions are durable; cancel and delete are idempotent at the API layer. |
Both --cancel and --delete set |
Mutually exclusive flags; CLI rejects before issuing a request. | Pick one. --delete currently aliases cancel server-side; see the warning under Delete Upload Session. |
Examples
Find and Cancel a Stuck Upload
# List sessions stuck in uploading state
xeroctl uploads --status uploading
# Inspect a specific session
xeroctl uploads upl_abc123
# Cancel it
xeroctl uploads upl_abc123 --cancel
Clean Up Completed Sessions
# List completed sessions
xeroctl uploads --status completed
# Delete one without prompt
xeroctl uploads upl_abc123 --delete --force
Watch Active Uploads
# List sessions currently uploading
xeroctl uploads --status uploading
# Check progress of a specific session
xeroctl uploads upl_abc123
Export Session List as JSON
xeroctl uploads -o json | jq '.data[] | {id, status, filename, progressPercent}'