403 billing.platform_not_available when it connects an app. Request access from the App Store Connect card on the dashboard’s Accounts page.
At a glance
Capabilities
The capability matrix for every platform is on Supported platforms.
Connect an account
One connected account is one app. You send an API key and, when the key can see more than 1 app, the app to connect.1
Create an API key
In App Store Connect, open Users and Access, then Integrations, then App Store Connect API. Generate a Team key with the Customer Support or Admin role. Generating a Team key needs the Account Holder or Admin role. An Individual key from your user profile also works when your own role is Customer Support, Admin, or Account Holder, and your user has the Generate Individual API Keys permission. Replying to reviews needs one of these roles.
2
Download the key and note its IDs
Download the private key file. App Store Connect lets you download it once. Note the key’s Key ID, and for a Team key the Issuer ID shown on the App Store Connect API page.
3
Connect the app
Send the contents of the private key file as Response (HTTP 201):
metadata.private_key, with line breaks escaped as \n:
Every field is a JSON string. Send
app_id in quotes: a number is read as missing.
username is the app’s bundle ID and display_name is its name. Without brand_id in the request, SocialAPI creates a brand for the app. SocialAPI also sends account.connected to your webhook endpoints.
Connect more than one app
A brand holds 1 account per platform, so each app goes into its own brand. Send one connect request per app, each with itsapp_id and a different brand_id, or with no brand_id. Connecting a second app into a brand that already holds one returns 409 account.already_linked. Each brand counts toward your plan’s brand allowance: see Plans.
When the key can see more than 1 app and the request has no app_id, the call returns 400 validation.field_required with meta.field set to app_id and meta.apps listing up to 200 of the apps the key can see:
Connect errors
Disconnect and revoke
Disconnecting the account (DELETE /v1/accounts/{account_id}) deletes the API key from SocialAPI. App Store Connect offers no way to revoke a key from outside, so the key stays valid. To cut off access completely, revoke the key in App Store Connect: a Team key under Users and Access, Integrations, and an Individual key in your user profile, under Individual API Key.
Reviews
You list an app’s reviews withGET /v1/inbox/reviews/{account_id} and reply with POST /v1/inbox/reviews/{id}/reply. The parameters, response fields, and cost are on Reviews. These rules are specific to App Store Connect:
- Reviews carry a title. Each review has
title, the reviewer’s headline, next totext, the review body. - The author is a nickname.
author.nameis the reviewer’s App Store nickname.author.avatar_urlis absent. - No edit time.
updated_atis the same ascreated_at. - No average rating.
average_ratingis0in the list of review accounts and in thesummaryof a reviews page.total_countis the app’s number of written reviews. - No reply state.
replyhastextandupdated_at, and nostate. A reply response has nostateeither. - A reply replaces the previous one. A review has 1 developer response. Replying again replaces it.
- Replies are not visible at once. A response can take up to 24 hours to appear on the App Store.
Review errors
A reply that fails with a
validation.* code gets its interaction credit back. See When a credit comes back for the other cases.
Limits
Scopes
App Store Connect has no OAuth scopes. The key’s role sets what SocialAPI can do: replying needs the Customer Support, Admin, or Account Holder role, and a call the role does not allow returns403 platform.app_store_connect.forbidden. The account supports the reviews.read and reviews.write permissions, which SocialAPI alone enforces.
Related
- Reviews: list reviews and reply, across platforms
- Supported platforms: what each platform supports
- Connect accounts: the connect flow and the account object
- Platform apps: which app connects each platform