API guide
App Store Connect API for customer reviews
What you do with reviews in App Store Connect, you can do through its API: list an app's reviews, publish a reply, change it or delete it. Here's what you need, the endpoints and their filters, and what to expect once a reply is sent.
Sources
Sources checked on 23 October 2026.
Create an API key
- In App Store Connect, open Users and Access, then the Integrations tab, and select App Store Connect API.
- With Team Keys selected, click Generate API Key, name it and choose its role.
- Download the private key and note the key ID and the issuer ID. The private key downloads only once, and Apple doesn't keep a copy.
Only an Admin can create team keys, and a team key reaches all your apps whatever its role. So pick the narrowest role that does the job: in App Store Connect, Customer Support is the role made for answering reviews.
Sign a token
- Sign a JSON Web Token with ES256 and your private key. Header:
algES256,kidyour key ID,typJWT. - Payload:
issyour issuer ID,iatnow,expat most 20 minutes later, andaudset toappstoreconnect-v1. - Send it as
Authorization: Bearer <token>and reuse it until it expires.
List an app's reviews
GET /v1/apps/{id}/customerReviews lists the reviews of one app; the id comes from GET /v1/apps. Useful parameters:
sort=-createdDateputs the newest first.createdDate,ratingand-ratingwork too, one at a time.filter[rating]=1,2keeps only those ratings, andfilter[territory]=USA,GBRonly those countries.exists[publishedResponse]=falsereturns reviews without a published reply.include=responseadds your reply to each review.limitgoes up to 200, andlinks.nextpoints to the next page.
Publish, change or delete a reply
POST /v1/customerReviewResponses publishes a reply: a customerReviewResponses resource with your text in responseBody and the review in its review relationship.
{
"data": {
"type": "customerReviewResponses",
"attributes": {
"responseBody": "Thanks for the report. Version 2.4.1 fixes the crash on start."
},
"relationships": {
"review": {
"data": { "type": "customerReviews", "id": "<review id>" }
}
}
}
}- If the review already has a reply, the same request overwrites it.
DELETE /v1/customerReviewResponses/{id}removes your reply.
After you send a reply
- Replies don't appear on the App Store straight away; Apple says to allow up to 24 hours.
- Until then the reply's
stateisPENDING_PUBLISH; once it's live,PUBLISHED. - The reviewer is notified and can update their review.
Sources
- App Store Connect API: Create or update a response to a customer review (opens in a new tab)
- App Store Connect Help: Respond to reviews (opens in a new tab)
- App Store Connect API: CustomerReviewResponseV1.Attributes (opens in a new tab)
- Apple Developer: Ratings, reviews, and responses (opens in a new tab)
Rate limits and errors
- Every response carries an
X-Rate-Limitheader such asuser-hour-lim:3500;user-hour-rem:500;. The limit counts requests made with the same key over the past hour, and Apple says actual limits vary. - Past the limit, requests fail with HTTP 429 and
RATE_LIMIT_EXCEEDED: wait, then retry. - A 403 means the key isn't allowed to make that request. A 409 on a reply means the data you sent isn't valid.
Questions developers ask
Can I reply to App Store reviews through the API?
Yes. POST /v1/customerReviewResponses publishes a reply, or overwrites the one you wrote before.
Which role does the API key need?
Customer Support is the App Store Connect role made for answering reviews. A team key reaches every app whatever its role, so there's no reason to give it more.
Why doesn't my reply show on the App Store yet?
Replies are published after a delay of up to 24 hours. Until then the reply's state is PENDING_PUBLISH.
How do I find reviews I haven't answered?
Add exists[publishedResponse]=false to the list request. A review whose reply is still waiting to be published counts as unanswered there.
How long does a token last?
At most 20 minutes for these requests. You don't need a new token for every request: reuse it until it expires.
Does the API tell me which language a review is in?
No. Each review comes with its territory, such as USA or JPN, not a language.
Is there a webhook for new reviews?
No. The API's webhook events don't include reviews, so check for new ones on a schedule.
Sources
- App Store Connect API: Create or update a response to a customer review (opens in a new tab)
- App Store Connect Help: Respond to reviews (opens in a new tab)
- App Store Connect API: Creating API keys for App Store Connect API (opens in a new tab)
- App Store Connect API: CustomerReviewResponseV1.Attributes (opens in a new tab)
- App Store Connect API: List all customer reviews for an app (opens in a new tab)
- App Store Connect API: Generating tokens for API requests (opens in a new tab)
- App Store Connect API: WebhookEventType (opens in a new tab)
Skip the integration
Merci AI does all of this for you. It reads your reviews with a key that only needs the Customer Support role, drafts a reply to each one in the language it was written in, and publishes through this same API only when you click Publish.