Stream a run's progress (SSE)
curl --request GET \
--url https://api.example.com/v1/runs/{run_id}/eventsimport requests
url = "https://api.example.com/v1/runs/{run_id}/events"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/runs/{run_id}/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/runs/{run_id}/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/runs/{run_id}/events"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/runs/{run_id}/events")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/runs/{run_id}/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Runs
GET /v1/runs/{run_id}/events
Watch a batch run’s progress as Server-Sent Events instead of polling.
GET
/
v1
/
runs
/
{run_id}
/
events
Stream a run's progress (SSE)
curl --request GET \
--url https://api.example.com/v1/runs/{run_id}/eventsimport requests
url = "https://api.example.com/v1/runs/{run_id}/events"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/runs/{run_id}/events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/runs/{run_id}/events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/runs/{run_id}/events"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/runs/{run_id}/events")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/runs/{run_id}/events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}A convenience over polling
Useful when a screen is long enough that a human wants a progress bar, or
when an agent should start reading partial results rather than blocking on
the whole batch. For the artifact once it finishes, see
run artifacts.
GET /v1/runs/{run_id}.
Emits a status frame on every state or progress change, then one terminal
final frame carrying the complete run body.
The poll endpoint remains the source of truth. If the stream drops, fall back
to polling — do not treat a dropped connection as a failed run.
curl -N -s "https://api.mireye.com/v1/runs/$RUN_ID/events" \
-H "Authorization: Bearer $MIREYE_API_TOKEN" \
-H 'accept: text/event-stream'
event: status
data: {"status":"running","completed":128,"total":1000}
event: status
data: {"status":"running","completed":512,"total":1000}
event: final
data: {"run_id":"...","status":"succeeded","result":{...}}
Path Parameters
Response
Successful Response