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

App Store Connect API - Installs/Deletes discrepencies with Analytics
Hi, I have a question about the numbers that we get from using the App Store Connect API and what is visible through Metrics/Analytics in App Store Connect's UI. Specifically, there appears to be significant discrepencies between counts for downloads, installs, deletes when comparing both data sets. I would expect them to be the same. Our workflow: Run app_installs_deletes through the API and download the provided report from the URL received Run Analytics, Total Downloads, through App Store Connect website In my case, running this for a day well in the past (to cater for catch up processing time), for example 20th Sept 2026, I get 37622 total downloads from the ASC website, but 21190 from the report data. This is a significant difference. What specific API report should be run to get the same data as displasy in App Store Connect? Looking to ensure that I have exact number from the ASC analytics/metrics, through an API report, on Installs, Updates, Deletes, Downloads. Any help appreciated. Developer support pointed me to post in the forums...
0
0
5
13m
Cloud-Based App Builder: Rules for Automated App Store Submission on Behalf of Users
Hello everyone, I'm building a cloud-based AI mobile app development platform called TryAppnetic (https://tryappnetic.com), where users can generate React Native/Expo applications and publish them under their own Apple Developer accounts. I'm currently researching how to implement automated iOS app publishing and have some questions regarding the Apple Developer Program License Agreement. Specifically, Section 2.9 appears to restrict third-party service providers from submitting applications to the App Store or using TestFlight on behalf of developers. Section 5.1 also introduces restrictions around certificates and private keys. I'd like to understand what is technically and legally permitted for a platform like ours. Our intended workflow: A user generates an iOS application using our platform. We build the application in our cloud infrastructure. The user authorizes access to their Apple Developer account. We use authorized credentials or App Store Connect API keys to manage the build and upload process. The application is published under the user's own Apple Developer account. My questions: Is it permitted for a cloud-based platform to build and compile iOS applications on behalf of users? Can we automate code signing using certificates and provisioning profiles belonging to the user, provided they explicitly authorize their use? Can we use customer-generated App Store Connect API keys to automate uploading builds to App Store Connect? Does Section 2.9 prohibit automated build uploads as well, or does it specifically prohibit the actual submission of an app for App Store review and TestFlight distribution? Would it be compliant to automate the entire build and upload process but leave the final App Store submission and TestFlight distribution actions to the account owner? I'm particularly interested in hearing from developers who have built cloud-based development platforms, CI/CD services, or automated iOS publishing workflows. I'd also appreciate clarification from anyone familiar with Apple's interpretation of Sections 2.9 and 5.1. Thanks!
0
0
20
1d
XmasMaps (Team ID: 34WAQXFJHP) Stuck in "Waiting for Review"
To Apple Engineers, I don't seem to get any updates or responses so I will keep trying to reach out here. Please work with me on what is needed to get my app approved. it is truly important to get it deployed as soon as we can so I can begin to launch and promote the app in App Store. It has already been live on the Google Play Store for a couple weeks. My app: XmasMaps has been going from "Waiting for Review" to "Rejected". I would fix the mistakes right away which would put XmasMaps back into "Waiting for Review". This App would be a useless App after November. Our app, XmasMaps, has been stuck in "Waiting for Review" since September 29th, 2026 (Submission ID: 1ced2377-575b-4bdd-812f-2852a23c2ffc). Timeline of previous actions: Sept 29, 2026: Initial submission Oct 8 & Oct 11, 2026: Resubmitted fixes following rejections Oct 14, 2026: new build resubmitted, currently stuck in "Waiting for Review" Oct 16, 2026: Expedited review request submitted Oct 19, 2026: Support customer inquiry submitted Android is already live, and we are hoping to clear iOS review so users can access the platform ahead of the upcoming holiday season. Oct 24, 2026: Rejected again for something already built into my latest build. i resubmitted right away and now put back into "waiting for review" when I would expect that the engineer who rejected it would take it back and finalize my app. Oct 28, 2026: As of today, I opened multiple app requests for an update and update the forum multiple times until I can try to get a response. Submission ID: 1ced2377-575b-4bdd-812f-2852a23c2ffc Support Case ID: 102982950152 / 103008467960 Team ID: 34WAQXFJHP I ask, please assist and review my app. I really need it live on both platforms to promote it. Please let me know if any additional information is needed from my side. Thank you.
1
0
163
1d
Sandbox subscription purchase fails with ASDServerErrorDomain 3504
Type: Auto-renewable subscription Sandbox Storefront: USA StoreKit successfully loads the subscription product and returns its correct name and price (US$29.99). However, every purchase attempt fails: ASDServerErrorDomain Code=3504 AMSServerErrorCode=3504 "Item not found" client-environment-type=Sandbox storefront-country-code=USA This reproduces both in a TestFlight build and in iPhone Developer Settings > Test In-App Purchases. Please verify the app-product linkage and Sandbox commerce availability for this subscription product. Purchase did not return a transaction: Error Domain=ASDServerErrorDomain Code=3504 "找不到此项目。" UserInfo={storefront-country-code=USA, AMSServerErrorCode=3504, client-environment-type=Sandbox, NSLocalizedFailureReason=找不到此项目。} HKIPO-IAP 11:12:33.712 purchase error: type=StoreKit.Product.PurchaseError, domain=StoreKit.Product.PurchaseError, code=1, description=無法使用項目, failureReason=目前無法使用此項目。, underlying=nil, userInfo={}
1
1
847
2d
Receipt validation: Under what circumstances can receipt.in_app be empty after a successful consumable purchase?
Hi everyone, I'm investigating an issue related to StoreKit 1 receipt validation and would appreciate any insight from Apple engineers or developers who have encountered this before. Environment StoreKit 1 Consumable In-App Purchase iOS 16 / iOS 17 / iOS 18 (observed on multiple versions) Receipt validation performed on our server Receipt is read from the app bundle after the transaction completes Issue Occasionally, after a purchase succeeds and the transaction reaches the SKPaymentTransactionStatePurchased state, the App Receipt exists and can be decoded successfully, but the receipt contains: { "receipt": { ... "in_app": [] } } The in_app array is completely empty. As a result, our server cannot find the purchased product in the receipt and cannot complete receipt validation. Questions I'd like to understand under what circumstances Apple may return an App Receipt where receipt.in_app is empty. Specifically: Is it expected behavior that receipt.in_app can be empty after a successful consumable purchase? Could this happen if the app reads the receipt before the receipt has been updated? Is there any possibility that calling finishTransaction: before reading the receipt could cause the purchase record not to appear in receipt.in_app? If receipt synchronization is delayed, what is Apple's recommended approach? Wait and retry? Issue an SKReceiptRefreshRequest? Or validate using another mechanism? Are there any documented scenarios where Apple intentionally returns an empty in_app array? Additional Information The transaction state is Purchased. The purchase callback is received successfully. We have confirmed that the receipt file exists. The issue occurs only occasionally and cannot be reproduced consistently. Most purchases contain the expected in_app entry. Any clarification about the expected behavior of the App Receipt or recommended best practices would be greatly appreciated. Thank you!
1
0
791
6d
Testing Declared Age Range API on Production
Hello, We want to ensure that our Declared Age Range API is working correctly, in Production, but we had concerns on how this is done. Do we need to have an account created from Texas with a credit card/addressed based in Texas? What's the best approach to be able to test this in a live environment to ensure everything is working as intended? Thank You.
0
0
33
6d
Create app in Appstore using AppStoreConnect API is giving an error.
Hello Apple Developer Team, I've followed the AppStoreConnect API documentation and created the following: I've created a API Key in App store > Integrations > Teams key, gave the role as admin. Created a valid JWT token When fetching the GET v1/apps, I can see the list of apps. Also I was able to make GET v1/users as well successfully. I've the valid bundle Id and capabilities enabled in the developer portal. Facing an issue while creating an app in App Store using AppStoreConnect API using POST call: This is my ruby script: response = api_request( method: :post, path: "/v1/apps", token: token, body: { data: { type: 'apps', attributes: { name: APP_NAME, primaryLocale: LOCALE, sku: "SKU#{Time.now.to_i}", bundleId: BUNDLE_ID, platform: 'IOS' } } } ) It gives me below error: { "errors": [ { "id": "09b465fc-316f-47b4-9bc3-9c340cb966aa", "status": "403", "code": "FORBIDDEN_ERROR", "title": "The given operation is not allowed", "detail": "The resource 'apps' does not allow 'CREATE'. Allowed operations are: GET_COLLECTION, GET_INSTANCE, UPDATE" } ] } Did anyone was able to successfully create the app in App Store via AppStoreConnect API? Could you please help me identify the root cause for the above issue and provide some inputs so that I could work on resolving them and move forward in the deployment process. Appreciate your help in reviewing this. Thank you, Santosh
3
1
1.4k
6d
No App Store Connect API endpoint to associate a Bundle ID with an Apple Pay Merchant ID
We manage provisioning for a large number of App IDs across multiple apps via CI, using the App Store Connect API (not session-based Spaceship/Xcode auth). Capability management works well end to end for everything we've tried — Push Notifications, App Groups, Associated Domains, Data Protection, etc. can all be created, updated, and deleted via POST/PATCH/DELETE on /v1/bundleIdCapabilities. Apple Pay is the one exception. We can enable the Apple Pay capability itself via the API the same way as anything else, but there's no way to associate that capability with a specific Merchant ID. /v1/merchantIds exists as its own resource, but nothing in the bundleIdCapabilities or bundleIds schema links to it — no relationship, no include, no dedicated endpoint. In practice this means every new Apple Pay-enabled App ID we provision needs someone to go into the Developer Portal by hand (Identifiers → App ID → Capabilities → Apple Pay → select Merchant ID) before the generated provisioning profile will actually build — otherwise Xcode fails with errors like "doesn't include the Apple Pay capability" / "doesn't support the Merchant ID". Every other capability we use is fully scriptable; this is the one manual step left in an otherwise automated pipeline. Has anyone found a documented (or undocumented) way to do this via the API? If this is a confirmed gap rather than something we're missing, I've filed it as FB24414090 — if you've hit the same thing, adding your own Feedback number to a report on the same gap seems to be one of the few things that actually helps get traction internally, so feel free to reference this thread if you file one too.
2
0
759
6d
Getting Active Devices via the API?
I am trying to retrieve the numbers displayed in "App Analytics" under "Metrics" > "Active Devices" using the API. Since there does not seem to be a dedicated report for this metric I am using the daily "App Sessions Standard" report and by looking at the "Sessions" field I am able to recreate the numbers displayed for the "Sessions" metric. However if I try to infer the active devices by looking at the "Unique Devices" field my numbers for individual days are in the same ballpark (deviations may be attributable to privacy reasons?), but the total number of devices is way off. Is there a better way to recreate this metric?
2
2
530
1w
I hooked an AI up to App Store Connect, Meta Ads, and Firebase via official APIs. It is a marketing monster, but does this violate Apple's TOS?
Today I witnessed the real power of AI beyond just writing code. I am using it as a super marketer to drive up my app business, and the results are incredible. This is what I have set up. I provided read access to the AI using their official APIs for: App Store Connect Apple Search Ads Meta Ads Firebase Analytics Local app source code By combining the source code with real performance data, the AI ran a thorough analysis and suggested concrete, actionable items to improve my overall app business. My main concern is whether this is allowed by Apple. Specifically, does Apple permit using AI agents to query App Store Connect and Apple Search Ads through their official APIs? The setup is too powerful not to use, but we still need to abide by Apple rules. Has anyone else looked into this or tried a similar workflow?
1
0
247
1w
How to specify dimensions in App Analytics reports API?
I'm fetching Apple Store Connect data from the API (in particular, fetching the App Store Purchases report) and trying to replicate the dashboards that we can see under Analytics > Metrics. The thresholding that Apple applies ("Omits values with data from fewer than 5 users or 5 unique devices") means that a lot of data is lost. Is there a way of specifying the dimensions of the report? If we had less dimensions, the threshold would affect to less rows of data, and we would be able to analyze more data. It's strange that from the website of App Store Analytics we can get the data, but through the automated reports we cannot or a lot of data is lost due to not being able to set the report dimensions.
2
0
641
2w
Request for a supported endpoint to create apps (POST /v1/apps)
We are requesting a supported App Store Connect API endpoint for creating a new app record, for example POST /v1/apps. We run an automated "create app" workflow that sets up new apps as part of our app management service. The App Store Connect API supports reading and updating apps, but the Apps documentation (https://developer.apple.com/documentation/appstoreconnectapi/apps) lists no way to create one. A new app can only be created on the App Store Connect website. Today our approach is using a third-party library (fastlane's Spaceship) that calls the private endpoints behind the App Store Connect website. Those endpoints can change at any time, and if they do, app creation and our automation will stop working. A supported endpoint, authenticated with an App Store Connect API key, would let us create apps reliably. Thank you for considering this request.
0
1
174
3w
App Store Connect API authorization for Game Center player score and achievement submissions
We are calling these App Store Connect API endpoints from our server: curl --request POST \ --url https://api.appstoreconnect.apple.com/v1/gameCenterLeaderboardEntrySubmissions \ --header 'Authorization: Bearer JWT_Token' \ --header 'Content-Type: application/json' \ --data '{ "data": { "type": "gameCenterLeaderboardEntrySubmissions", "attributes": { "bundleId": "bundleId", "score": "1", "scopedPlayerId": "scopedPlayerId, "submittedDate": "date", "preReleased": true, "vendorIdentifier": "vendorIdentifier" } } }' curl --request POST \ --url https://api.appstoreconnect.apple.com/v1/gameCenterPlayerAchievementSubmissions \ --header 'Authorization: Bearer JWT_Token' \ --header 'Content-Type: application/json' \ --data '{ "data": { "type": "gameCenterPlayerAchievementSubmissions", "attributes": { "bundleId": "bundleId", "vendorIdentifier": "vendorIdentifier", "percentageAchieved": 1, "scopedPlayerId": "scopedPlayerId, "submittedDate": "Date", "preReleased": true } } }' According to https://developer.apple.com/documentation/appstoreconnectapi/app-store-connect-api-3-2-release-notes We should be able to set player score and achievements. We use an active Team App Store Connect API key and generate an unscoped ES256 JWT with aud: appstoreconnect-v1. The key has high-level App Store Connect permissions. We followed documentation: https://developer.apple.com/documentation/appstoreconnectapi https://developer.apple.com/documentation/appstoreconnectapi/post-v1-gamecenterplayerachievementsubmissions https://developer.apple.com/documentation/appstoreconnectapi/post-v1-gamecenterleaderboardentrysubmissions Both requests return: { "status": "403", "code": "FORBIDDEN_ERROR", "title": "This request is forbidden for security reasons", "detail": "The API key in use does not allow this request" } The player is authorised via GameKit on the mobile app. The API key can read: https://api.appstoreconnect.apple.com/v1/apps/:id https://api.appstoreconnect.apple.com/v2/gameCenterLeaderboards/:id. Which exact App Store Connect API key role or permission is required for these endpoints? Is server-to-server submission supported using a Team API key?
0
0
178
3w
App Store Connect Metrics via REST API
I hope this message finds you well. I’m reaching out to ask whether specific App Store Connect metrics available in the App Analytics dashboard can also be accessed via the App Store Connect REST API. I have reviewed the official API documentation, but I couldn’t find confirmation regarding the metrics listed below. Could you kindly clarify if the following metrics are available through the REST API? And if so, could you point me to the relevant endpoints or documentation? From the "Usage" group: Installations (Opt-in only) Active Devices Deletions (Uninstalls) From the "App Store" group: Impressions (Unique Devices) Product Page Views (Unique Devices) If these metrics are not available via the REST API, is there an alternative method to programmatically access or export them? Thank you very much in advance for your help and guidance.
5
3
1.7k
Oct ’26
Unable to download App Store Connect API keys in iOS Safari
Posting here to see if anyone has found a workaround and/or to get Apple employees' eyes on it. I'm not sure when this bug was introduced but I've found that in Safari on iOS 27, I'm unable to download API keys from App Store Connect. Reported as a Safari bug in Feedback Assistant (FB24994724). I checked web inspector's console and network logs for both my iPad and iPhone; no JS errors and a nondescript network error for the key's fetch request. Google Chrome for iPad/iPhone downloads the .p8 key file without issue, so this feels more like a Safari bug than an App Store Connect bug.
0
0
318
Sep ’26
reviewSubmissions concurrency limit (CONCURRENT_REVIEW_SUBMISSION_LIMIT_EXCEEDED) - correct batching strategy?
We are automating subscription review submissions via the App Store Connect API (POST /v1/reviewSubmissions, /v1/reviewSubmissionItems) for an app with many creator-defined in-app subscriptions (App ID: 6777003020). We would appreciate clarification on the following, as the public documentation appears inconsistent with what we observe in production: What is the actual concurrency limit, and does it vary? We received this live error when calling POST /v1/reviewSubmissions: { "status": "409", "code": "STATE_ERROR.ENTITY_STATE_INVALID", "detail": "This resource cannot be reviewed, please check associated errors to see why.", "meta": { "associatedErrors": { "/apps/6777003020": [{ "status": "409", "code": "STATE_ERROR.CONCURRENT_REVIEW_SUBMISSION_LIMIT_EXCEEDED", "detail": "Unable to create reviewSubmission for appId=6777003020 reviewSubmissionType=DEFAULT platform=ANY as maximum limit=5 of concurrency has reached" }] } } } This says the limit is 5. However, your public documentation ("Overview of submitting for review") states: "A platform can have a maximum of two submissions under review at a time: one that includes an app version and one that includes items… without an app version." Could you confirm: Is 5 the correct, current limit for item-only (reviewSubmissionType=DEFAULT, no app version) reviewSubmissions specifically for in-app purchases/subscriptions? Does this limit scale with account size, app size, or number of in-app purchases, or is it a fixed platform-wide constant for every developer account? Is this the same quota referenced by the deprecated subscriptionSubmissions resource's undocumented SUBMISSION_LIMIT_REACHED error, or an entirely separate one? 2. What counts against the limit, and for how long? Does a reviewSubmission count against this limit from the moment it's created (READY_FOR_REVIEW), or only once actually submitted (WAITING_FOR_REVIEW/IN_REVIEW)? If we create a reviewSubmission and never call submitted:true on it, does it still occupy a slot indefinitely, or does Apple expire/release it automatically after some period? Is there a reliable, documented way to cancel/release a reviewSubmission via the API to free a slot on demand, and is that guaranteed to complete promptly? (We're aware of forum reports of CANCELING state persisting for extended periods without resolution.) 3. Can this limit be raised for our account? Is there a process (support request, account tier, or otherwise) to request a higher concurrency limit for automated review submissions, given we manage subscriptions on behalf of many independent creators? Proposed workaround — please confirm whether this resolves the issue: Per your documentation, a single reviewSubmission can hold up to 200 reviewSubmissionItems. Our proposed fix is to stop creating one reviewSubmission per subscription, and instead: Check for an existing, still-editable (READY_FOR_REVIEW) reviewSubmission for the app. If one exists, add the new subscription as an additional item to it (up to the 200-item cap) rather than creating a new reviewSubmission. Only create a new reviewSubmission when none exists in a state that still accepts new items. Could you confirm whether this is in fact the intended/correct usage pattern to stay under the concurrency-5 limit — i.e., does batching multiple pending subscription changes into a single, shared reviewSubmission avoid tripping CONCURRENT_REVIEW_SUBMISSION_LIMIT_EXCEEDED, since it reduces the number of reviewSubmission objects created regardless of how many items each one carries? Or does adding items to an already-WAITING_FOR_REVIEW/IN_REVIEW submission trigger a different restriction we should also account for? Thank you — happy to provide additional logs/request IDs if useful
1
0
279
Sep ’26
All App Store Connect API keys return 401 NOT_AUTHORIZED on a new account — "Last Used" never populates (Team and Individual keys, JWT verified correct)
Every App Store Connect API key on my team returns 401 NOT_AUTHORIZED for every request, since enrollment. I believe the ASC API entitlement was never provisioned for my team server-side, and I can't find any way to verify or fix that myself. Setup: Individual (paid) Apple Developer Program membership, enrolled 2026-08-12. Team ID 736ZTRRS22, Issuer ID 20166a52-0258-4dbc-80cd-c1e63d55cd56. All agreements Active (Free Apps, Paid Apps, banking, tax). Note: agreement problems surface as 403 REQUIRED_AGREEMENTS_MISSING_OR_EXPIRED, not 401. What fails — everything, identically: GET https://api.appstoreconnect.apple.com/v1/apps → HTTP/2 401 {"errors":[{"status":"401","code":"NOT_AUTHORIZED","title":"Authentication credentials are missing or invalid."}]} Three separate TEAM keys (Admin access), created per the documentation: 7293F9VQS5 (active), plus two since revoked. All 401. One INDIVIDUAL key (YBQLYQZPDATE) with the documented individual payload ("sub":"user", no "iss") — also 401. Individual keys don't use the Issuer ID, so this rules out a wrong Issuer ID or a corrupt team-key record. "Last Used" under Users and Access → Integrations → App Store Connect API has NEVER populated for any key, suggesting my tokens are never resolved to a key record at all. The 401s carry no "id" field in the error object and no X-Request-ID header — only x-apple-jingle-correlation-key (values available on support case 20000139980951, along with screenshots). Control test proving the client side is correct: The identical ES256 signing code, on the same machine and clock, using my APNs key, is ACCEPTED by both api.push.apple.com and api.sandbox.push.apple.com (HTTP/2 400 BadDeviceToken — i.e., authentication succeeded and only my deliberately-invalid test device token was rejected). So key handling, signature format, system clock, and Team ID are all confirmed good. Only the App Store Connect API rejects. Team-key JWT (per "Generating Tokens for API Requests"): header {"alg":"ES256","kid":"7293F9VQS5","typ":"JWT"} payload {"iss":"20166a52-0258-4dbc-80cd-c1e63d55cd56","iat":, "exp":<now+600>,"aud":"appstoreconnect-v1"} Also reproduced with PyJWT and with fastlane — identical 401. Developer Support (case 20000139980951) said API troubleshooting is out of scope for them and pointed me here. Question for Apple engineers: can someone check whether the App Store Connect API entitlement is actually provisioned for team 736ZTRRS22, and whether the key records above are bound to the team? Is there any developer-visible way to see or re-trigger that provisioning? Happy to provide correlation keys / timestamps for specific failing requests.
0
0
250
Sep ’26
App Ratings missing from Connect API
Hello, We are trying to extract our lifetime app star ratings data from the App Store Connect API but we couldn't find the resource anywhere. We were able to successfully get all app reviews data from this endpoint GET https://api.appstoreconnect.apple.com/v1/apps/{id}/customerReviews based on the official documentation. We validated that we received all reviews, these reviews also include the star ratings. However, the number of star ratings that we see on the App Store console is way less than the one we got from reviews API since star ratings can be submitted without a text review. Any idea where can we get the data of lifetime star ratings using the Connect API ? Thanks !
2
2
1.4k
Aug ’26
Reporter says "Network is available but cannot connect to application"
Hi, I use the Reporter utility to download sales reports. Periodically I have to update its credentials with a new token. Trying to do this today, I get: $ java -jar Reporter.jar p=Reporter.properties Sales.generateToken Please enter your username: Please enter your password: If you generate a new access token, your existing token will be deleted. You will need to save your new access token within your properties file. Do you still want to continue? (y/n): y Network is available but cannot connect to application. Check your proxy and firewall settings and try again.` Is anyone else having any problems with this? (I'm posting this in "App Store Connect API", but of course this isn't the modern App Store Connect API, it's something that has been around for much longer, and for which I don't see an appropriate forum category.)
1
0
292
Aug ’26
App Store Connect API - Installs/Deletes discrepencies with Analytics
Hi, I have a question about the numbers that we get from using the App Store Connect API and what is visible through Metrics/Analytics in App Store Connect's UI. Specifically, there appears to be significant discrepencies between counts for downloads, installs, deletes when comparing both data sets. I would expect them to be the same. Our workflow: Run app_installs_deletes through the API and download the provided report from the URL received Run Analytics, Total Downloads, through App Store Connect website In my case, running this for a day well in the past (to cater for catch up processing time), for example 20th Sept 2026, I get 37622 total downloads from the ASC website, but 21190 from the report data. This is a significant difference. What specific API report should be run to get the same data as displasy in App Store Connect? Looking to ensure that I have exact number from the ASC analytics/metrics, through an API report, on Installs, Updates, Deletes, Downloads. Any help appreciated. Developer support pointed me to post in the forums...
Replies
0
Boosts
0
Views
5
Activity
13m
Cloud-Based App Builder: Rules for Automated App Store Submission on Behalf of Users
Hello everyone, I'm building a cloud-based AI mobile app development platform called TryAppnetic (https://tryappnetic.com), where users can generate React Native/Expo applications and publish them under their own Apple Developer accounts. I'm currently researching how to implement automated iOS app publishing and have some questions regarding the Apple Developer Program License Agreement. Specifically, Section 2.9 appears to restrict third-party service providers from submitting applications to the App Store or using TestFlight on behalf of developers. Section 5.1 also introduces restrictions around certificates and private keys. I'd like to understand what is technically and legally permitted for a platform like ours. Our intended workflow: A user generates an iOS application using our platform. We build the application in our cloud infrastructure. The user authorizes access to their Apple Developer account. We use authorized credentials or App Store Connect API keys to manage the build and upload process. The application is published under the user's own Apple Developer account. My questions: Is it permitted for a cloud-based platform to build and compile iOS applications on behalf of users? Can we automate code signing using certificates and provisioning profiles belonging to the user, provided they explicitly authorize their use? Can we use customer-generated App Store Connect API keys to automate uploading builds to App Store Connect? Does Section 2.9 prohibit automated build uploads as well, or does it specifically prohibit the actual submission of an app for App Store review and TestFlight distribution? Would it be compliant to automate the entire build and upload process but leave the final App Store submission and TestFlight distribution actions to the account owner? I'm particularly interested in hearing from developers who have built cloud-based development platforms, CI/CD services, or automated iOS publishing workflows. I'd also appreciate clarification from anyone familiar with Apple's interpretation of Sections 2.9 and 5.1. Thanks!
Replies
0
Boosts
0
Views
20
Activity
1d
XmasMaps (Team ID: 34WAQXFJHP) Stuck in "Waiting for Review"
To Apple Engineers, I don't seem to get any updates or responses so I will keep trying to reach out here. Please work with me on what is needed to get my app approved. it is truly important to get it deployed as soon as we can so I can begin to launch and promote the app in App Store. It has already been live on the Google Play Store for a couple weeks. My app: XmasMaps has been going from "Waiting for Review" to "Rejected". I would fix the mistakes right away which would put XmasMaps back into "Waiting for Review". This App would be a useless App after November. Our app, XmasMaps, has been stuck in "Waiting for Review" since September 29th, 2026 (Submission ID: 1ced2377-575b-4bdd-812f-2852a23c2ffc). Timeline of previous actions: Sept 29, 2026: Initial submission Oct 8 & Oct 11, 2026: Resubmitted fixes following rejections Oct 14, 2026: new build resubmitted, currently stuck in "Waiting for Review" Oct 16, 2026: Expedited review request submitted Oct 19, 2026: Support customer inquiry submitted Android is already live, and we are hoping to clear iOS review so users can access the platform ahead of the upcoming holiday season. Oct 24, 2026: Rejected again for something already built into my latest build. i resubmitted right away and now put back into "waiting for review" when I would expect that the engineer who rejected it would take it back and finalize my app. Oct 28, 2026: As of today, I opened multiple app requests for an update and update the forum multiple times until I can try to get a response. Submission ID: 1ced2377-575b-4bdd-812f-2852a23c2ffc Support Case ID: 102982950152 / 103008467960 Team ID: 34WAQXFJHP I ask, please assist and review my app. I really need it live on both platforms to promote it. Please let me know if any additional information is needed from my side. Thank you.
Replies
1
Boosts
0
Views
163
Activity
1d
Sandbox subscription purchase fails with ASDServerErrorDomain 3504
Type: Auto-renewable subscription Sandbox Storefront: USA StoreKit successfully loads the subscription product and returns its correct name and price (US$29.99). However, every purchase attempt fails: ASDServerErrorDomain Code=3504 AMSServerErrorCode=3504 "Item not found" client-environment-type=Sandbox storefront-country-code=USA This reproduces both in a TestFlight build and in iPhone Developer Settings > Test In-App Purchases. Please verify the app-product linkage and Sandbox commerce availability for this subscription product. Purchase did not return a transaction: Error Domain=ASDServerErrorDomain Code=3504 "找不到此项目。" UserInfo={storefront-country-code=USA, AMSServerErrorCode=3504, client-environment-type=Sandbox, NSLocalizedFailureReason=找不到此项目。} HKIPO-IAP 11:12:33.712 purchase error: type=StoreKit.Product.PurchaseError, domain=StoreKit.Product.PurchaseError, code=1, description=無法使用項目, failureReason=目前無法使用此項目。, underlying=nil, userInfo={}
Replies
1
Boosts
1
Views
847
Activity
2d
Receipt validation: Under what circumstances can receipt.in_app be empty after a successful consumable purchase?
Hi everyone, I'm investigating an issue related to StoreKit 1 receipt validation and would appreciate any insight from Apple engineers or developers who have encountered this before. Environment StoreKit 1 Consumable In-App Purchase iOS 16 / iOS 17 / iOS 18 (observed on multiple versions) Receipt validation performed on our server Receipt is read from the app bundle after the transaction completes Issue Occasionally, after a purchase succeeds and the transaction reaches the SKPaymentTransactionStatePurchased state, the App Receipt exists and can be decoded successfully, but the receipt contains: { "receipt": { ... "in_app": [] } } The in_app array is completely empty. As a result, our server cannot find the purchased product in the receipt and cannot complete receipt validation. Questions I'd like to understand under what circumstances Apple may return an App Receipt where receipt.in_app is empty. Specifically: Is it expected behavior that receipt.in_app can be empty after a successful consumable purchase? Could this happen if the app reads the receipt before the receipt has been updated? Is there any possibility that calling finishTransaction: before reading the receipt could cause the purchase record not to appear in receipt.in_app? If receipt synchronization is delayed, what is Apple's recommended approach? Wait and retry? Issue an SKReceiptRefreshRequest? Or validate using another mechanism? Are there any documented scenarios where Apple intentionally returns an empty in_app array? Additional Information The transaction state is Purchased. The purchase callback is received successfully. We have confirmed that the receipt file exists. The issue occurs only occasionally and cannot be reproduced consistently. Most purchases contain the expected in_app entry. Any clarification about the expected behavior of the App Receipt or recommended best practices would be greatly appreciated. Thank you!
Replies
1
Boosts
0
Views
791
Activity
6d
Testing Declared Age Range API on Production
Hello, We want to ensure that our Declared Age Range API is working correctly, in Production, but we had concerns on how this is done. Do we need to have an account created from Texas with a credit card/addressed based in Texas? What's the best approach to be able to test this in a live environment to ensure everything is working as intended? Thank You.
Replies
0
Boosts
0
Views
33
Activity
6d
Create app in Appstore using AppStoreConnect API is giving an error.
Hello Apple Developer Team, I've followed the AppStoreConnect API documentation and created the following: I've created a API Key in App store > Integrations > Teams key, gave the role as admin. Created a valid JWT token When fetching the GET v1/apps, I can see the list of apps. Also I was able to make GET v1/users as well successfully. I've the valid bundle Id and capabilities enabled in the developer portal. Facing an issue while creating an app in App Store using AppStoreConnect API using POST call: This is my ruby script: response = api_request( method: :post, path: "/v1/apps", token: token, body: { data: { type: 'apps', attributes: { name: APP_NAME, primaryLocale: LOCALE, sku: "SKU#{Time.now.to_i}", bundleId: BUNDLE_ID, platform: 'IOS' } } } ) It gives me below error: { "errors": [ { "id": "09b465fc-316f-47b4-9bc3-9c340cb966aa", "status": "403", "code": "FORBIDDEN_ERROR", "title": "The given operation is not allowed", "detail": "The resource 'apps' does not allow 'CREATE'. Allowed operations are: GET_COLLECTION, GET_INSTANCE, UPDATE" } ] } Did anyone was able to successfully create the app in App Store via AppStoreConnect API? Could you please help me identify the root cause for the above issue and provide some inputs so that I could work on resolving them and move forward in the deployment process. Appreciate your help in reviewing this. Thank you, Santosh
Replies
3
Boosts
1
Views
1.4k
Activity
6d
No App Store Connect API endpoint to associate a Bundle ID with an Apple Pay Merchant ID
We manage provisioning for a large number of App IDs across multiple apps via CI, using the App Store Connect API (not session-based Spaceship/Xcode auth). Capability management works well end to end for everything we've tried — Push Notifications, App Groups, Associated Domains, Data Protection, etc. can all be created, updated, and deleted via POST/PATCH/DELETE on /v1/bundleIdCapabilities. Apple Pay is the one exception. We can enable the Apple Pay capability itself via the API the same way as anything else, but there's no way to associate that capability with a specific Merchant ID. /v1/merchantIds exists as its own resource, but nothing in the bundleIdCapabilities or bundleIds schema links to it — no relationship, no include, no dedicated endpoint. In practice this means every new Apple Pay-enabled App ID we provision needs someone to go into the Developer Portal by hand (Identifiers → App ID → Capabilities → Apple Pay → select Merchant ID) before the generated provisioning profile will actually build — otherwise Xcode fails with errors like "doesn't include the Apple Pay capability" / "doesn't support the Merchant ID". Every other capability we use is fully scriptable; this is the one manual step left in an otherwise automated pipeline. Has anyone found a documented (or undocumented) way to do this via the API? If this is a confirmed gap rather than something we're missing, I've filed it as FB24414090 — if you've hit the same thing, adding your own Feedback number to a report on the same gap seems to be one of the few things that actually helps get traction internally, so feel free to reference this thread if you file one too.
Replies
2
Boosts
0
Views
759
Activity
6d
Getting Active Devices via the API?
I am trying to retrieve the numbers displayed in "App Analytics" under "Metrics" > "Active Devices" using the API. Since there does not seem to be a dedicated report for this metric I am using the daily "App Sessions Standard" report and by looking at the "Sessions" field I am able to recreate the numbers displayed for the "Sessions" metric. However if I try to infer the active devices by looking at the "Unique Devices" field my numbers for individual days are in the same ballpark (deviations may be attributable to privacy reasons?), but the total number of devices is way off. Is there a better way to recreate this metric?
Replies
2
Boosts
2
Views
530
Activity
1w
I hooked an AI up to App Store Connect, Meta Ads, and Firebase via official APIs. It is a marketing monster, but does this violate Apple's TOS?
Today I witnessed the real power of AI beyond just writing code. I am using it as a super marketer to drive up my app business, and the results are incredible. This is what I have set up. I provided read access to the AI using their official APIs for: App Store Connect Apple Search Ads Meta Ads Firebase Analytics Local app source code By combining the source code with real performance data, the AI ran a thorough analysis and suggested concrete, actionable items to improve my overall app business. My main concern is whether this is allowed by Apple. Specifically, does Apple permit using AI agents to query App Store Connect and Apple Search Ads through their official APIs? The setup is too powerful not to use, but we still need to abide by Apple rules. Has anyone else looked into this or tried a similar workflow?
Replies
1
Boosts
0
Views
247
Activity
1w
How to specify dimensions in App Analytics reports API?
I'm fetching Apple Store Connect data from the API (in particular, fetching the App Store Purchases report) and trying to replicate the dashboards that we can see under Analytics > Metrics. The thresholding that Apple applies ("Omits values with data from fewer than 5 users or 5 unique devices") means that a lot of data is lost. Is there a way of specifying the dimensions of the report? If we had less dimensions, the threshold would affect to less rows of data, and we would be able to analyze more data. It's strange that from the website of App Store Analytics we can get the data, but through the automated reports we cannot or a lot of data is lost due to not being able to set the report dimensions.
Replies
2
Boosts
0
Views
641
Activity
2w
Request for a supported endpoint to create apps (POST /v1/apps)
We are requesting a supported App Store Connect API endpoint for creating a new app record, for example POST /v1/apps. We run an automated "create app" workflow that sets up new apps as part of our app management service. The App Store Connect API supports reading and updating apps, but the Apps documentation (https://developer.apple.com/documentation/appstoreconnectapi/apps) lists no way to create one. A new app can only be created on the App Store Connect website. Today our approach is using a third-party library (fastlane's Spaceship) that calls the private endpoints behind the App Store Connect website. Those endpoints can change at any time, and if they do, app creation and our automation will stop working. A supported endpoint, authenticated with an App Store Connect API key, would let us create apps reliably. Thank you for considering this request.
Replies
0
Boosts
1
Views
174
Activity
3w
App Store Connect API authorization for Game Center player score and achievement submissions
We are calling these App Store Connect API endpoints from our server: curl --request POST \ --url https://api.appstoreconnect.apple.com/v1/gameCenterLeaderboardEntrySubmissions \ --header 'Authorization: Bearer JWT_Token' \ --header 'Content-Type: application/json' \ --data '{ "data": { "type": "gameCenterLeaderboardEntrySubmissions", "attributes": { "bundleId": "bundleId", "score": "1", "scopedPlayerId": "scopedPlayerId, "submittedDate": "date", "preReleased": true, "vendorIdentifier": "vendorIdentifier" } } }' curl --request POST \ --url https://api.appstoreconnect.apple.com/v1/gameCenterPlayerAchievementSubmissions \ --header 'Authorization: Bearer JWT_Token' \ --header 'Content-Type: application/json' \ --data '{ "data": { "type": "gameCenterPlayerAchievementSubmissions", "attributes": { "bundleId": "bundleId", "vendorIdentifier": "vendorIdentifier", "percentageAchieved": 1, "scopedPlayerId": "scopedPlayerId, "submittedDate": "Date", "preReleased": true } } }' According to https://developer.apple.com/documentation/appstoreconnectapi/app-store-connect-api-3-2-release-notes We should be able to set player score and achievements. We use an active Team App Store Connect API key and generate an unscoped ES256 JWT with aud: appstoreconnect-v1. The key has high-level App Store Connect permissions. We followed documentation: https://developer.apple.com/documentation/appstoreconnectapi https://developer.apple.com/documentation/appstoreconnectapi/post-v1-gamecenterplayerachievementsubmissions https://developer.apple.com/documentation/appstoreconnectapi/post-v1-gamecenterleaderboardentrysubmissions Both requests return: { "status": "403", "code": "FORBIDDEN_ERROR", "title": "This request is forbidden for security reasons", "detail": "The API key in use does not allow this request" } The player is authorised via GameKit on the mobile app. The API key can read: https://api.appstoreconnect.apple.com/v1/apps/:id https://api.appstoreconnect.apple.com/v2/gameCenterLeaderboards/:id. Which exact App Store Connect API key role or permission is required for these endpoints? Is server-to-server submission supported using a Team API key?
Replies
0
Boosts
0
Views
178
Activity
3w
App Store Connect Metrics via REST API
I hope this message finds you well. I’m reaching out to ask whether specific App Store Connect metrics available in the App Analytics dashboard can also be accessed via the App Store Connect REST API. I have reviewed the official API documentation, but I couldn’t find confirmation regarding the metrics listed below. Could you kindly clarify if the following metrics are available through the REST API? And if so, could you point me to the relevant endpoints or documentation? From the "Usage" group: Installations (Opt-in only) Active Devices Deletions (Uninstalls) From the "App Store" group: Impressions (Unique Devices) Product Page Views (Unique Devices) If these metrics are not available via the REST API, is there an alternative method to programmatically access or export them? Thank you very much in advance for your help and guidance.
Replies
5
Boosts
3
Views
1.7k
Activity
Oct ’26
Unable to download App Store Connect API keys in iOS Safari
Posting here to see if anyone has found a workaround and/or to get Apple employees' eyes on it. I'm not sure when this bug was introduced but I've found that in Safari on iOS 27, I'm unable to download API keys from App Store Connect. Reported as a Safari bug in Feedback Assistant (FB24994724). I checked web inspector's console and network logs for both my iPad and iPhone; no JS errors and a nondescript network error for the key's fetch request. Google Chrome for iPad/iPhone downloads the .p8 key file without issue, so this feels more like a Safari bug than an App Store Connect bug.
Replies
0
Boosts
0
Views
318
Activity
Sep ’26
reviewSubmissions concurrency limit (CONCURRENT_REVIEW_SUBMISSION_LIMIT_EXCEEDED) - correct batching strategy?
We are automating subscription review submissions via the App Store Connect API (POST /v1/reviewSubmissions, /v1/reviewSubmissionItems) for an app with many creator-defined in-app subscriptions (App ID: 6777003020). We would appreciate clarification on the following, as the public documentation appears inconsistent with what we observe in production: What is the actual concurrency limit, and does it vary? We received this live error when calling POST /v1/reviewSubmissions: { "status": "409", "code": "STATE_ERROR.ENTITY_STATE_INVALID", "detail": "This resource cannot be reviewed, please check associated errors to see why.", "meta": { "associatedErrors": { "/apps/6777003020": [{ "status": "409", "code": "STATE_ERROR.CONCURRENT_REVIEW_SUBMISSION_LIMIT_EXCEEDED", "detail": "Unable to create reviewSubmission for appId=6777003020 reviewSubmissionType=DEFAULT platform=ANY as maximum limit=5 of concurrency has reached" }] } } } This says the limit is 5. However, your public documentation ("Overview of submitting for review") states: "A platform can have a maximum of two submissions under review at a time: one that includes an app version and one that includes items… without an app version." Could you confirm: Is 5 the correct, current limit for item-only (reviewSubmissionType=DEFAULT, no app version) reviewSubmissions specifically for in-app purchases/subscriptions? Does this limit scale with account size, app size, or number of in-app purchases, or is it a fixed platform-wide constant for every developer account? Is this the same quota referenced by the deprecated subscriptionSubmissions resource's undocumented SUBMISSION_LIMIT_REACHED error, or an entirely separate one? 2. What counts against the limit, and for how long? Does a reviewSubmission count against this limit from the moment it's created (READY_FOR_REVIEW), or only once actually submitted (WAITING_FOR_REVIEW/IN_REVIEW)? If we create a reviewSubmission and never call submitted:true on it, does it still occupy a slot indefinitely, or does Apple expire/release it automatically after some period? Is there a reliable, documented way to cancel/release a reviewSubmission via the API to free a slot on demand, and is that guaranteed to complete promptly? (We're aware of forum reports of CANCELING state persisting for extended periods without resolution.) 3. Can this limit be raised for our account? Is there a process (support request, account tier, or otherwise) to request a higher concurrency limit for automated review submissions, given we manage subscriptions on behalf of many independent creators? Proposed workaround — please confirm whether this resolves the issue: Per your documentation, a single reviewSubmission can hold up to 200 reviewSubmissionItems. Our proposed fix is to stop creating one reviewSubmission per subscription, and instead: Check for an existing, still-editable (READY_FOR_REVIEW) reviewSubmission for the app. If one exists, add the new subscription as an additional item to it (up to the 200-item cap) rather than creating a new reviewSubmission. Only create a new reviewSubmission when none exists in a state that still accepts new items. Could you confirm whether this is in fact the intended/correct usage pattern to stay under the concurrency-5 limit — i.e., does batching multiple pending subscription changes into a single, shared reviewSubmission avoid tripping CONCURRENT_REVIEW_SUBMISSION_LIMIT_EXCEEDED, since it reduces the number of reviewSubmission objects created regardless of how many items each one carries? Or does adding items to an already-WAITING_FOR_REVIEW/IN_REVIEW submission trigger a different restriction we should also account for? Thank you — happy to provide additional logs/request IDs if useful
Replies
1
Boosts
0
Views
279
Activity
Sep ’26
All App Store Connect API keys return 401 NOT_AUTHORIZED on a new account — "Last Used" never populates (Team and Individual keys, JWT verified correct)
Every App Store Connect API key on my team returns 401 NOT_AUTHORIZED for every request, since enrollment. I believe the ASC API entitlement was never provisioned for my team server-side, and I can't find any way to verify or fix that myself. Setup: Individual (paid) Apple Developer Program membership, enrolled 2026-08-12. Team ID 736ZTRRS22, Issuer ID 20166a52-0258-4dbc-80cd-c1e63d55cd56. All agreements Active (Free Apps, Paid Apps, banking, tax). Note: agreement problems surface as 403 REQUIRED_AGREEMENTS_MISSING_OR_EXPIRED, not 401. What fails — everything, identically: GET https://api.appstoreconnect.apple.com/v1/apps → HTTP/2 401 {"errors":[{"status":"401","code":"NOT_AUTHORIZED","title":"Authentication credentials are missing or invalid."}]} Three separate TEAM keys (Admin access), created per the documentation: 7293F9VQS5 (active), plus two since revoked. All 401. One INDIVIDUAL key (YBQLYQZPDATE) with the documented individual payload ("sub":"user", no "iss") — also 401. Individual keys don't use the Issuer ID, so this rules out a wrong Issuer ID or a corrupt team-key record. "Last Used" under Users and Access → Integrations → App Store Connect API has NEVER populated for any key, suggesting my tokens are never resolved to a key record at all. The 401s carry no "id" field in the error object and no X-Request-ID header — only x-apple-jingle-correlation-key (values available on support case 20000139980951, along with screenshots). Control test proving the client side is correct: The identical ES256 signing code, on the same machine and clock, using my APNs key, is ACCEPTED by both api.push.apple.com and api.sandbox.push.apple.com (HTTP/2 400 BadDeviceToken — i.e., authentication succeeded and only my deliberately-invalid test device token was rejected). So key handling, signature format, system clock, and Team ID are all confirmed good. Only the App Store Connect API rejects. Team-key JWT (per "Generating Tokens for API Requests"): header {"alg":"ES256","kid":"7293F9VQS5","typ":"JWT"} payload {"iss":"20166a52-0258-4dbc-80cd-c1e63d55cd56","iat":, "exp":<now+600>,"aud":"appstoreconnect-v1"} Also reproduced with PyJWT and with fastlane — identical 401. Developer Support (case 20000139980951) said API troubleshooting is out of scope for them and pointed me here. Question for Apple engineers: can someone check whether the App Store Connect API entitlement is actually provisioned for team 736ZTRRS22, and whether the key records above are bound to the team? Is there any developer-visible way to see or re-trigger that provisioning? Happy to provide correlation keys / timestamps for specific failing requests.
Replies
0
Boosts
0
Views
250
Activity
Sep ’26
App Ratings missing from Connect API
Hello, We are trying to extract our lifetime app star ratings data from the App Store Connect API but we couldn't find the resource anywhere. We were able to successfully get all app reviews data from this endpoint GET https://api.appstoreconnect.apple.com/v1/apps/{id}/customerReviews based on the official documentation. We validated that we received all reviews, these reviews also include the star ratings. However, the number of star ratings that we see on the App Store console is way less than the one we got from reviews API since star ratings can be submitted without a text review. Any idea where can we get the data of lifetime star ratings using the Connect API ? Thanks !
Replies
2
Boosts
2
Views
1.4k
Activity
Aug ’26
Reporter says "Network is available but cannot connect to application"
Hi, I use the Reporter utility to download sales reports. Periodically I have to update its credentials with a new token. Trying to do this today, I get: $ java -jar Reporter.jar p=Reporter.properties Sales.generateToken Please enter your username: Please enter your password: If you generate a new access token, your existing token will be deleted. You will need to save your new access token within your properties file. Do you still want to continue? (y/n): y Network is available but cannot connect to application. Check your proxy and firewall settings and try again.` Is anyone else having any problems with this? (I'm posting this in "App Store Connect API", but of course this isn't the modern App Store Connect API, it's something that has been around for much longer, and for which I don't see an appropriate forum category.)
Replies
1
Boosts
0
Views
292
Activity
Aug ’26