curl "https://app.runtm.com/api/cloud/sessions/ses_abc123/preview-shares?port=3000" \
-H "Authorization: Bearer runtm_xxx"
runtm-api session share list ses_abc123 --port 3000
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/preview-shares",
headers={"Authorization": "Bearer runtm_xxx"},
params={"port": 3000},
)
for share in response.json()["shares"]:
seen = "opened" if share["has_accessed"] else "not opened yet"
print(share["invited_email"], seen)
{
"shares": [
{
"id": "9c1f0b7e-4b1a-4c2e-8f3d-2a5b6c7d8e9f",
"port": 3000,
"invited_email": "[email protected]",
"user_id": "user_xyz",
"created_by": "user_abc",
"created_by_email": "[email protected]",
"created_at": "2026-08-19T22:10:00Z",
"last_accessed_at": "2026-08-19T22:41:12Z",
"has_accessed": true
}
],
"count": 1
}
Sharing
List Preview Shares
See who has access to a session’s live preview
GET
/
api
/
sessions
/
{session_id}
/
preview-shares
curl "https://app.runtm.com/api/cloud/sessions/ses_abc123/preview-shares?port=3000" \
-H "Authorization: Bearer runtm_xxx"
runtm-api session share list ses_abc123 --port 3000
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/preview-shares",
headers={"Authorization": "Bearer runtm_xxx"},
params={"port": 3000},
)
for share in response.json()["shares"]:
seen = "opened" if share["has_accessed"] else "not opened yet"
print(share["invited_email"], seen)
{
"shares": [
{
"id": "9c1f0b7e-4b1a-4c2e-8f3d-2a5b6c7d8e9f",
"port": 3000,
"invited_email": "[email protected]",
"user_id": "user_xyz",
"created_by": "user_abc",
"created_by_email": "[email protected]",
"created_at": "2026-08-19T22:10:00Z",
"last_accessed_at": "2026-08-19T22:41:12Z",
"has_accessed": true
}
],
"count": 1
}
Lists the preview shares on a session, newest first. Optionally narrowed to a single port.
Use
has_accessed to tell whether an invitee ever actually opened the preview — useful for chasing a client who says they never got the link.
Required scope: sessions:read
From the CLI:
runtm-api session share list <session_id>Path Parameters
string
required
The session ID (e.g.
ses_abc123).Query Parameters
integer
Only return shares for this port. Omit for all ports.
Headers
string
required
Bearer token. Example:
Bearer runtm_xxxstring
Scope to an organization.
Response
array
Each share:
id, port, invited_email, user_id, created_by, created_by_email, created_at, last_accessed_at, has_accessed.integer
Number of shares returned.
curl "https://app.runtm.com/api/cloud/sessions/ses_abc123/preview-shares?port=3000" \
-H "Authorization: Bearer runtm_xxx"
runtm-api session share list ses_abc123 --port 3000
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/preview-shares",
headers={"Authorization": "Bearer runtm_xxx"},
params={"port": 3000},
)
for share in response.json()["shares"]:
seen = "opened" if share["has_accessed"] else "not opened yet"
print(share["invited_email"], seen)
{
"shares": [
{
"id": "9c1f0b7e-4b1a-4c2e-8f3d-2a5b6c7d8e9f",
"port": 3000,
"invited_email": "[email protected]",
"user_id": "user_xyz",
"created_by": "user_abc",
"created_by_email": "[email protected]",
"created_at": "2026-08-19T22:10:00Z",
"last_accessed_at": "2026-08-19T22:41:12Z",
"has_accessed": true
}
],
"count": 1
}