> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TestFlight with appstore

> Manage builds, What to Test notes, beta groups, testers, and Beta App Review from the terminal or an agent.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
export ASC_APP_ID=1234567890
```

## Builds

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore builds latest
appstore builds list --marketing-version 2.4.0 --state VALID
appstore builds get BUILD_ID
appstore builds state BUILD_ID
```

Wait for `processingState: VALID` before distributing a build. `builds list --state` takes `PROCESSING`, `FAILED`, `INVALID`, or `VALID`.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore builds encryption BUILD_ID --uses-non-exempt-encryption false --confirm
appstore builds what-to-test BUILD_ID "Try the new onboarding." --locale en-US --confirm
appstore builds expire BUILD_ID --confirm
```

## Beta groups

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore testflight groups list
appstore testflight groups create "Internal QA" --internal --confirm
appstore testflight groups create "Public beta" --public-link --public-link-limit 500 --confirm
appstore testflight groups add-build GROUP_ID BUILD_ID --confirm
appstore testflight groups remove-build GROUP_ID BUILD_ID --confirm
appstore testflight groups delete GROUP_ID --confirm
```

| `groups create` flag | Description |
| - | - |
| `--internal` | Internal group (App Store Connect users only) |
| `--public-link` | Enable a public TestFlight link |
| `--public-link-limit <n>` | Max testers through the public link |

## Testers

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore testflight testers invite ada@example.com --group GROUP_ID --first-name Ada --confirm
appstore testflight groups add-tester GROUP_ID TESTER_ID --confirm
appstore testflight testers list --group GROUP_ID
appstore testflight testers list --email ada@example.com
appstore testflight testers resend TESTER_ID --confirm
appstore testflight testers delete TESTER_ID --confirm
```

`invite --group` takes one or more group ids, comma-separated. `testers delete` removes the tester from all of your apps.

## External testing

External groups need a build approved by Beta App Review.

**1. Check the TestFlight app info**

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore testflight localizations
appstore testflight review-details
```

**2. Fill in Beta App Review details**

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore ops call appstore_update_beta_review_details --confirm \
  '{"detailId":"DETAIL_ID","contactEmail":"beta@example.com","demoAccountRequired":false}'
```

**3. Submit the build**

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore testflight submit BUILD_ID --confirm
```

**4. Add the build to the external group**

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore testflight groups add-build GROUP_ID BUILD_ID --confirm
```

## Over MCP

| Task | Tools |
| - | - |
| Builds | `appstore_list_builds`, `appstore_get_latest_build`, `appstore_get_build_processing_state`, `appstore_update_build`, `appstore_expire_build` |
| What to Test | `appstore_list_beta_build_localizations`, `appstore_create_beta_build_localization`, `appstore_update_beta_build_localization` |
| Groups | `appstore_list_beta_groups`, `appstore_create_beta_group`, `appstore_update_beta_group`, `appstore_add_builds_to_beta_group`, `appstore_remove_builds_from_beta_group` |
| Testers | `appstore_list_beta_testers`, `appstore_invite_beta_tester`, `appstore_add_testers_to_beta_group`, `appstore_send_beta_invitation`, `appstore_delete_beta_tester` |
| Beta App Review | `appstore_get_beta_review_details`, `appstore_update_beta_review_details`, `appstore_submit_for_beta_review`, `appstore_list_beta_review_submissions` |
| TestFlight app info | `appstore_list_beta_app_localizations`, `appstore_create_beta_app_localization`, `appstore_update_beta_app_localization` |

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "name": "appstore_invite_beta_tester",
  "arguments": { "email": "ada@example.com", "firstName": "Ada", "groupIds": ["GROUP_ID"] }
}
```

On the hosted server, writes need `X-ASC-Allow-Writes: true`. Anything not covered here (for example beta license agreements or build bundle details) is reachable through [Full API coverage](/docs/store-cli-app-store-connect-full-api.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.