App Store Connect API

RSS for tag

The App Store Connect API helps you automate tasks usually done on the Apple Developer website and App Store Connect.

App Store Connect API Documentation

Posts under App Store Connect API subtopic

Post

Replies

Boosts

Views

Activity

Missing report instance segments
I'm following the flow to get my reports data: get the requests (ONGOING or ONE_TIME_SNAPSHOT) for my app (https://api.appstoreconnect.apple.com/v1/apps/{{appID}}/analyticsReportRequests?filter%5BaccessType%5D=ONGOING) get the report (App Sessions Standard, for example) (https://api.appstoreconnect.apple.com/v1/analyticsReportRequests/{{requestID}}/reports?filter%5Bname%5D={{report}}) get the daily instances of the ONGOING request (https://api.appstoreconnect.apple.com/v1/analyticsReports/{{reportID}}/instances?filter%5Bgranularity%5D=DAILY) get the segments for the selected instance (https://api.appstoreconnect.apple.com/v1/analyticsReportInstances/{{instanceID}}/segments) This flow used to work fine, but recently I noticed that the earliest instances (mostly of processing date 2025-02-24 until 2025-02-27 return an error when I'm trying to get the instance segments usint the URL https://api.appstoreconnect.apple.com/v1/analyticsReportInstances/{{instanceID}}/segments. The error is the following: "title": "The specified resource does not exist", "detail": "There is no resource of type 'analyticsReportInstances' with id '32f8b58b-07da-4d50-899f-34a7c0488927'" Even when the list of instances return me such object with ID when consulting the resource https://api.appstoreconnect.apple.com/v1/analyticsReports/{{reportID}}/instances?filter%5Bgranularity%5D=DAILY: { "data": [ { "type": "analyticsReportInstances", "id": "32f8b58b-07da-4d50-899f-34a7c0488927", "attributes": { "granularity": "DAILY", "processingDate": "2025-02-25" }, "relationships": { "segments": { "links": { "self": "https://api.appstoreconnect.apple.com/v1/analyticsReportInstances/32f8b58b-07da-4d50-899f-34a7c0488927/relationships/segments", "related": "https://api.appstoreconnect.apple.com/v1/analyticsReportInstances/32f8b58b-07da-4d50-899f-34a7c0488927/segments" } } }, "links": { "self": "https://api.appstoreconnect.apple.com/v1/analyticsReportInstances/32f8b58b-07da-4d50-899f-34a7c0488927" } }, And as for the days that I can retrieve data, there seems to be happening an Internal Server Error with frequency, but retrying the request seems to solve it.
0
0
86
Apr ’25
Incorrect data from ONE_TIME_SNAPSHOT
Hi, I need to calculate DAU, WAU, and MAU for our app and add these metrics to our corporate dashboard. To do this, I gathered data from App Sessions using the App Store Connect API. A few days after requesting the reports, they were generated, and I was able to download them. However, I noticed an issue: the data in the reports doesn't match across different granularities. The sum of sessions, unique devices, and total session duration varies across reports. For example: sum of Total Session Duration is 52626 for DAILY report, 84553 for WEKLY and 155894 for MONTHLY Is this expected behavior? I’m struggling to understand why this inconsistency occurs.
1
0
71
Apr ’25
App Store Connect API discrepancies
In the Apple Summary Sales Report using App Store Connect API, you can get a daily count of downloads and re-downloads by using the 1F and 3F values in the Product Type Identifier column. You can then cross check the download numbers against the downloads reported in the Analytics section of App Store Connect. When looking at a month of data, the first time download numbers seem to line up exactly ("1F" in the API versus "First-Time Downloads" in Appstore Store Connect). There is a discrepancy though between reported re-downloads. The total units for "3F" does not line up with the "Redownloads" numbers reported in the Analytics section of App Store Connect. The "3F" redownloads from the API appear to be 60% higher for a month compared to the App Store Connect reporting interface. What could be going on here? Is there some type of de-duplication process run on the App Store Connect web report data that is not run on the data coming out of the App Store Connect API? Any insight would be greatly appreciated.
1
0
84
Apr ’25
Possible to create App Groups with the App Store Connect API?
It looks like the capability identifier, merchantIds, can now officially be interacted with using the /v1/merchantIds endpoint. Curious if /v1/appGroups or /v1/cloudContainers will be added to the official API too. Fastlane currently supports these endpoints with the cookies authentication system. Unlike many endpoints, these ones are specifically required to ensure that apps with certain entitlements have correct remote settings otherwise the xcodebuild will fail. Appreciate any input here, thanks!
0
17
665
Mar ’25
No ability to withdraw beta app review submissions from ASC API
The endpoint /v1/betaAppReviewSubmissions supports post and get requests for creating and querying beta app store review submissions but I would like to be able to withdraw submissions by making a delete request like you can on the website and when using cookies authentication to the same endpoint with tools such as with Fastlane. Is this API intentionally missing in the official API or is it something that could be added?
0
22
494
Mar ’25
Finance Report 404 for Arcade game
Hello, we're experiencing an issue with downloading the Finance Report for the Arcade game via API; we received a 404 status code. We've confirmed a few things: 1) The vendor ID is correct. 2) We can download this report for the specified date through the UI. 3) Reports download successfully when we use other vendor IDs, which indicates the query parameters and authorization are correct. API: /v1/financeReports Params: {"filter[reportDate]": "2025-02", "filter[reportType]": "FINANCIAL", "filter[regionCode]": "ZZ", "filter[vendorNumber]": "*****"} Response Body { "errors" : [ { "id" : "6b0ced12-6bdc-4188-b806-e85caa43bd58", "status" : "404", "code" : "NOT_FOUND", "title" : "The request expected results but none were found", "detail" : "There were no sales for the date specified." } ] }
1
0
57
Mar ’25
Why Does revocationDate Change in a Refunded Transaction?
Hi all, I’ve noticed an inconsistency regarding the revocationDate in a refunded transaction and I’m trying to understand why this happens. Here are the details: Transaction ID: 390001625798742 In the refund notification, the revocationDate was: 1741095496000 However, when querying the same transaction later using the Transaction ID, the returned revocationDate was: 1742077082000 Why would the revocationDate change over time? Is this expected behavior, or does it indicate an issue with how the refund is being processed or queried? Thanks in advance for any insights!
0
0
44
Mar ’25
Error in Renewable Signature – Sandbox
I have an app that has been approved by Apple's review team and includes a renewable monthly subscription, which has also been approved. However, when testing the app with a sandbox account on a real device, I am encountering an issue. Within the app, when trying to fetch the subscription using the product ID to display it and allow the user to subscribe, I am unable to retrieve the subscription data, even though I am providing the correct ID and using a sandbox user account on a real device. I would like to request support to understand and resolve this issue. Is there any additional configuration or procedure I should follow to ensure that when fetching the subscription using the product ID, I receive the subscription data to display and allow the user to subscribe?
0
0
45
Mar ’25
400 PARAMETER_ERROR.INVALID from the NEXT Link in /v1/devices
We use Bitrise for our build pipelines and the step for building and signing the iOS app fails when calling the v1/devices endpoint. Specifically, the next endpoint from the App Store API returns this error when getting the next page of devices. PARAMETER_ERROR.INVALID: A parameter has an invalid value: 'XXXXXXXXXXXXX' is not a valid cursor for this request I am able to recreate this in Postman. The first query without a cursor works just fine. https://api.appstoreconnect.apple.com/v1/devices?filter%5Bplatform%5D=IOS&filter%5Bstatus%5D=ENABLED&limit=20 { data: [ ... ], "links": { "self": "https://api.appstoreconnect.apple.com/v1/devices?filter%5Bstatus%5D=ENABLED&filter%5Bplatform%5D=IOS&limit=20", "next": "https://api.appstoreconnect.apple.com/v1/devices?filter%5Bstatus%5D=ENABLED&filter%5Bplatform%5D=IOS&cursor=XXXXXXXXXXXX&limit=20" }, "meta": { "paging": { "total": 90, "limit": 20 } } } However when I try to get the next page of devices with the next URL from the App Store API I get the same error as before. { "errors": [ { "id": "...", "status": "400", "code": "PARAMETER_ERROR.INVALID", "title": "A parameter has an invalid value", "detail": "'XXXXXX' is not a valid cursor for this request", "source": { "parameter": "cursor" } } ] } Recently I refreshed the certificates and provisioning profiles and removed outdated device listings, so this might play a role in what is happening.
6
9
330
Mar ’25
Why does the appStoreVersionLocalizations API return a 409 error for specific languages when making a PATCH request?
I am using the App Store Connect API to update app information. When I send data for the Thai (th) locale, the update is successful. However, when I send data for English - United States (en-US), I receive a 409 error (STATE_ERROR). PATCH request URL (for updating whatsNew) is "https://api.appstoreconnect.apple.com/v1/appStoreVersionLocalizations/{localizationId" Example Data (translations list) ✅ Success: th (Thai) ["th", "แอพซื้อขายหุ้นสาธิตนี้เป็นแอพที่ให้คุณฝึกซื้อขายหุ้นโดยไม่ต้องใช้เงินจริง", "เราได้ปรับปรุงฟังก์ชันการทำงานและแก้ไขข้อบกพร่องเพื่อให้ใช้งานได้สะดวกยิ่งขึ้น"] ❌ Failure (409 error): en-US (English - United States) ["en-US", "This stock demo trading app is an app that allows you to practice stock trading without using real money.", "We have enhanced functionality and fixed bugs to make it even more comfortable to use."] Error Details The error occurs when executing the http.patch() request in the _updateAppStoreConnectInfo function. Error log: { "errors": [ { "id": "899835a1-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "status": "409", "code": "STATE_ERROR", "title": "The request cannot be fulfilled because of the state of another resource.", "detail": "Attribute 'whatsNew' cannot be edited at this time" } ] } What I Have Tried The request succeeds for th, but fails for en-US. Both requests have the same format. According to Apple’s official documentation (https://developer.apple.com/documentation) a 409 error occurs when there is an issue with the request data, but I am unsure what is incorrect. I tested 32 languages, and some worked while others did not. In this inquiry, I picked th (Thai) and en-US (English - United States) as examples. Questions Why does the en-US request return a 409 error while the th request succeeds? What could be causing the error message “Attribute ‘whatsNew’ cannot be edited at this time”? Is there a way to resolve this issue? Any help would be greatly appreciated. Thank you!
0
0
176
Mar ’25
How does Apple determine consumptionStatus for subscription refunds?
Hello, We are an app developer offering subscription-based services, and we want to better understand how Apple determines the consumptionStatus when processing refund requests for in-app subscriptions. Based on Apple’s documentation on subscription refund requests, we understand that the consumptionStatus value plays a key role in Apple’s refund decision-making process. However, the documentation does not provide a clear guideline on how much usage qualifies as consumptionStatus = 2 (partially used) vs. consumptionStatus = 3 (fully used). Our key questions: 1. Usage Threshold: Does Apple have a specific percentage of subscription duration (e.g., 20% of the subscription period) that determines whether a subscription is considered “fully used”? 2. Function-Based Usage: Does Apple prioritize certain types of user actions (e.g., unlocking premium content, engaging with subscription features) when evaluating consumptionStatus? 3. Best Practices: Are there recommended best practices to increase the credibility of our consumptionStatus = 3 submission to minimize unjustified refunds? 4. Refund Preference Impact: If we set refundPreference = 2 (deny refund), how much influence does it actually have on Apple’s decision? We aim to reduce unnecessary refunds while ensuring fairness to our users. Any official guidance or insights from other developers would be greatly appreciated! Thank you!
1
1
214
Mar ’25
Why does the appStoreVersionLocalizations API return a 409 error for specific languages when making a PATCH request?
I am using the App Store Connect API to update app information. When I send data for the Thai (th) locale, the update is successful. However, when I send data for English - United States (en-US), I receive a 409 error (STATE_ERROR). Example Data (translations list) ✅ Success: th (Thai) ["th", "แอพซื้อขายหุ้นสาธิตนี้เป็นแอพที่ให้คุณฝึกซื้อขายหุ้นโดยไม่ต้องใช้เงินจริง", "เราได้ปรับปรุงฟังก์ชันการทำงานและแก้ไขข้อบกพร่องเพื่อให้ใช้งานได้สะดวกยิ่งขึ้น"] ❌ Failure (409 error): en-US (English - United States) ["en-US", "This stock demo trading app is an app that allows you to practice stock trading without using real money.", "We have enhanced functionality and fixed bugs to make it even more comfortable to use."] Error Details The error occurs when executing the http.patch() request in the _updateAppStoreConnectInfo function. Error log: { "errors": [ { "id": "899835a1-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "status": "409", "code": "STATE_ERROR", "title": "The request cannot be fulfilled because of the state of another resource.", "detail": "Attribute 'whatsNew' cannot be edited at this time" } ] } What I Have Tried The request succeeds for th, but fails for en-US. Both requests have the same format. According to Apple’s official documentation (https://developer.apple.com/documentation) a 409 error occurs when there is an issue with the request data, but I am unsure what is incorrect. I tested 32 languages, and some worked while others did not. In this inquiry, I picked th (Thai) and en-US (English - United States) as examples. Questions Why does the en-US request return a 409 error while the th request succeeds? What could be causing the error message “Attribute ‘whatsNew’ cannot be edited at this time”? Is there a way to resolve this issue? Any help would be greatly appreciated. Thank you!
1
0
243
Mar ’25
500 server on https://api.appstoreconnect.apple.com/v1/appStoreReviewAttachments
I am trying to upload a review details attachment (video) to App Store Connect using the API. I am using the App Store Connect API Postman collection to test the process before implementation. Other APIs, such as creating a new version and updating review notes, are working fine. However, the https://api.appstoreconnect.apple.com/v1/appStoreReviewAttachments API consistently returns a 500 server error. I have attached the request and response screenshots below. Any help would be greatly appreciated. Thanks, Sathriyan, iOS Engineer, AITECH
1
0
305
Mar ’25
Exporting data from the Apple Store to BigQuery
Hi, We are exporting data from the Apple Store to BigQuery using the following APIs: https://developer.apple.com/documentation/appstoreconnectapi/get-v1-salesreports https://developer.apple.com/documentation/appstoreconnectapi/downloading-analytics-reports We have identified a discrepancy in the uninstallation data. While the installation figures match the data from the Apple Store, the uninstallation values obtained through the APIs do not match those reported on App Store Connect. The difference is significant, and we cannot find a clear explanation in the documentation. Could you guide us on how to obtain accurate uninstallation data or indicate if there are any known limitations in the APIs used? Thanks
0
0
197
Mar ’25
Finance Report API - no data
I'm querying the Finance Report api to get a January report for my app, yet no data is present. It's now March 3rd, and executing the following query results in a 404. url_financial = ( "https://api.appstoreconnect.apple.com/v1/financeReports" "?filter[regionCode]=ZZ" "&filter[reportDate]=2025-05" "&filter[reportType]=FINANCE_DETAIL" "&filter[vendorNumber]=redacted" ) If I change the report date to 2024-04, I get December, yet January is still unavailable. I understand that Apple's fiscal calendar does not follow the Gregorian calendar, however I'd expect that in March I could query the next period after December. Is this normal?
1
0
317
Mar ’25
API calls to get screenshots not working.
Hi am new to App Store Connect api calls. First tried all apps url and it works(let url = URL(string: "https://api.appstoreconnect.apple.com/v1/apps")! ) But I want to get screenshots for an app. and it gives an error. JWT Payload: { aud = "appstoreconnect-v1"; exp = "761634503.157082"; iat = "761633363.157082"; iss = "69a6de6e-6715-47e3-e053-5b8c7c11a4d1"; scope = ( "GET /v1/apps/{appId}/appScreenshotSets", "GET /v1/apps" ); } let url = URL(string: "https://api.appstoreconnect.apple.com/v1/apps/\(appId)/appScreenshotSets")! HTTP Status Code: 400 ["errors": <__NSSingleObjectArrayI 0x600000010320>( { code = "ENTITY_INVALID"; detail = "Invalid scope GET /v1/apps/{appId}/appScreenshotSets"; id = T6VMMMF3V4NGO7Z3AO4AHOU2QI; links = ""; status = 400; title = "JSON processing failed"; } ) ]
1
0
323
Feb ’25