asc cli usage
Use this skill when you need to run or design asc commands for App Store Connect.
Command discovery
- Always use
--helpto discover commands and flags.asc --helpasc builds --helpasc builds list --help
- Use
asc searchfor local, deterministic command discovery when you know the workflow but not the command path.asc search "submit app for review"asc search --output table "upload build"
- Use
asc schemato inspect bundled App Store Connect endpoint schemas and request/query fields before designing API-facing commands.asc schema --pretty "GET /v1/apps"asc schema --method POST appStoreVersions
- Use
asc capabilitiesto explain CLI-supported, partial, web-session, and public-API-limited workflow coverage.asc capabilities --area release --output tableasc capabilities --status web-session --output tableasc capabilities --status not-public-api --output markdown
Canonical verbs (current asc)
- Prefer
viewover legacygetaliases for read-only commands in docs and automation.asc apps view --id "APP_ID"asc versions view --version-id "VERSION_ID"asc pricing availability view --app "APP_ID"
- Prefer
editfor update-only availability surfaces and other canonical edit flows.asc pricing availability edit --app "APP_ID" --territory "USA,GBR" --available trueasc app-setup availability edit --app "APP_ID" --territory "USA,GBR" --available trueasc xcode version edit --build-number "42"
- Use
asc pricing availability createto initialize app availability before using the update-onlyeditcommand. If Apple rejects the public-API bootstrap, authenticate a web session and useasc web apps availability create, or configure Pricing and Availability in App Store Connect.asc pricing availability create --app "APP_ID" --territory "USA,GBR" --available true --available-in-new-territories trueasc web apps availability create --app "APP_ID" --territory "USA,GBR" --available-in-new-territories true
- Keep
setwhere the CLI intentionally models a higher-level replacement/configuration flow and--helpstill showssetas the canonical verb.
Flag conventions
- Use explicit long flags (e.g.,
--app,--output). - Prefer explicit flags in automation; some newer commands can prompt for missing fields when run interactively.
- Destructive operations require
--confirm. - Use
--paginatewhen the user wants all pages.
Output formats
- Output defaults are TTY-aware:
tablein interactive terminals,jsonwhen piped or non-interactive. - Use
--output tableor--output markdownonly for human-readable output. --prettyis only valid with JSON output.
Authentication and defaults
- Prefer keychain auth via
asc auth login. - Fallback env vars:
ASC_KEY_ID,ASC_ISSUER_ID,ASC_PRIVATE_KEY_PATH,ASC_PRIVATE_KEY,ASC_PRIVATE_KEY_B64. ASC_APP_IDcan provide a default app ID.- When permissions are unclear, inspect exact API key role coverage with
asc web auth capabilities.- This lives under the web-session auth surface.
- It can resolve the current local auth by default, or inspect a specific key with
--key-id.
- Create an App Store Connect team API key through a cached Apple Account web session with
asc web api-keys create.- An Account Holder or Admin session is required; use
asc web auth login --apple-id "user@example.com"first when needed. - The command saves the one-time P8 as
AuthKey_<KEY_ID>.p8without printing its contents; choose an explicit private directory with--output-dir. - Example:
asc web api-keys create --name "CI uploads" --role APP_MANAGER --output-dir "./keys" --output json.
- An Account Holder or Admin session is required; use
Apple Ads
- Use
asc ads --helpbefore choosing a command. - Apple Ads uses
asc ads auth,--ads-profile, andASC_ADS_*variables. It does not use App Store Connect API credentials. - Resolve org access with
asc ads acls --output jsonunless the org ID is already known. - Most endpoint commands need
--orgorASC_ADS_ORG_ID. - Body commands use
--filewith Apple Ads JSON payloads. Object endpoints need a JSON object. Bulk endpoints often need a JSON array. - Use
--paginateonly where help shows it. Reporting and selector payloads carry pagination inside the JSON file. - Destructive commands and bulk delete commands require
--confirm. - For live mutation tests, create paused resources with a clear test name and delete the parent campaign when done.
Timeouts
ASC_TIMEOUT/ASC_TIMEOUT_SECONDScontrol request timeouts.ASC_UPLOAD_TIMEOUT/ASC_UPLOAD_TIMEOUT_SECONDScontrol upload timeouts.