Skip to main content

Batch jobs

Batch jobs run long or large workloads on dedicated instances, rather than on the real-time engine. Each job gets an id you use to poll status, list results, and read logs.

In Python, this endpoint is FusedAPI.start_job(); ingestion jobs reach it through job.run_batch(), which calls start_job internally.

note

udf.map() is a different mechanism. It fans a UDF out across the real-time engine rather than submitting a batch job, so the jobs it creates do not appear in these endpoints.

The job object

Job endpoints return one of two shapes — the submit and status endpoints return a run summary, the listing endpoints return a job record. These fields are common to both:

FieldTypeDescription
instance_idstring | nullInstance running the job
instance_typestring | nullInstance type
disk_size_gbinteger | nullAttached disk size
job_statusstring | nullCurrent status
job_status_datestring | nullTimestamp of the last status change
first_heartbeatstring | nullFirst heartbeat timestamp
last_heartbeatstring | nullMost recent heartbeat timestamp

Submit a job

POST /run

Scope: user or environment

Query parameters

ParameterTypeDescription
instance_typestringInstance type to run on
disk_size_gbintegerDisk size to attach
regionstringRegion to run in

Body

FieldTypeRequiredDescription
configobjectYesThe job configuration
send_status_emailbooleanNoEmail on completion. Defaults to true.
cache_max_ageintegerNoReuse a cached job result younger than this, in seconds
note

config is a large nested structure describing the steps to run. Build it with the Python SDK (FusedAPI.start_job()) rather than by hand.

Returns the job object. When cache_max_age matches a recent identical job, the cached job's response is returned instead of starting new work.

Get job status

GET /run/by-id/{job_id}

Scope: environment

Returns the current job object. Poll this until the job reaches a terminal status.

Cancel a job

POST /run/by-id/{job_id}/cancel

Scope: environment

Terminates the job and its instance, and records a CANCELED status. Returns the updated job object, or 400 Bad Request if the job already finished or was canceled.

List job results

GET /run/by-id/{job_id}/results

Scope: environment

Lists the output objects the job wrote to cloud storage. Returns an object listing.

List your jobs

GET /job/self

Scope: user

Jobs created by the signed-in user, newest first.

Query parameters

ParameterTypeDescription
skipintegerOffset. Default 0.
limitintegerPage size. Default 300.
note

This endpoint is user-scoped — a service account token has no user identity and is rejected. For automation, use the team-wide listing below.

List your team's jobs

GET /job/my-execution-env

Scope: environment

Every job in your execution environment, across all team members, newest first. Accepts the same skip and limit parameters.

Get a job

GET /job/by-id/{job_id}

Scope: environment

Returns the job record for one job. Returns 404 Not Found if the job is not in your environment.

Get a job's configuration

GET /job/by-id/{job_id}/config

Scope: environment

Returns the configuration the job was submitted with — useful for reproducing a run. Returns 400 Bad Request if the job has no stored config.

note

The response may be either the config JSON inline or a redirect to cloud storage, depending on how the job was recorded. Follow redirects.

Get a job's status history

GET /job/events/by-job-id/{job_id}

Scope: environment

Returns the job's status transitions, each with id, job_id, job_status, job_status_description, and date_updated. Useful for seeing where a failed job stalled.

Read job logs

GET /logs/{job_id}

Scope: environment

All log lines for the job, in chronological order.

Query parameters

ParameterTypeDescription
since_msintegerOnly return lines newer than this epoch-milliseconds timestamp
regionstringRegion the job ran in

Tail job logs

GET /logs/{job_id}/tail

Scope: environment

The most recent lines, in reverse-chronological order — better for polling a running job.

Query parameters

ParameterTypeDescription
limitintegerNumber of lines to return. Default 1000.
regionstringRegion the job ran in

See also