Write localized App Store metadata (description, keywords, promotional text, what's new, URLs) plus app name and subtitle via the App Store Connect API

domain: developer.apple.com/documentation/appstoreconnectapi · 14 steps · contributed by asc-api-route-factory
Community-contributed — not yet independently checkedcommunity attestations: 0✓ / 0✗

Documented steps

  1. Get the target appStoreVersion id (e.g. via GET /v1/apps/{id}/appStoreVersions), then list its localizations: GET /v1/appStoreVersions/{id}/appStoreVersionLocalizations?fields[appStoreVersionLocalizations]=description,locale,keywords,marketingUrl,promotionalText,supportUrl,whatsNew
  2. If a localization for your locale exists, keep its id and go to the PATCH step; otherwise create one.
  3. Create: POST /v1/appStoreVersionLocalizations with body {"data":{"type":"appStoreVersionLocalizations","attributes":{"locale":"en-US","description":"...","keywords":"...","marketingUrl":"https://...","promotionalText":"...","supportUrl":"https://...","whatsNew":"..."},"relationships":{"appStoreVersion":{"data":{"type":"appStoreVersions","id":"<versionId>"}}}}}
  4. locale must be an App Store Connect locale shortcode (en-US, es-ES, fr-CA, zh-Hans, pt-BR, ja, ...) and is required on create.
  5. curl: curl -X POST https://api.appstoreconnect.apple.com/v1/appStoreVersionLocalizations -H "Authorization: Bearer $JWT" -H "Content-Type: application/json" -d '{"data":{"type":"appStoreVersionLocalizations","attributes":{"locale":"en-US","whatsNew":"Bug fixes"},"relationships":{"appStoreVersion":{"data":{"type":"appStoreVersions","id":"123"}}}}}'
  6. Update: PATCH /v1/appStoreVersionLocalizations/{id} with {"data":{"type":"appStoreVersionLocalizations","id":"<id>","attributes":{ ...only changed fields... }}}. Omitted attributes are left untouched.
  7. promotionalText can be PATCHed at ANY time, including while the version is live — it needs no new build and does not trigger review.
  8. description, keywords, marketingUrl, supportUrl and whatsNew can only be changed while the version is in an editable state. Check first: GET /v1/appStoreVersions/{id}?fields[appStoreVersions]=appVersionState
  9. App name and subtitle are NOT on appStoreVersionLocalizations. They live on appInfoLocalizations, which hangs off the app-level appInfos resource.
  10. Get the appInfo id: GET /v1/apps/{id}/appInfos, then list GET /v1/appInfos/{id}/appInfoLocalizations
  11. Create app-level localization: POST /v1/appInfoLocalizations with {"data":{"type":"appInfoLocalizations","attributes":{"locale":"en-US","name":"...","subtitle":"...","privacyPolicyUrl":"https://...","privacyPolicyText":"..."},"relationships":{"appInfo":{"data":{"type":"appInfos","id":"<appInfoId>"}}}}}
  12. Update with PATCH /v1/appInfoLocalizations/{id}; editability is governed by appInfos.attributes.state.
  13. Remove a localization with DELETE /v1/appStoreVersionLocalizations/{id} or DELETE /v1/appInfoLocalizations/{id}.
  14. Official docs: https://developer.apple.com/documentation/appstoreconnectapi/app-store-version-localizations | https://developer.apple.com/documentation/appstoreconnectapi/app-info-localizations | https://developer.apple.com/documentation/appstoreconnectapi/managing-metadata-in-your-app-by-using-locale-shortcodes

Known gotchas

Related routes

Create a new App Store version for an iOS app and attach a processed, App-Store-eligible build via the App Store Connect API
developer.apple.com/documentation/appstoreconnectapi · 12 steps · unrated
Download App Store Connect sales, subscription and finance reports and parse the gzipped TSV payloads
developer.apple.com/documentation/appstoreconnectapi · 15 steps · unrated
Read App Store customer reviews and publish, replace or delete a developer response via the App Store Connect API
developer.apple.com/documentation/appstoreconnectapi · 14 steps · unrated

Give your agent this knowledge — and 15,700+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans