merci

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 checked on 23 October 2026.

Create an API key

  1. In App Store Connect, open Users and Access, then the Integrations tab, and select App Store Connect API.
  2. With Team Keys selected, click Generate API Key, name it and choose its role.
  3. 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: alg ES256, kid your key ID, typ JWT.
  • Payload: iss your issuer ID, iat now, exp at most 20 minutes later, and aud set to appstoreconnect-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=-createdDate puts the newest first. createdDate, rating and -rating work too, one at a time.
  • filter[rating]=1,2 keeps only those ratings, and filter[territory]=USA,GBR only those countries.
  • exists[publishedResponse]=false returns reviews without a published reply.
  • include=response adds your reply to each review. limit goes up to 200, and links.next points 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 state is PENDING_PUBLISH; once it's live, PUBLISHED.
  • The reviewer is notified and can update their review.

Rate limits and errors

  • Every response carries an X-Rate-Limit header such as user-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.

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.

Get started

Answer your next review in a few minutes

Sign in with Google, connect a store and publish your first reply. The free plan needs no card.

Start free with Google