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?
App Store Connect API
RSS for tagThe App Store Connect API helps you automate tasks usually done on the Apple Developer website and App Store Connect.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
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.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
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.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
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!
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
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!
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!
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
Can Anyone help to find a app store connect API / endpoint though which I can pull out the data of Daily Crash Count on app.
Basic as per displayed here -
https://appstoreconnect.apple.com/analytics/app/d30/47*****34/metrics?chartType=singleaxis&measureKey=crashes&zoomType=day
Please help on priority.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
OC语言开发 APP上传到 TestFlight 的时候出现二进制文件失效 xcode版本是16.2 以前没有出现这样的情况 就是今年才开始出现这样的情况的
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
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
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
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
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
What App Store Connect API endpoint(s) do I need to use to get the release dates of an app's various app versions?
On App Store Connect itself, I can navigate to a given app and select "History", on the left side under General. See screenshot:
In the screenshot, you can clearly see that version 1.9 became Ready for Distribution on Nov 12, 2024 at 3:28 AM, and that version 1.10 became Ready for Distribution on February 18, 2025 at 8:10 AM.
However, I haven't been able to find to get any of these detailed status history via the App Store Connect API. Specifically I'm looking for release, or "go live", dates for the various versions of a given app.
I'd have expected one of these API endpoints, or some combination thereof, to include this information in some way, but I'm just not finding it:
GET https://api.appstoreconnect.apple.com/v1/apps/{id}/appStoreVersions
GET https://api.appstoreconnect.apple.com/v1/appStoreVersions/{id}
GET https://api.appstoreconnect.apple.com/v1/apps/{id}/builds
GET https://api.appstoreconnect.apple.com/v1/apps/{id}/reviewSubmissions
I've submitted FB16730940 and also via TSI.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
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?
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
Analytics & Reporting
The app references non-public selectors in Payload/ndisync.app/ndisync: _isKeyDown, _modifiedInput, _modifierFlags (ID: 663538aa-ad84-4142-9819-1ba8a58937a5)
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Hi Team,
We have released version 1.16 of our application. However, even after 3 hours of it being live, the Apple API below still returns the old version:
http://itunes.apple.com/in/lookup?bundleId=\(identifier)
As a result, users are seeing the "update application" screen. Please look into this issue and advise on how to resolve it.
Thanks,
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Hello,
We've integrated App Store Server Notifications V2 in our system. We are heavily relying on the ONE_TIME_CHARGE notification type to handle Consumable purchases, but this notification type is available only for Sandbox. And this is for a while now - starting with June 10th 2024 ( https://developer.apple.com/documentation/appstoreservernotifications/app-store-server-notifications-changelog#June-10-2024 ).
Can you please provide a timeline for when the ONE_TIME_CHARGE notification type will be available in Production ?
Thank you!
Hey there,
I'm building a service that requires receiving accurate sales/proceeds data along with the campaign name. From reading the documentation it looks to be fairly understandable, but in practice it is not.
I have been testing this for almost a week, and I never got "Detailed Report" for "App Store Purchases Detailed" analytics report. The same report for "App Downloads Detailed" is arriving normally, but not to for the purchases. I tested for two different apps where I have around 200 daily installs and 30 purchases on each.
I would love to get any thoughts on this from an Apple engineer!
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
Analytics & Reporting
Hello, I'm using the App Store Connect API to check and modify subscription prices. I know there can be only 1 outstanding future price change for subscription pricing, so I check for any scheduled future price changes (after today's date) and then delete them before setting new ones.
This works 95% of the time -- except in the last little bit before the date changes. For example, if it is 1 hour before midnight and tomorrow's date is when the scheduled price change goes into effect, when I try to delete, I'll get something like this:
The request failed with response code 409 ENTITY_ERROR.
There is a problem with the request entity. Cannot delete Subscription Price with id . Only future price changes can be deleted.
If I look at the same subscription in App Store Connect, it will still show it as a future price change, and won't show the usual buttons to modify or delete it. However, in App Store Connect, I can still hit the "+" button to create a new price change and it will successfully delete and replace the pending price change, which will then appear with the usual Delete and Edit buttons.
My first thought was that maybe it was a timezone issue, but if I go to put the new pricing into effect, that request fails with an error like this:
"errors" : [ {
"id" : "5a51c570-1f38-4fa0-b490-9fa979f4aecf",
"status" : "409",
"code" : "STATE_ERROR",
"title" : "The request cannot be fulfilled because of the state of another resource.",
"detail" : "Must delete future price change before creating a new price change."
} ]
So... my questions are:
Is this expected behavior?
How can App Store Connect replace the pending price change in the final hours but I can't do it with the API?
As a workaround, is there a set amount of time before the price change goes into effect where the prices should no longer be editable?
Thanks!
Hey there,
I'm building a service that requires receiving accurate app downloads and sales/proceeds data along with the campaign name. From reading the documentation it looks to be fairly understandable, but in practice it is not that straightforward.
For example, I received the first one-time-snapshot detailed report for the App Store Purchases, and it contains partial data for several days. Shouldn't that be a full report of everything in analytics for like last year or so? Should I expect it to be updated and extended in the coming days?
For the ongoing detailed report, I have not received anything yet, but I'm afraid it might have partial data as well. I will report here as well.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API
Analytics & Reporting
I am attempting to upload an application to the app store. The selected method was using Transporter through terminal commands. In this sense, I keep receiving a metadata error which is as follows :
Command (Assume values are filled in)
/usr/local/itms/bin/iTMSTransporter -m upload \
-u "MY_EMAIL" \
-p "YOUR_APP_SPECIFIC_PASSWORD" \
-f "/Users/isseyyohannes/Desktop/ALGORA_Performance.itmsp" \
--asc-provider "GL5BCCW69X" -v detailed
I receive the following error
Package Summary:
1 package(s) were not uploaded because they had problems:
/Users/isseyyohannes/Desktop/ALGORA_Performance.itmsp - Error Messages:
ERROR ITMS-3000: "Line 9 column 25: element "data_file" incomplete; missing required elements "checksum" and "size" at XPath /package/software_assets/asset/data_file"
ERROR ITMS-3000: "Line 12 column 24: element "software_metadata" not allowed here; expected the element end-tag or element "metadata_token" at XPath /package/software_metadata"
ERROR ITMS-3000: "Line 13 column 19: element "software" not allowed here; expected the element end-tag or element "game_center", "in_app_purchases", "products", "read_only_info" or "versions" at XPath /package/software_metadata/software"
ERROR ITMS-3000: "Line 16 column 28: element "bundle_id" not allowed anywhere; expected element "read_only_value" at XPath /package/software_metadata/software/read_only_info/bundle_id"
ERROR ITMS-3000: "Line 17 column 30: element "app_version" not allowed anywhere; expected element "read_only_value" at XPath /package/software_metadata/software/read_only_info/app_version"
ERROR ITMS-3000: "Line 18 column 33: element "product_family" not allowed anywhere; expected element "read_only_value" at XPath /package/software_metadata/software/read_only_info/product_family"
ERROR ITMS-3000: "Line 19 column 30: element "read_only_info" incomplete; missing required element "read_only_value""
ERROR ITMS-3000: "Line 20 column 20: element "software" incomplete; expected element "software_assets" or "software_metadata""
ERROR ITMS-3000: "Package "null" failed schema validation."
[2025-02-19 15:45:07 EST] <main> DBG-X: Returning 1
Essentially just a bunch of warnings about my metadata file which I edited manually to read the following
<?xml version="1.0" encoding="UTF-8"?>
<package version="software5.10" xmlns="http://apple.com/itunes/importer">
<provider>GL5BCCW69X</provider>
<team_id>GL5BCCW69X</team_id>
<software_assets>
<asset type="bundle">
<data_file>
<file_name>ALGORA_Performance.pkg</file_name>
<checksum type="sha1">7acb9fcb19eb203bdc6038f88d06a67386900b28</checksum>
<size>75619323</size>
</data_file>
</asset>
<software_metadata>
<software>
<vendor_id>93274081</vendor_id>
<read_only_info>
<read_only_value key="bundle_id">com.algora.ALGORA-Performance</read_only_value>
<read_only_value key="app_version">0.0.0</read_only_value>
<read_only_value key="product_family">macOS</read_only_value>
</read_only_info>
</software>
</software_metadata>
</software_assets>
</package>
Last note is that I manually created the metadata.xml file and moved it via local terminal for fear of having to use XCode which I am not familiar with.
ANY HELP IS APPRECIATED
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect
App Submission
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";
}
)
]
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Tags:
App Store Connect API