Threads AI

Ui Run Frames

GET
/v1/threads/{thread_id}/runs/{run_id}/ui/{protocol}
AuthorizationBearer <token>

Checked by host({authenticate}), which maps the request to a Principal or rejects it.

In: header

Path Parameters

thread_id*string

Lowercase UUID string. Writers MUST generate UUIDv7; readers accept any lowercase UUID, so the version is not an admission rule.

Match^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
run_id*string

The run's user_input event_id.

Match^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
protocol*unknown

Value in

  • "ai-sdk"
  • "ag-ui"

Query Parameters

after?string

Resume after this frame id : (also accepted as the SSE Last-Event-ID, which wins). AI SDK resumes with frame k+1 of event seq; AG-UI resumes at the event boundary after seq with a new RUN_STARTED and a snapshot.

Match^[0-9]+:[0-9]+$

Response Body

text/event-stream

application/json

curl -X GET "https://example.com/v1/threads/string/runs/string/ui/ai-sdk"
"string"
Edit on GitHub