---
title: "SSE stream of job progress and final results"
method: GET
path: "/query/jobs/{jobId}/stream"
tags: ["Query"]
---

# SSE stream of job progress and final results

`GET /query/jobs/{jobId}/stream`

Server-Sent Events stream for real-time job tracking. Preferred over polling for Web UI.

**Event types:**

| Event | When | Data |
|---|---|---|
| `progress` | Every ~1s while running | Progress snapshot plus optional preview rows |
| `complete` | Query finished | Final results |
| `failed` | Query errored | Error object |
| `canceled` | Job was cancelled | Progress at cancellation |

SSE (not WebSocket) because this is a unidirectional server→client stream. SSE auto-reconnects,
passes through proxies, and works with the native `EventSource` browser API.

```javascript
const es = new EventSource("/api/v1/query/jobs/qry_xxx/stream");
es.addEventListener("progress", (e) => updateProgressBar(JSON.parse(e.data)));
es.addEventListener("complete", (e) => { showFinalResults(JSON.parse(e.data)); es.close(); });
es.addEventListener("failed",   (e) => { showError(JSON.parse(e.data)); es.close(); });
```

## Path parameters

- `jobId` string, required

## Response `200`

SSE event stream

## 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/revisions/4363a070c444/schema)
