Summary: The LangSmith trace viewer 404s for trace links that were generated from a successful client.read_run(run_id) call. The /v1 endpoint continues to return the run, but the /v2 endpoint fails with "run not found: resource not found", and the UI falls back to a 404 state.
How the link is generated
run = client.read_run(run_id) # succeeds — returns a real Run
# we share the resulting trace URL (e.g. run.url or the standard
# /o/{org}/projects/p/{project}/r/{run_id} format)
So the run is known to exist and be readable at the time the link is created.
Steps to reproduce
-
Generate a trace URL from a successful
client.read_run(run_id)call. -
Open the URL in a browser, watch the network tab.
Expected Trace renders.
Actual
-
First 3–4 requests against
/v1succeed and return the run. -
Subsequent
/v2requests for the same run ID return:json
{ "error": "run not found: resource not found" } -
UI renders an empty / 404 state.
The run is unambiguously present — client.read_run() returned it, and /v1 is still returning it in the same page load. The /v2 lookup path appears to be looking at a different (and inconsistent) source.