App Store Connect automation

Automate App Store Connect Screenshot Uploads with Genshot

Import, review, publish, and verify App Store screenshots with the shipped Genshot CLI and API while preserving Apple’s reservation, upload, commit, and processing states.

11 min readVerified August 27, 2026

Short answer

Genshot now supports an explicit review-before-write App Store Connect workflow: connect a scoped Apple key, import an editable version, review ordered screenshot decisions, publish selected sets, and poll the durable publish status.

Apple’s asset upload is a four-state workflow

  1. Step 1

    Reserve

    Create the screenshot resource with filename and byte size.

  2. Step 2

    Upload

    Send every operation or part Apple returns.

  3. Step 3

    Commit

    Mark the reservation as uploaded only after all parts succeed.

  4. Step 4

    Verify

    Read Apple’s processing status; transport success is not completion.

1. Connect and import an editable version

Omit `--issuer-id` for an individual key. Genshot accepts the private key from the local file, stores encrypted credential material, and prints only credential-safe connection information.

genshot appstore connect \
  --key-id "$APPLE_KEY_ID" \
  --key-file ./AuthKey.p8 \
  --issuer-id "$APPLE_ISSUER_ID"

genshot appstore apps --json

genshot appstore import 123456789 \
  --project-id project_example \
  --platform IOS \
  --json

2. Inspect and save the exact ordered review

Review decisions are durable and do not mutate Apple. Supported actions are `keep_existing`, `use_generated`, `remove`, and `regenerate`; the order on the command is the intended store order.

genshot appstore screenshots --project-id project_example --json

genshot appstore review \
  --project-id project_example \
  --locale en-US \
  --display-type APP_IPHONE_67 \
  --decision use_generated:gimg_first use_generated:gimg_second keep_existing:apple_third \
  --json

3. Publish explicitly, then verify the publish ID

Non-interactive publishing requires `--yes`. Keep the returned publish ID and poll status until the expected images are both uploaded and processed. A failed or partial status is evidence to inspect, not a reason to repeat replacement blindly.

genshot appstore publish \
  --project-id project_example \
  --locale en-US \
  --display-type APP_IPHONE_67 \
  --yes \
  --json

genshot appstore status ascpublish_example \
  --project-id project_example \
  --json

Production safety checklist

  • Use the narrowest Apple role and protect the one-download `.p8` file.
  • Import and bind the intended app, platform, editable version, locale, and display type.
  • Save an explicit review before the first write.
  • Use JSON mode in agents and CI so stdout contains one parseable object.
  • Store the publish ID and verify Apple processing before declaring release completion.
  • Disconnect the credential when the workflow no longer needs it; imported images remain.

Sources and verification

Product capabilities and changing requirements were checked against these primary pages. External pages can change after the verified date above.

Open the live API contract

Verify current request and response fields before building a non-interactive workflow.

Open the live API contract