altool(1) | User Commands | altool(1) |
altool - Command-line tool for interacting with the App Store Connect API. For the legacy version of altool use 'man 7 altool'.
xcrun altool [--upload-package | --upload-app -f] <file> --platform <{macos | ios | appletvos | visionos}> --provider-public-id <uuid> --apple-id <id> --bundle-id <id> --bundle-version <string> --bundle-short-version-string <string> [--wait] authentication [options]
xcrun altool --validate-app <file> --platform <{macos | ios | appletvos | visionos}> --provider-public-id <uuid> --apple-id <id> --bundle-id <id> --bundle-version <string> --bundle-short-version-string <string> authentication [options]
xcrun altool --build-status --delivery-id <uuid> --apple-id <id> --bundle-id <id> --bundle-version <string> --bundle-short-version-string <string> [--wait] authentication [options]
xcrun altool --list-apps --provider-public-id <uuid> [{filters}] authentication [options]
xcrun altool --list-providers [--legacy] authentication [options]
xcrun altool --upload-asset-pack <file> --apple-id <id> authentication [options]
xcrun altool --asset-pack-status [--asset-pack-version-id <uuid>| --apple-id <id> --asset-pack-identifier <string> --version <string>] authentication [options]
xcrun altool --list-asset-packs --apple-id <id> authentication [options]
xcrun altool --list-asset-pack-versions --apple-id <id> --asset-pack-identifier <string> authentication [options]
xcrun altool --app-store-text <folder_path> [--upload | --download] --apple-id <id> --bundle-short-version-string <string> --platform <{macos | ios | appletvos | visionos}> authentication [options]
xcrun altool --beta-app-store-text <folder_path> [--upload | --download] --apple-id <id> --bundle-short-version-string <string> --platform <{macos | ios | appletvos | visionos}> authentication [options]
xcrun altool --store-password-in-keychain-item <keychain_item_name> --username <string> --app-password <string> [--keychain <file> | --sync]
xcrun altool --generate-jwt --api-key <string> --api-issuer <uuid> [--auth-string <string> | --p8-file-path <path>] [--keychain <file> | --sync]
altool is a command-line tool that enables developers to automate interactions with the App Store Connect API. It provides functionalities for uploading app binaries, validating apps, managing app metadata, and listing available providers and applications. It streamlines the process of submitting and managing apps on the App Store. Authentication is required.
Authentication is required for most commands, using either username, app password and public provider ID or api key and api issuer.
-u, --username <string>
-p, --app-password <string>
--api-key <string>
--api-issuer <uuid>
--api-key-subject <{user}>
--auth-string <string>
--output-format {xml | json | normal}
--show-progress
--verbose
--help
--use-old-altool
--upload-package <file>
-t, --platform {macos | ios |
appletvos | visionos}
Specifies the platform of the app archive.
--apple-id <id>
Specifies the Apple ID of the app.
--bundle-version <string>
Specifies the CFBundleVersion of the app package.
--bundle-short-version-string <string>
Specifies the CFBundleShortVersionString of the app package.
--provider-public-id <uuid>
Required when your account is associated with multiple providers and using
username/app-password authentication. Specifies the provider's public
ID.
Options:
--wait
Waits until the upload process is complete (status is PROCESSING) and returns
the build status.
--validate-app <file>
-t, --platform {macos | ios |
appletvos | visionos}
Specifies the platform of the app archive.
--apple-id <id>
Specifies the Apple ID of the app.
--bundle-version <string>
Specifies the CFBundleVersion of the app package.
--bundle-short-version-string <string>
Specifies the CFBundleShortVersionString of the app package.
--provider-public-id <uuid>
Required when your account is associated with multiple providers and using
username/app-password authentication. Specifies the provider's public
ID.
--list-apps
--provider-public-id <uuid>
Specifies the public ID of the provider whose apps should be listed.
Options:
--filter-apple-id <id>
Filters the list of apps by Apple ID.
--filter-bundle-id <id>
Filters the list of apps by bundle ID.
--filter-name <app_name>
Filters the list of apps by name.
--filter-sku <sku>
Filters the list of apps by SKU.
--filter-platform {macos | ios |
appletvos | visionos}
Filters the list of apps by platform.
--list-providers
-u, --username <string>
-p, --app-password <string> App password.
Options:
--legacy
Outputs provider information in a format that older versions of `altool`
used.
--app-store-text <folder_path> [--upload ]
--apple-id <id>
Specifies the Apple ID of the app.
--bundle-short-version-string <string>
Specifies the CFBundleShortVersionString of the app.
-t, --platform {macos | ios |
appletvos | visionos}
Specifies the platform of the app.
--beta-app-store-text <folder_path> [--upload ]
--apple-id <id>
Specifies the Apple ID of the app.
--bundle-short-version-string <string>
Specifies the CFBundleShortVersionString of the app.
-t, --platform {macos | ios |
appletvos | visionos}
Specifies the platform of the app.
--upload-asset-pack <file>
--apple-id <id>
Specifies the Apple ID of the app to which the asset pack will be
associated.
Options:
--wait
Waits until the asset pack processing is complete (status is READY, FAILED, or
NULL) and returns the status.
--asset-pack-status
--asset-pack-version-id <uuid>
The UUID of the asset pack version.
--apple-id <id>
The Apple ID of the app associated with the asset pack.
--asset-pack-identifier <string>
The developer-defined name of the asset pack.
--version <string>
The version number of the asset pack app version.
--list-asset-packs
--apple-id <id>
Specifies the Apple ID of the app associated with the asset packs.
--list-asset-pack-versions
--apple-id <id>
Specifies the Apple ID of the app associated with the asset pack.
--asset-pack-identifier <string>
Specifies the developer-defined name of the asset pack.
--store-password-in-keychain-item <keychain_item_name>
-u, --username <string>
-p, --app-password <string>
Stores the password in the keychain item named <keychain_item_name> associated with the account.
Options:
--keychain <filename>
Used with --store-password-in-keychain and the @keychain: option for
--app-password lets you specify the path to a keychain file in which to
store or from which to read the password. Cannot be used with the --sync
option.
--sync
Used with --store-password-in-keychain to allow the keychain item to sync with
your iCloud account and other devices associated with the account. Cannot by
used with the --keychain option.
--generate-jwt
Options:
--auth-string <string>
The private key within a JWT p8 file; the key string from after the line with
'BEGIN' to before the line with 'END'.
--build-status
--delivery-id <uuid>
The delivery UUID of the app. This value is returned after a successful
--upload-package.
--apple-id <id>
Specifies the Apple ID of the app.
--bundle-version <string>
Specifies the CFBundleVersion of the app.
--bundle-short-version-string <string>
Specifies the CFBundleShortVersionString of the app.
--app-settings
Most commands require authentication to access your account and perform actions on App Store Connect. JWT authentication using API keys is the preferred method.
-u, --username <string> Username. Required for username/app-password authentication.
-p, --app-password <string> Password. Required if username specified. If this argument is not supplied on the command line, it will be read from stdin. Alternatively to entering <string> in plaintext, it may also be specified using a '@keychain:' or '@env:' prefix. Example: '-p @keychain:<name>' uses the password stored in the keychain password item named <name>. Note also that the --username can be inferred from the keychain item so --username can be omitted when using a '-p @keychain:' option. Example: '-p @env:<variable>' uses the value in the environment variable named <variable>.
--api-key <string> ApiKey. Required for JWT authentication (in lieu of username/app-password). This option will search the following directories in sequence for a private key file with the name of 'AuthKey_<api_key>.p8': './private_keys', '~/private_keys', '~/.private_keys', and '~/.appstoreconnect/private_keys'. Additionally, you can set environment variable $API_PRIVATE_KEYS_DIR or a user default API_PRIVATE_KEYS_DIR to specify the directory where your AuthKey file is located. Individual JWT keys are in the form 'ApiKey_<api_key>.p8'.
--api-issuer <uuid> Issuer ID. Required if --api-key is specified.
Upload an app package using username/app-password authentication:
Upload an app package using JWT authentication:
Validate an app:
Upload Apple-Hosted Background Asset Pack:
Apple-Hosted Background Asset Pack Status:
List providers:
Store password in keychain:
List apps filtered by platform:
xcrun(1), xcodebuild(1), App Store Connect API Documentation
If xcrun altool fails, it will typically print an error message to stderr and exit with a non-zero status. Common error messages include:
"Authentication failed"
"Invalid parameter"
No known bugs.
Apple Inc.
xcrun altool was first introduced as a command-line tool for interacting with the iTunes Connect API. It has been updated over time to support new features and the App Store Connect API.
2025-06-23 | Apple Inc. |