---
title: "Get job status, progress, and results"
method: GET
path: "/query/jobs/{jobId}"
tags: ["Query"]
---

# Get job status, progress, and results

`GET /query/jobs/{jobId}`

Poll this endpoint to track query progress. Response shape depends on `status`:

- `running` → `progress`
- `done` → `results`
- `error` → `error`
- `canceled` → cancellation error payload

## Path parameters

- `jobId` string, required

## Response `200`

Job status and results

- QueryJobResponse — Returned as `202` from `POST /query` when the query continues asynchronously, and as `200` from `GET /query/jobs/{id}`.
  - `data` object, required
    - `type` 'job', required
    - `job_id` string, required
    - `status` 'running' | 'done' | 'error' | 'canceled', required
    - `query` string — The original SPL2 query
    - `created_at` string, date-time
    - `completed_at` string, date-time — Present when `status` is `done`
    - `progress` JobProgress
      - `phase` 'parsing' | 'scanning_buffer' | 'filtering_segments' | 'scanning_segments' | 'executing_pipeline', required — Current execution phase
      - `segments_total` integer — Total segments considered for the query
      - `segments_scanned` integer — Segments scanned so far
      - `segments_dispatched` integer — Segments dispatched to workers
      - `segments_skipped_index` integer
      - `segments_skipped_time` integer
      - `segments_skipped_stats` integer
      - `segments_skipped_bloom` integer
      - `segments_skipped_range` integer
      - `buffered_events` integer
      - `rows_read_so_far` integer — Rows read so far
      - `elapsed_ms` number — Wall-clock time since job started
    - `results` union — Final query results. Present only when `status` is `done`. Same shape as sync `200` response `data`.
      - object
        - `type` 'events'
        - `events` LogEvent[]
        - `total` integer
        - `has_more` boolean
      - object
        - `type` 'aggregate'
        - `columns` string[]
        - `rows` array[]
          - unknown[]
            - unknown
        - `total_rows` integer
      - object
        - `type` 'timechart'
        - `interval` string
        - `columns` string[]
        - `rows` array[]
          - unknown[]
            - unknown
    - `error` object — Present when `status` is `error` or `canceled`
      - `code` string
      - `message` string
      - `suggestion` string
  - `meta` Meta
    - `took_ms` number
    - `scanned` integer
    - `query_id` string

## Other responses

- `404` — Resource not found

---

[API](https://skmtc.net/lynxbase/apis/lynxdb-api.md) · [All operations](https://skmtc.net/lynxbase/apis/lynxdb-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lynxbase/lynxdb-api/versions/4363a070c444/schema)
