CLI
verdictan export-jobs
Use verdictan export-jobs to export the governance events of your organization for a range of calendar days. The control plane prepares the file in the background, so you can export a large window and download the file later.
This command group exports governance events only. It does not export Trail records or History content. For Trail records, use verdictan trail export. For a small window that you want immediately, use verdictan events export.
Before you start
- A CLI credential:
VERDICTAN_API_TOKEN, or a session fromverdictan auth login. - For
create, theexports:writepermission. Forlist,get, anddownload, theexports:readpermission. - The region that holds the events. A job belongs to the organization and to the region that the profile or
--regionselects. Use the same profile and region for each command.
Create and download a CSV
-
Start a job for the last seven days and wait for it to finish:
verdictan export-jobs create --since 7d --format csv --waitResult: the command prints
job <job-id> completed. -
Copy the job ID, and examine the job record:
JOB_ID="replace-with-the-completed-job-id" verdictan export-jobs get --job-id "$JOB_ID"The output shows the status, the format, the date window, and the number of rows.
-
Download the file:
verdictan export-jobs download --job-id "$JOB_ID" > request-decisions.csv -
Count the lines in the file, and compare the count with
rowsin the job record. The first line is the header:wc -l request-decisions.csv
If --wait stops before the job finishes, the job continues in the control plane. Run get with the same job ID. Do not create a second job for the same window.
For file-integrity checks and a reviewer handoff, follow Export evidence for a review.
Formats
create --format accepts these values:
| Value | Artifact | Use |
|---|---|---|
csv | CSV, one row for each event | Review in a spreadsheet |
json | JSON object with an events array | Process with a program |
compliance-aesia | JSON report | AESIA evidence review |
compliance-aepd | JSON report | AEPD evidence review |
compliance-ens | JSON report | ENS evidence review |
compliance-all | .tar.gz bundle with one JSON report for each framework and a manifest | A combined evidence package |
The CSV columns are event_id, timestamp, event_type, request_id, verdict, reason_code, config_version, total_cost_usd, currency, and base_cost_usd.
The compliance-all bundle contains the reports for the compliance frameworks that the organization selects. If the organization selects no framework, the bundle contains all three reports. A compliance report is an evidence summary. It is not a certification.
Lifecycle states
| State | Meaning | Next action |
|---|---|---|
queued | The API accepted the job. A worker has not started it. | Wait, then run get again. |
processing | A worker is building the artifact. | Wait. Do not create a duplicate job. |
completed | The artifact is ready. download_ready is true while the artifact is stored. | Run download. |
failed | Processing stopped. | Read failure_message. Correct the cause, then create a new job. |
expired | The retention period ended and the API deleted the artifact. | Create a new job for the same window. |
A completed job has an expires_at time when the deployment or the organization sets an export retention period. Without a retention period, expires_at is null and the artifact does not expire.
verdictan export-jobs list
verdictan export-jobs list sends GET /v1/exports/jobs and prints the export jobs of the organization, newest first.
Usage
verdictan export-jobs list [--json]Options
| Flag | Description |
|---|---|
--json | Print the full API response. |
--config <path>, --api-url <url>, --profile <name>, --region <region> | Standard connection and profile overrides. |
Examples
verdictan export-jobs list
verdictan export-jobs list --jsonIn text mode, the command prints one line for each job: <job-id> <status> <format> <requested-at>. If the organization has no jobs, it prints no export jobs.
The command reads one page of the API response. The API returns the 50 newest jobs by default. The CLI does not request more pages.
With --json, the response has a jobs array, a queue_topic, and a next_cursor when there are more jobs. Each job has these fields:
| Field | Description |
|---|---|
job_id | Job ID, such as exp_<id>. |
status | Lifecycle state. |
format, export_type | Artifact format and data source. The CLI always exports events. |
start_date, end_date | The inclusive date window. |
requested_at, completed_at, expires_at | Lifecycle times. |
event_count, file_name, file_size_bytes | Artifact details after completion. |
download_ready | true when the job is completed and the artifact is stored. |
failure_message | The reason for a failed state. |
attempt_count, claimed_by, claimed_at, claim_expires_at | Worker processing data. |
integrity | For a completed job: the artifact SHA-256, the manifest SHA-256, the artifact size, the event count, the recording time, and the append_only and legal_hold indicators. |
verdictan export-jobs get
verdictan export-jobs get prints the record of one job.
Usage
verdictan export-jobs get --job-id <id> [--json]Options
| Flag | Description |
|---|---|
--job-id <id> | Mandatory job ID from create or list. |
--json | Print the job object as JSON. |
--config <path>, --api-url <url>, --profile <name>, --region <region> | Standard connection and profile overrides. |
Examples
verdictan export-jobs get --job-id "$JOB_ID"
verdictan export-jobs get --job-id "$JOB_ID" --jsonIn text mode, the command prints the job ID, the status, the format, the request time, the date window, and the row count. For a failed job, it also prints the failure message.
The command has no API endpoint of its own. It reads the same job list as list and finds the job ID in that list. A job that is not in the 50 newest jobs, or that belongs to a different organization or region, gives export job <id> not found.
verdictan export-jobs create
verdictan export-jobs create sends POST /v1/exports/jobs with a start date, an end date, and a format.
Usage
verdictan export-jobs create --format <format> --since <duration> [--wait] [--wait-timeout-secs <n>] [--json]
verdictan export-jobs create --format <format> --start-date <YYYY-MM-DD> --end-date <YYYY-MM-DD> [--wait] [--wait-timeout-secs <n>] [--json]Options
| Flag | Description |
|---|---|
--format <format> | Mandatory export format. Use a value from Formats. |
--since <duration> | Relative window: a positive integer followed by h or d, such as 24h or 30d. |
--start-date <YYYY-MM-DD> | Inclusive start date. Use it with --end-date. |
--end-date <YYYY-MM-DD> | Inclusive end date. Use it with --start-date. |
--wait | Poll the job list every two seconds until the job is completed, failed, or expired, or until the timeout. |
--wait-timeout-secs <n> | Maximum number of seconds for --wait. The default is 120. |
--json | Print the create response. With --wait, print the completed job object. |
--config <path>, --api-url <url>, --profile <name>, --region <region> | Standard connection and profile overrides. |
The API exports whole calendar days. With --since, the CLI subtracts the duration from the current UTC time and sends two dates: the date of that start time and the current date. For example, --since 24h gives two full days, not 24 hours. If you also supply --start-date and --end-date, the CLI ignores --since.
One job can cover at most 366 days.
Examples
# The last 30 days as CSV
verdictan export-jobs create --since 30d --format csv
# Fixed inclusive dates as JSON
verdictan export-jobs create \
--start-date 2026-07-01 \
--end-date 2026-07-31 \
--format json
# A combined compliance bundle, with a longer wait, as JSON for automation
verdictan export-jobs create \
--since 7d \
--format compliance-all \
--wait \
--wait-timeout-secs 300 \
--jsonIn text mode, the command prints created export job <job-id>. With --wait, it prints job <job-id> completed when the job is complete.
create --wait does not save the artifact. Run download after the job completes.
verdictan export-jobs download
verdictan export-jobs download sends GET /v1/exports/jobs/<id>/download and writes the artifact bytes to standard output.
Usage
verdictan export-jobs download --job-id <id> > <file>Options
| Flag | Description |
|---|---|
--job-id <id> | Mandatory ID of a completed job. |
--config <path>, --api-url <url>, --profile <name>, --region <region> | Standard connection and profile overrides. |
Examples
# Save a CSV artifact
verdictan export-jobs download --job-id "$JOB_ID" > export-evidence.csv
# Save a combined compliance bundle
verdictan export-jobs download --job-id "$JOB_ID" > compliance-evidence.tar.gzUse a file extension that matches the job format. When the deployment stores artifacts in object storage, the API can answer with a temporary redirect to the storage location. The CLI follows the redirect and writes the bytes.
After the download:
- Compare the file with the dates, the format, and the row count of the job.
- Calculate the SHA-256 of the file with your approved evidence tool.
- Compare the result with
integrity.artifact_sha256fromget --json. Do not compare it withmanifest_sha256, which identifies the evidence manifest. - Store and share the file through your approved evidence process.
The CLI has no manifest subcommand. To read the stored manifest and integrity record, call the API:
curl --fail --silent --show-error \
--header "Authorization: Bearer $VERDICTAN_API_TOKEN" \
"$VERDICTAN_API_URL/v1/exports/jobs/$JOB_ID/manifest"Limits and failure behavior
- The job exports all governance events of the organization in the date window. The
export_typeis alwaysevents. createneeds--since, or--start-dateand--end-datetogether. With only one date flag, it stops with--start-date and --end-date must be provided together.createstops withinvalid --start-date: expected YYYY-MM-DDfor a date in a different format, and with--start-date must be on or before --end-datefor a reversed window.createstops with--since duration must be greater than zerofor a zero or negative value. A suffix other thanhordgivesinvalid duration '<value>': use a suffix like '7d' or '24h'.- A window longer than 366 days gives HTTP
422(exports.date_span_too_large). The CLI printsapi validation failed (422). - If the API cannot queue the job, it marks the job
failedand returns HTTP503(exports.queue_unavailable). - With
--wait, a failed job stops the command withexport job <job-id> failed: <failure_message>. An expired job stops it withexport job <job-id> expired before it became downloadable. - A
--waittimeout givesexport job <job-id> did not complete within <n> seconds. Only the local polling stops. The job continues in the control plane. getand--waitread only the 50 newest jobs. When the organization creates many jobs, an older job is not found.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
download failed with status 409 | The job is not completed (exports.not_ready). | Run get until the status is completed. |
download failed with status 410 | The artifact expired or is not available (exports.expired). | Create a new job for the same window. |
download failed with status 404 | The job does not exist in this organization and region. | Use the same profile and --region as create. |
export job <id> not found from get | The job is in a different organization or region, or it is not in the 50 newest jobs. | Check the profile and region. Use list --json to find the job. |
api authorization failed (403), or download failed with status 403 | The credential does not have exports:read or exports:write. | Ask an administrator for a role with the export permissions. |
| The file has fewer events than you expect | The events are in a different region, outside the date window, or not delivered yet. | Check the region and the dates, then create a new job. |
Next steps
- Export Evidence for a Review: put the export artifact into an evidence package.
- verdictan events: export a small window immediately.
- verdictan trail: export Trail records, which this command group does not export.
- Permissions Reference: grant
exports:readandexports:write.