I use the App Store Connect API to run many parallel requests to update different parts of a single app. I am randomly getting errors such as
An unexpected error occurred on the server side.
or
The request timed out.
Usually when these errors happen, I can simply run the unsuccessful requests one or two more times and then they succeed.
Is there an explanation for this? Is this possibly caused by too many parallel requests? What is the maximum suggested number of parallel requests?
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.
Posts under App Store Connect API tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
I registered as a developer with Apple. Since I work alone, I have an individual developer account.
Unfortunately, I am unable to create an iOS distribution certificate from Visual Studio (for Windows). The option is grayed out even though my role in App Store Connect is "Admin".
Visual Studio also shows me that my user is an admin - yet I don't seem to have rights to create iOS distribution certificates. I can create iOS development certificates without any problems.
I've been using the App Store Analytics API for a few weeks now with no problem, but yesterday I started to get no data from the ONE_TIME_SNAPSHOT.
It's simply returning empty, although we haven't changed anything on the code (already checked 100 times).
Anyone here with the same problem?
I try to fetch subscriptions with included relationships according to the documentation
GET https://api.appstoreconnect.apple.com/v1/subscriptionGroups/12345678/subscriptions?include=[ "appStoreReviewScreenshot", "group", "introductoryOffers", "offerCodes", "prices", "promotedPurchase", "promotionalOffers", "subscriptionAvailability" ]
The form of include field is taken from the official OpenAPI spec
In the response I get a bunch of errors
What am I doing wrong?
{
"errors": [
{
"id": "0c02ac40-47c6-4107-b725-930e938a587f",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "'[ \"appStoreReviewScreenshot\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "cf2e214a-cab7-4e63-8971-d8974b0903f6",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"group\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "56d7e72f-cf29-4fac-9456-79074e294567",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"introductoryOffers\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "abdaf783-9a95-4053-a614-bcee7aedab45",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"offerCodes\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "53270b6c-f0f5-4d18-9004-2c99ce9905bd",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"prices\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "9676075f-d2fb-493e-b093-c973e3b103d2",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"promotedPurchase\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "451dd333-1c75-4e22-90e1-40c6532fa465",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"promotionalOffers\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "b0afb70e-ab6a-4aa3-9840-3e94844d3385",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"subscriptionAvailability\" ]' is not a valid relationship name",
"source": {
"parameter": "include"
}
}
]
}
I'm looking to automate device provisioning using App Store Connect API.
Two things are snagging me:
Updating Profiles API: Adding a new device seems clunky (read-all-devices, save, delete profile, recreate with a new device). Is there a simpler way to do it? I looked over the documentation and it seems like there's no streamlined way to do it, am I correct?
Entitlements API: Not public yet? Does anyone know about any plans to open it up soon? I asked Apple Support and they didn't provide any information on this. Specifying entitlements during provisioning is an important step.
Thanks for any help!
Hello,
We are seeing some confusing output from an App Store Connect API service:
https://developer.apple.com/documentation/appstoreconnectapi/list_all_price_points_for_an_app
curl -H 'Authorization: Bearer <REDACTED>' 'https://api.appstoreconnect.apple.com/v1/apps/354902315/appPricePoints?limit=200&filter[territory]=USA'
{
"data" : [
...
],
"links" : {
"self" : "https://api.appstoreconnect.apple.com/v1/apps/354902315/appPricePoints?filter[territory]=USA&limit=200",
"next" : "https://api.appstoreconnect.apple.com/v1/apps/354902315/appPricePoints?cursor=AMg.AMZSC44&filter[territory]=USA&limit=200"
},
"meta" : {
"paging" : {
"total" : 658,
"limit" : 200
}
}
}
The above API call is successful for us and returns a list of price points for the app. However, it appears to be missing some values - the full set from the above API call indicates that there are 658 entries, but if we call the same service for a different app there is a larger result set:
curl -H 'Authorization: Bearer <REDACTED>' 'https://api.appstoreconnect.apple.com/v1/apps/947178208/appPricePoints?limit=200&filter[territory]=USA'
{
"data" : [
...
],
"links" : {
"self" : "https://api.appstoreconnect.apple.com/v1/apps/947178208/appPricePoints?filter[territory]=USA&limit=200",
"next" : "https://api.appstoreconnect.apple.com/v1/apps/947178208/appPricePoints?cursor=AMg.AMeaC5w&filter[territory]=USA&limit=200"
},
"meta" : {
"paging" : {
"total" : 801,
"limit" : 200
}
}
}
Why is a larger set available for one app and not the other and how can I make the same set available for all of our organization's apps?
Hello Apple Developer Community,
I am encountering an issue with my iOS app submission on the App Store Connect platform. After testing the app extensively on various devices, including iPhones and iPads using Xcode, the app appeared to be functioning correctly with all screens visible.
However, upon submission, Apple rejected the app, citing that it launched a blank page specifically on the iPad Air (5th generation) running iOS version 17.4.1.
I have thoroughly reviewed the app's code and conducted additional testing, but have been unable to replicate the issue on my end. I am reaching out to the community for assistance in troubleshooting and resolving this issue.
Has anyone encountered a similar problem before, or does anyone have suggestions on how to address this issue effectively?
Any insights or advice would be greatly appreciated.
Thank you in advance for your help.
Automating the release process. (For policy reason need to use curl cmd, not permitted to use fastlane/etc for this step)
Reading the App Store Connect API, I am uncertain what to pass as the "http body" during the POST action. What is AppStoreVersionReleaseRequestCreateRequest I would guess it goes in the "--data-raw" of curl cmd?
There doesn't seem to be example snippet.
Draft cmd:
curl --location --request POST "<appStoreVersionReleaseRequests-api>" --header "Authorization: Bearer ${JWT}" --header 'Content-Type: application/json' --data-raw '{ "key?": "value?" }'
REF
https://developer.apple.com/documentation/appstoreconnectapi/manually_release_an_app_store_approved_version_of_your_app?changes=latest_major
Hello!
I am having issues retrieving data from the Apple Store Connect API.
Here is the call I am making:
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer SECUREINFORMATION")
$response = Invoke-RestMethod 'https://api.appstoreconnect.apple.com/v1/analyticsReports/r39-871f60a5-f26a-4de8-8fae-a9a1d506c1a0/instances' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
I have removed the JWT token for privacy.
Here is the response I am receiving:
{
"data": [],
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/analyticsReports/r39-871f60a5-f26a-4de8-8fae-a9a1d506c1a0/instances"
},
"meta": {
"paging": {
"total": 0,
"limit": 50
}
}
}
The issue is that no matter what filters I apply to my call or which ID I select to view instances for I am always returned an empty array. This is a problem because I need to download report data for our organisations apps using the API.
Please let me know how I restructure my call to be returned valid information. Feel free to reach out if there is any other information required!
It looks like Arabic is not supported by BetaBuildLocalizationCreateRequest
https://developer.apple.com/documentation/appstoreconnectapi/betabuildlocalizationcreaterequest/data/attributes
Is there any way to update this localization programmatically? If not, any timeline when it will be available?
The goal here is to add "What's New" notes automatically in CI
I've been trying to move my app creation code from fastlane to the App Store Connect API but I'm struggling with the docs. I'm unable to determine how I can create App Groups, iCloud Containers, and APNS keys.
Can someone point me towards the docs on how to create and manage these resources? Here's where I've been looking:
https://developer.apple.com/documentation/appstoreconnectapi
I imagine that I'm not looking for the correct terminology and I would appreciate the guidance to find what I'm looking for.
Thanks!!
I have been trying to enroll onto the program for sometime now but it doesn't go through. I provided every detail accurately but still haven't received any meaningful update. Is it normal that during the purchase we aren't asked to provide the CVV number of our credit card hence payment couldn't be processed or what? The email I received highlighted an enroll request and order. I have consistently sent so many messages but no replies. If the wait time is even a year, isn't it advisable to make it known to the people rather than making it seem an easy process of only two business days. The time I received has long elapsed and I don't how to go about it now. Nothing works.
Hello,
The issues we previously identified still need your attention.
If you have any questions, we are here to help. Reply to this message in App Store Connect and let us know.
Review Environment
Submission ID: 00fc9b08-3da8-4b89-8810-740174730062
Review date: April 21, 2024
Version reviewed: 1.0
Guideline 3.2.1 - Business - Other Business Model Issues - Acceptable
Your app provides financial services but does not meet all the requirements for apps providing these services. Specifically:
The app must be published under a seller and company name that is associated with the organization or company providing the services. In this case, your app must be published under a seller name and company name that reflects the Askmefund name.
The account that submits the app must be enrolled in the Apple Developer Program as an organization, and not as an individual.
These requirements give App Store users confidence that apps offering financial services are qualified to provide these services and will responsibly manage their data.
Please provide ownership documentation or modify the vendor seller name.
Please Help me.
Trying to get the relevant app (it exists and published) by this endpoint:
https://api.appstoreconnect.apple.com/v1/bundleIds/{id}/app
Receiving error 404:
"errors" : [ {
"id" : "ec7b1469-fe54-4ad5-9f2b-f665c31a6358",
"status" : "404",
"code" : "PATH_ERROR_REALTIONSHIP",
"title" : "The URL path is not valid",
"detail" : "The relationship 'app' does not exist on resource 'bundleIds'"
} ]
Doing everything according to documentation. Tried to pass both Bundle ID id and Bundle ID itself. What could be the problem?
Hello, I'm creating an app in Visual Studio 2022 (Windows) and I'm attempting to go through the steps of porting it to my iPhone. However, for the past two days I've been encountering an error when attempting to log in to my individual developer account using my API key information. The message I'm getting states:
"An unexpected error occurred, An unexpected error occurred on the server side. If this issue continues, contact us at https://developer.apple.com/contact/."
I've already tried clearing the cache and I've tried connecting on two different networks but nothing has worked. This is incredibly frustrating and I'm failing to find a solution.
Is this something I can even fix on my own, or do I just have to wait for Apple to resolve an issue?
Hello Apple Developer Community,
I am writing to request urgent support regarding the recent removal of our app, which has been available on the App Store for over a year serving a large user base. We were notified that our app violated Section 3.2(f) of the Apple Developer Program License Agreement, but we have not altered our operations recently and believe this to be a misunderstanding.
We have attempted to reach out via email but have not received further details or the opportunity to rectify or discuss the alleged issue. Historically, developers are given a chance to resolve concerns before an app is removed, a courtesy we were unfortunately not extended.
We seek clarity on the specific violations and an opportunity to address any issues to comply fully with Apple's guidelines. The removal has significantly impacted our users and our team, and we are committed to resolving this swiftly to restore service to our users.
Thank you for your attention to this urgent matter. We look forward to your guidance and support.
Below is the notification we received from Apple regarding the termination of our agreements:
Apple has terminated the Apple Developer Program License Agreement and the Apple Developer Agreement with our company effective immediately. According to the notice, the reason provided for this action is an alleged violation of Section 3.2(f) of the ADP Agreement, which includes accusations of fraudulent conduct associated with our account. This has led to the immediate cessation of our status as an Apple developer and termination under both the ADP and Developer Agreements.
Hi ,
Im trying to understand how to get the App Store Discovery and Engagement report from the API as mentioned here:
https://developer.apple.com/documentation/analytics-reports/app-store-discovery-and-engagement
this documentation shows i can get data on users engagement in my app but i cant find the documentation on how the api request needs to look like ..
did someone managed to get this data ?
Hello!
In the App Store Connect API there is no way to upload data in the UTC time zone, it is only available in the PST.
Meanwhile, in the web account it is possible to change the time zone, this leads to the impossibility of compiling analytics
This API endpoint https://api.appstoreconnect.apple.com/v1/salesReports
Hi to everyone,
I've been attempting to automate the download of sales reports from App Store Connect through their API, but I've facing error 403:
"id" : "2e8d7856-21f7-4436-9aa3-f43c36913d21",
"status" : "403",
"code" : "FORBIDDEN_ERROR",
"title" : "This request is forbidden for security reasons",
"detail" : "The API key in use does not allow this request"
Below is the Python script I'm using to execute the API call, and I've confirmed my user role is set to admin:
from datetime import datetime, timedelta
from time import time, mktime
import jwt
import requests
dt = datetime.now() + timedelta(minutes=19)
KEY_ID = "***"
ISSUER_ID = "***"
headers = {
"alg": "ES256",
"kid": KEY_ID,
"typ": "JWT",
}
payload = {
"iss": ISSUER_ID,
"iat": int(time()),
"exp": int(mktime(dt.timetuple())),
"aud": "appstoreconnect-v1",
}
with open("AuthKey_76VXCFGVZK.p8", "rb") as fh: # Add your file
signing_key = fh.read()
gen_jwt = jwt.encode(payload, signing_key, algorithm="ES256", headers=headers)
url = 'https://api.appstoreconnect.apple.com/v1/salesReports'
params = {
'filter[frequency]': 'YEARLY',
'filter[reportDate]': '2021',
'filter[reportSubType]': 'DETAILED',
'filter[reportType]': 'INSTALLS',
'filter[vendorNumber]': '***'
}
headers = {
'Authorization': f'Bearer {gen_jwt}'
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
with open('sales_report.csv', 'wb') as f:
f.write(response.content)
else:
print(f'Failed to download sales report: {response.status_code} - {response.text}')
I found in the forum some users (similar post) that had my same issue but it seem that there's no way out. So now I'm wondering if I made some mistake in my code.
I hope you can help me with this.
Thanks in advance.
Hello!
I'm tasked with implementing the App Store Connect Analytics API report exports and I've noticed some major discrepancies between the Standard and Detailed reports.
I need to use the Detailed report specifically because of the breakdown by 'Source Info' which lets us break downloads and revenue down by specific App Referrers.
I have exported and processed both Standard and Detailed reports for one of our apps. Standard report downloads totals do match with the App Store Connect Metrics dashboard. However the detailed report totals appear wildly inaccurate.
Just as an example, I requested ONE_TIME_SNAPSHOT reports for the same app and there are major differences in the volume of data between standard and detailed.
App Store Downloads Standard: 4,331,848 rows across 35 segments.
App Store Downloads Detailed: 1,476,971 rows across 18 segments.
The total numbers for First downloads and Redownloads are at least 40% lower in the detailed reports as they are in the standard reports/app store connect.
Unfortunately the Standard report does not offer the granularity we want and the Detailed report is missing too much data to be useful.
Are there no other official way of getting this data?