Skip to main content
A Job is a saved configuration for an async unit of AI work. A Job Run is a single execution of that job with its own status, timestamps, and output.

Endpoints

MethodPathDescription
GET/jobs/schemasList available job types and config schemas
POST/jobsCreate a job
GET/jobsList jobs
GET/jobs/{job_id}Get a job
GET/jobs/{job_id}/latest-runGet the most recent run for a job
PATCH/jobs/{job_id}Update a job
DELETE/jobs/{job_id}Delete a job
POST/job-runsTrigger a job run
GET/job-runsList job runs
GET/job-runs/{job_run_id}Get a job run
POST/job-runs/{job_run_id}/cancelCancel a running or pending job run

Get job schemas

GET /jobs/schemas Returns all available job types with their full config schemas and field descriptions. Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/jobs/schemas" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Response fields (array of objects):
FieldTypeDescription
job_typestringJob type identifier (use this as job_type in POST /jobs)
display_namestringHuman-readable name shown in the UI
descriptionstringInternal description of what the job does
user_facing_descriptionstringUser-facing description
json_schemaobjectFull JSON Schema for the config field when creating a job
creatable_on_uibooleanWhether users can create this job type from the UI
creatable_by_agentbooleanWhether Atlas can create this job type automatically
visible_on_uibooleanWhether this job type appears in the UI
Example response:
[
  {
    "job_type": "metagraph_update",
    "display_name": "Metagraph Update",
    "description": "Updates the system metagraph based on uploaded documents.",
    "user_facing_description": "Analyzes uploaded documents and updates the system graph.",
    "json_schema": {
      "type": "object",
      "properties": {
        "job_type": {"type": "string"},
        "system_id_or_name": {"type": "string"},
        "additional_context": {"type": "string"}
      },
      "required": ["job_type", "system_id_or_name"]
    },
    "creatable_on_ui": true,
    "creatable_by_agent": true,
    "visible_on_ui": true
  }
]

Create a job

POST /jobs Request body:
FieldRequiredTypeDescription
job_typeYesstringJob type identifier (e.g. metagraph_update, generate_issue)
configNoobjectJob-type-specific config. Must include job_type matching the top-level field
source_session_idNoUUIDAssociate this job with a session
source_project_idNoUUIDAssociate this job with a project
Use GET /jobs/schemas to retrieve the full config schema for a job type before creating a job.
Example request:
curl -X POST "https://spacex.atlas.arenaphysica.com/api/v1/jobs" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "job_type": "metagraph_update",
    "config": {
      "job_type": "metagraph_update",
      "system_id_or_name": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "additional_context": "Focus on the power distribution subsystem"
    }
  }'
Response fields:
FieldTypeNullableDescription
uuidUUIDNoJob identifier
namestringNoAuto-generated job name
descriptionstringYesJob description
configobjectNoFull config object for this job
is_deletedbooleanNoSoft-delete flag
created_bystringNoCreator email
created_atstringNoISO 8601 creation timestamp
updated_atstringYesISO 8601 last-update timestamp
source_session_idUUIDYesAssociated session
source_project_idUUIDYesAssociated project
Example response:
{
  "uuid": "d4e5f6a7-b8c9-0123-defa-234567890123",
  "name": "metagraph_update – Power Distribution Unit",
  "description": null,
  "config": {
    "job_type": "metagraph_update",
    "system_id_or_name": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "additional_context": "Focus on the power distribution subsystem"
  },
  "is_deleted": false,
  "created_by": "engineer@example.com",
  "created_at": "2026-04-13T10:10:00.000000",
  "updated_at": null,
  "source_session_id": null,
  "source_project_id": null
}

List jobs

GET /jobs Query parameters:
ParameterTypeDescription
job_typesstring (repeatable)Filter by job type
created_by_usersstring (repeatable)Filter by creator email
source_session_idsUUID (repeatable)Filter by source session
created_afterstringISO 8601 lower bound
created_beforestringISO 8601 upper bound
Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/jobs" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns {"items": [...], "count": N} where each item is a job object with the same fields as the create response.

Get a job

GET /jobs/{job_id} Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/jobs/$JOB_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns a job object with the same fields as the create response.

Get latest run

GET /jobs/{job_id}/latest-run Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/jobs/$JOB_ID/latest-run" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns the most recent job run object with the same fields as the trigger response. Returns 204 No Content if the job has no runs yet.

Update a job

PATCH /jobs/{job_id} All fields are optional.
FieldTypeDescription
configobjectUpdated job config
Example request:
curl -X PATCH "https://spacex.atlas.arenaphysica.com/api/v1/jobs/$JOB_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"config": {"job_type": "metagraph_update", "additional_context": "Focus on power rail issues"}}'
Returns the updated job object with the same fields as the create response.

Delete a job

DELETE /jobs/{job_id} Soft-deletes a job. Example request:
curl -X DELETE "https://spacex.atlas.arenaphysica.com/api/v1/jobs/$JOB_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Example response:
{
  "message": "Job d4e5f6a7-b8c9-0123-defa-234567890123 soft deleted"
}

Trigger a job run

POST /job-runs Request body:
FieldRequiredTypeDescription
job_idYesUUIDID of the job to run
configNoobjectRuntime config overrides
Example request:
curl -X POST "https://spacex.atlas.arenaphysica.com/api/v1/job-runs" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"job_id": "d4e5f6a7-b8c9-0123-defa-234567890123"}'
Response fields:
FieldTypeNullableDescription
uuidUUIDNoJob run identifier
job_idUUIDNoParent job
job_namestringNoName of the parent job
configobjectNoConfig used for this run
statusstringNoCurrent run status (see below)
created_bystringNoCreator email
created_atstringNoISO 8601 creation timestamp
updated_atstringNoISO 8601 last-update timestamp
is_deletedbooleanNoSoft-delete flag
output_referencesarrayNoReferences to outputs produced by this run
Job run status values:
ValueDescription
pendingQueued, not yet started
runningCurrently executing
pausedExecution paused
completedFinished successfully
failedEncountered an error
cancelledStopped before completion
Example response:
{
  "uuid": "e5f6a7b8-c9d0-1234-efab-345678901234",
  "job_id": "d4e5f6a7-b8c9-0123-defa-234567890123",
  "job_name": "metagraph_update – Power Distribution Unit",
  "config": {
    "job_type": "metagraph_update",
    "system_id_or_name": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  "status": "pending",
  "created_by": "engineer@example.com",
  "created_at": "2026-04-13T10:11:00.000000",
  "updated_at": "2026-04-13T10:11:00.000000",
  "is_deleted": false,
  "output_references": []
}

Get a job run

GET /job-runs/{job_run_id} Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/job-runs/$JOB_RUN_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns a job run object with the same fields as the trigger response. Poll this endpoint until status reaches completed, failed, or cancelled.

List job runs

GET /job-runs Query parameters:
ParameterTypeDescription
job_idUUIDFilter to runs for a specific job
job_typesstring (repeatable)Filter by job type
statusesstring (repeatable)Filter by status
created_afterstringISO 8601 lower bound
created_beforestringISO 8601 upper bound
Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/job-runs?job_id=$JOB_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns {"items": [...], "count": N} where each item is a job run object with the same fields as the trigger response.

Cancel a job run

POST /job-runs/{job_run_id}/cancel Example request:
curl -X POST "https://spacex.atlas.arenaphysica.com/api/v1/job-runs/$JOB_RUN_ID/cancel" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Response fields:
FieldTypeDescription
messagestringConfirmation message
cancelled_countintegerNumber of tasks cancelled
Example response:
{
  "message": "Job run e5f6a7b8-c9d0-1234-efab-345678901234 cancelled",
  "cancelled_count": 1
}