---
title: Open a Live App Session from a Link
description: Start a live session on a real device with a specific uploaded build
  from a URL. Post the link on a pull request so reviewers open the device with that
  build installed.
source_url:
  html: https://testingbot.com/support/app-live/start-link
  md: https://testingbot.com/support/app-live/start-link.md
---

# Open a Live App Session from a Link

You can link straight to a live session on a real device with one of your uploaded apps installed. This is useful in CI: upload the build of a pull request, then post a link on the pull request so a reviewer can open the app on a device with one click.

```bash
https://testingbot.com/members/apps/start?app=tb://<appkey>&device=<id>
```

## Parameters

| Parameter | Description |
| --- | --- |
| `app` | The `app_url` returned when you [upload an app](https://testingbot.com/support/api/storage#upload) (`tb://<appkey>`), or just the appkey. Must be an `.apk` or `.ipa` uploaded to the same TestingBot account. |
| `device` | The `id` of a real device, as returned by [GET /v1/devices](https://testingbot.com/support/api/devices#devices). |
| `deviceName` | Instead of `device`: the device name, for example `Pixel 8`. When several devices match, a free one is preferred, then the newest OS version. |
| `platformVersion` | Optional, with `deviceName`. `14` matches 14 and 14.x. |

Examples:

```bash
https://testingbot.com/members/apps/start?app=tb://35576f774feba47fa4e4b3b9&device=28
https://testingbot.com/members/apps/start?app=tb://35576f774feba47fa4e4b3b9&deviceName=Pixel%208&platformVersion=14
```

## What happens on click

Opening the link never starts a session by itself. It shows a confirmation page with the app (name, version and bundle identifier) and the device, and whether that device is free. Click **Start session** to begin.

- If you are not logged in, you are asked to log in first and then return to the confirmation page.
- The session runs under the account of the person who clicks the link, so the app must belong to that account. Team members share the team's apps.
- If the device is in use, the page offers to check again or to pick another device.
- If the app cannot run on the device (an iOS app on an Android device, or a simulator `.zip`), the page says so.

## Post a link on pull requests

Upload the build with the [storage API](https://testingbot.com/support/api/storage#upload), read `app_url` from the response and comment the link on the pull request. A GitHub Actions example:

```yaml
- name: Upload build to TestingBot
  id: upload
  run: |
    APP_URL=$(curl -s -u "$TB_KEY:$TB_SECRET" \
      -F "file=@app/build/outputs/apk/debug/app-debug.apk" \
      https://api.testingbot.com/v1/storage | jq -r .app_url)
    echo "app_url=$APP_URL" >> "$GITHUB_OUTPUT"
  env:
    TB_KEY: ${{ secrets.TB_KEY }}
    TB_SECRET: ${{ secrets.TB_SECRET }}

- name: Comment live test link
  run: |
    gh pr comment ${{ github.event.pull_request.number }} --body \
      "Test this build on a real device: https://testingbot.com/members/apps/start?app=${{ steps.upload.outputs.app_url }}&deviceName=Pixel%208"
  env:
    GH_TOKEN: ${{ github.token }}
```

## Notes

- Upload each pull request's build as a new app, so each link keeps pointing at its own build. Replacing the binary under an existing appkey (`POST /v1/storage/<appkey>`) changes what older links open.
- Prefer `deviceName` over `device` in shared links: a specific device may be in use, another unit of the same model often is not.
- Your plan's limits apply as usual, for example the number of parallel live sessions.

## Looking for more help?

Have questions or need more information? Reach out via email or Slack.

[Email us](https://testingbot.com/contact/new) [Join our Slack](https://join.slack.com/t/testingb0t/shared_invite/zt-3bcw9xch-jk19~6XPs_xBrsAgAedkCw)
