Stream a file this run wrote with its file tools; 404 covers cross-tenant, other-client, unknown and non-produced ids.
Streams one file this run **wrote** with its file tools — not an uploaded or generated attachment (that is GET /v1/runs/{runId}/files/{fileId}/content).
The id is a **file-interaction row id**, listed by the run's own file interactions. Only rows the run produced are servable: write/append, succeeded, and a file rather than a directory. A path the model merely mentioned has no row and cannot be requested.
Served as an attachment with the app's user-content hardening, so a .html artifact downloads rather than rendering. Files over 100 MB are refused with 413.
**Not used on hosted Amy:** a run has no such files there, so every id here is a 404.
**Scoped to the calling API-key client:** only a run this client started is reachable — any of its keys, rotations included. Another client's run in the same tenant, a run started before clients were recorded, and another tenant's run are all the same 404 as an unknown id.