Overview
Completed runs can include screenshots inrun_message_history. These screenshots are stored as stable supabase://run-images/... references, not public HTTPS URLs:
Why Signed URLs?
Run screenshots are private organization data. Thesupabase:// reference is stable and safe to store, but it is not directly fetchable. A signed URL is a temporary HTTPS URL that grants read access to one screenshot.
Signed URLs expire after the requested
expires_in value. The maximum is 3600 seconds.Authorization Model
The endpoint is scoped to both the run and the image reference:- Your API key must belong to the run’s organization.
- The
image_urlmust be an exactsupabase://run-images/...URL present in that run’srun_message_history. - Cyberdesk verifies the storage path belongs to the same organization before returning a signed URL.
Endpoint
Curl Example
TypeScript Example
Python Example
Common Errors
400 Invalid Supabase URL: Theimage_urlis not a validsupabase://...reference.400 Only run-images URLs are supported: The URL points to a different storage bucket.403 Image URL is not present in this run's message history: The URL was not read from the specified run.403 Image URL does not belong to the organization: The storage path does not match the authenticated organization.404 Run not found: The run ID does not exist in the authenticated organization.