Skip to content

Analytics exports

geni analytics produces flat, denormalized data for spreadsheets, audits, and custom reports. It provides three exports:

Command API endpoint One row per
geni analytics submission GET /analytics/submissions Submission
geni analytics task GET /analytics/tasks Task
geni analytics instance GET /analytics/instances Compute instance

These exports differ from geni stats, which returns aggregate counts, and geni costs, which returns cost rollups.

Export failed submissions created in January to CSV:

Terminal window
geni analytics submission \
--start-date 2026-01-01 \
--end-date 2026-01-31 \
--submission-status FAILED \
--format csv > january-failures.csv

Both dates are UTC and inclusive. Repeat --submission-status to include more than one status. When it is omitted, the export includes terminated submissions: SUCCEEDED, FAILED, and CANCELLED.

Option Default Description
--start-date YYYY-MM-DD No lower bound Include submissions created on or after this UTC date.
--end-date YYYY-MM-DD No upper bound Include submissions created on or before this UTC date.
--submission-status STATUS Terminated statuses Filter by status; repeat the option to include multiple statuses.
--limit N All matches Return at most N rows. Without it, the CLI retrieves every page.
--format table|json|csv table Select the output format.

The table and CSV formats use the column labels below. JSON uses the corresponding snake-case field names shown in parentheses.

Column Description
Submission ID (submission_id) Submission UUID.
Status (status) Current submission status.
Created At (created_at) Time the submission was created.
Started At (started_at) Time execution began, when available.
Stopped At (stopped_at) Time the submission reached a terminal state, when available.
Duration (s) (duration_seconds) Wall-clock time from start to stop, in seconds.
Compute Cost ($) (compute_cost) Rolled-up task and engine compute cost in USD.
Storage Cost ($) (storage_cost) Submission’s share of its engine execution-bucket cost for that day.
Total Cost ($) (total_cost) Compute plus storage cost; empty until both values are available.
Failure Reason (failure_reason) Reason from the first relevant failed task; populated only for failed submissions.
Workflow (workflow_name) Registered workflow name.
Workflow Version (workflow_version) Registered workflow version.
Provider (provider) Cloud provider, such as aws or gcp.
Environment (environment_name) Environment name.
Engine (engine_name) Engine name.
Engine Version (engine_version) Workflow-engine version.
Queue (queue_name) Primary queue name.
Queue Mode (queue_mode) Configured execution mode of the primary queue.
Fallback Queue (fallback_queue_name) Fallback queue name, when configured.
Fallback Mode (fallback_queue_mode) Configured execution mode of the fallback queue.
Total Tasks (total_tasks) Number of tasks in the submission.
Failed Tasks (failed_tasks) Number of tasks whose status is FAILED.
Attempts (submission_attempts) Total tracked attempt count; 1 unless the submission was retried.
One column per tag Submission tag value. JSON keeps these values in the tags object.

Export failed tasks from terminated submissions:

Terminal window
geni analytics task \
--start-date 2026-01-01 \
--end-date 2026-01-31 \
--task-status FAILED \
--format csv > january-failed-tasks.csv

The date range filters the task creation time. By default, only tasks belonging to SUCCEEDED, FAILED, or CANCELLED submissions are returned.

Option Default Description
--start-date YYYY-MM-DD No lower bound Include tasks created on or after this UTC date.
--end-date YYYY-MM-DD No upper bound Include tasks created on or before this UTC date.
--submission-status STATUS Terminated statuses Filter by parent submission status; repeat for multiple statuses.
--task-status STATUS All task statuses Filter by task status; repeat for multiple statuses.
--limit N All matches Return at most N rows. Without it, the CLI retrieves every page.
--format table|json|csv table Select the output format.
Column Description
Task ID (task_id) Task UUID.
Submission ID (submission_id) Parent submission UUID.
Sub. Status (submission_status) Parent submission status.
Job Name (job_name) Provider job name, when available.
Attempts (task_attempts) Total tracked attempt count (distinct Batch jobs), floored at 1; rises above 1 after a fallback-queue resubmission.
Status (status) Current task status.
Created At (created_at) Time the task was created.
Started At (started_at) Time the task began running, when available.
Stopped At (stopped_at) Time the task reached a terminal state, when available.
Runnable Time (s) (runnable_duration_seconds) Queue wait from runnable to starting, in seconds.
Execution Time (s) (execution_duration_seconds) Time from starting to the terminal state, in seconds.
Est. Cost ($) (estimated_cost_usd) Sum of the task’s attempt costs in USD; empty until calculated.
Cost Consolidated (cost_is_consolidated) true when the underlying instance cost has been replaced with billing data; false while estimated.
Failure Reason (failure_reason) Provider status reason; empty for succeeded and cancelled tasks.
Exit Code (exit_code) Container exit code, when available.
vCPUs (vcpus) vCPUs allocated to the task.
Memory (GB) (memory_gb) Memory allocated to the task, in GB.
Instance Type (instance_type) Compute instance type that ran the task.
Market (market_type) Realized market type, such as spot or on-demand.
Provider (provider) Cloud provider.
Workflow (workflow_name) Registered workflow name.
Workflow Version (workflow_version) Registered workflow version.
Environment (environment_name) Environment name.
Engine (engine_name) Engine name.
Engine Version (engine_version) Workflow-engine version.
Queue (queue_name) Primary queue name.
Queue Mode (queue_mode) Configured execution mode of the primary queue.
Fallback Queue (fallback_queue_name) Fallback queue name, when configured.
Fallback Mode (fallback_queue_mode) Configured execution mode of the fallback queue.

JSON additionally includes task_key, the stable key shared by fallback-queue retries, and job_attempts, in-job Batch container retries summed across the row’s attempts — not the same as the task_attempts column above, which counts distinct Batch jobs.

Export instances launched in January for one queue:

Terminal window
geni analytics instance \
--start-date 2026-01-01 \
--end-date 2026-01-31 \
--queue-id <queue-id> \
--format csv > january-instances.csv

The date range filters instance launch time. Attached-volume totals include volumes created by autoscaling, making the export useful for finding workloads whose disks grew beyond their initial size.

Option Default Description
--start-date YYYY-MM-DD No lower bound Include instances launched on or after this UTC date.
--end-date YYYY-MM-DD No upper bound Include instances launched on or before this UTC date.
--environment-id ID All environments Filter by environment UUID.
--queue-id ID All queues Filter by queue UUID.
--limit N All matches Return at most N rows. Without it, the CLI retrieves every page.
--format table|json|csv table Select the output format.
Column Description
Instance ID (instance_id) GENI instance UUID.
Cloud ID (cloud_id) Provider instance identifier, such as an EC2 instance ID.
Instance Type (instance_type) Provider instance type.
CPUs (cpus) Number of CPUs on the instance.
Memory (GB) (memory_gb) Instance memory in GB.
Volume Count (volume_count) Number of attached volumes recorded for the instance.
Volume Total (GB) (volume_total_gb) Sum of the attached volumes’ sizes, including autoscaled volumes.
Market (market_type) Realized market type, such as spot or on-demand.
Provider (provider) Cloud provider.
Environment (environment_name) Environment name.
Queue (queue_name) Queue name.
Launched At (launch_time) Instance launch time.
Stopped At (termination_time) Instance termination time, when available.

The API uses ISO 8601 timestamps. Its from boundary is inclusive and its to boundary is exclusive. All three endpoints accept limit (1–1000, default 50) and offset (default 0), and return { items, total, limit, offset }.

Endpoint Additional query parameters
GET /analytics/submissions from, to, and repeatable submissionStatus; filters created_at.
GET /analytics/tasks from, to, repeatable submissionStatus, and repeatable taskStatus; filters created_at.
GET /analytics/instances from, to, environmentId, and queueId; filters launch_time.

Platform users must also pass the tenant UUID as tenantId. Tenant users cannot override their tenant. The API field names and meanings match the column tables above.