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

Unable to recreate a ONE_TIME_SNAPSHOT analytics report
Previously created a one time snapshot report that was later deleted. Trying to recreate it but keeping getting a 409. Been already a week since it was deleted. Error message { "errors" : [ { "id" : "b0d8d738-1744-463d-bdcf-a48fbfa5d715", "status" : "409", "code" : "STATE_ERROR", "title" : "The request cannot be fulfilled because of the state of another resource.", "detail" : "You already have such an entity" } ] } Reports request only returns the ONGOING reports link no ONE_TIME_SNAPSHOT . Wonder if it takes time although unlikely or might it be a cache or similar causing the problem.
4
1
1.5k
Jul ’25
Hang on retrieving StoreKit2 data in c++
I've been implementing in app purchases into an existing C++ app. I'm using the latest Swift StoreKit since the old ObjC interface is deprecated . There is a really weird problem where the swift/C++ bridging seems to get into a loop. After the Product structure is retrieved I have the following structure which I use to bridge to C++ public struct storeData { public var id : String public var displayName : String public var description : String public var price : String public var purchased : Bool = false public var level : Int = 0 } and this is passed back to the caller as follows public func getProducts (bridge : StoreBridge) -> [storeData] { bridge.products.sort { $0.price > $1.price } var productList : [storeData] = [] for product in bridge.products { let data : storeData = storeData(id: product.id, displayName: product.displayName, description: product.description, price: product.displayPrice, purchased: bridge.purchasedProductIds.contains(product.id) ) productList.append(data) } return productList } the "bridge" variable is a bridging class where the guts of the bridge resides, and contains the "products" array as a publishable variable. In the C++ code the data is retrieved by outProd->id = String(inProd.getId()); outProd->displayName = String(inProd.getDisplayName()); outProd->description = String(inProd.getDescription()); outProd->price = String(String(inProd.getPrice())); outProd->purchased = inProd.getPurchased(); The "String" is actually a JUCE string but that's not part of the problem. Testing this with a local StoreKit config file works fine but when I test with a sandbox AppStore the app hangs. Very specifically it hangs somewhere in the Swift thunk when retrieving the price. When I remove the line to retrieve the price everything works. And - and this is the weird bit - when I pad the price out with some random text, it now starts working (so I have a workaround). This is, however, slightly worrying behaviour. Ideas?
0
0
338
Jul ’25
iOS TestFlight Build constantly rejected with "App failed to load content" (Guideline 2.1) despite API key restriction removed
Hello Apple Developer Community, I am facing a persistent issue with my iOS TestFlight builds that keeps getting rejected for Guideline 2.1 - Performance - App Completeness, specifically "Your app failed to load any content at launch." (blank white screen). My app is "With Wans Camp Map" (App ID: com.jiro.withwanscampmap). Here's a summary of the situation: App Functionality: The app uses Google Sheets API to fetch campsite data (pins) and Google Maps API to display them on a map. Local Development (Expo Go): When running the app locally using npx expo start and connecting with the Expo Go app, and with the Google Cloud Platform (GCP) API key "Application restrictions" set to "None (no restriction)", the app loads successfully and displays all pins correctly. This confirms the API keys themselves and the data fetching logic are working. TestFlight Builds (Rejected): All attempts to upload builds via EAS Build (profile preview with autoIncrement: true in eas.json) and Transporter have resulted in rejection with the same Guideline 2.1 reason ("blank white screen"). Builds submitted: e.g., 1.0.0 (8), 1.0.0 (9), 1.0.0 (10). (Transporter always insists on build 8 for version 1.0.0, even after app.config.js and eas.json changes to increment. The latest successful upload was 1.0.0 (10).) Crucially, even with the GCP API key "Application restrictions" set to "None (no restriction)" (which should allow any client application), TestFlight builds are still rejected for the blank white screen. What I've already tried: Verified Google Sheets/Maps API keys are correct in GCP. Confirmed API keys are correctly passed from app.config.js (using process.env) and launch.json for local development. Set GCP API key "Application restrictions" to "None". Attempted various app.config.js version (1.0.0, 1.0.1, 1.0.2) and ios.buildNumber (8, 9, 10, 11, 100, 200) increments. Ensured eas.json has autoIncrement: true for preview profile and cli.appVersionSource removed. Updated eas-cli to @latest. Updated all expo and react-native related dependencies using npx expo install --check. Cleared npm cache and EAS build cache (--clear-cache). Rebuilt native projects with npx expo prebuild --clean (though not yet built after this specific step, as I'm writing this post). Confirmed iPhone connectivity to Mac for .ipa transfer. My main questions are: Given that API key restrictions are set to "None", what could still cause the app to fail loading content specifically in the TestFlight review environment? Is it possible that TestFlight's internal bundle ID or network environment is somehow conflicting with Google API access even with no restrictions? Why does App Store Connect consistently report the cfBundleVersion as "8" (or a small number) and reject on version conflicts, despite app.config.js and eas.json being configured for auto-incrementing/higher buildNumber? Is there a deeper cache or project state issue on Apple's side that prevents correct versioning? Are there any specific logs (e.g., console logs from the review device) that can be provided from the App Review team to help debug this "blank white screen" issue? What is the recommended approach to debug content loading issues in TestFlight builds when local Expo Go development works perfectly? Any insights or suggestions from Apple engineers or experienced developers in the community would be greatly appreciated. I am truly struggling with this persistent rejection. Thank you for your time and assistance. Best regards, Jiro26
1
0
367
Jul ’25
Server notifications v2 UNSUCCESSFUL_HTTP_RESPONSE_CODE
Hello. I'm currently implementing Apple Notification v2 to prepare for refunds for in-app purchases, but I'm not receiving requests from Apple servers to my backend server. I've applied HTTPS (TLS 1.2) and correctly registered production/sandbox notification URLs on App Store Connect. After requesting a test notification, when I check the status of testNotificationToken, I receive an UNSUCCESSFUL_HTTP_RESPONSE_CODE as follows: {"signedPayload":"......":[{"atteptDate":1752128001970,"sendAttemptResult":"UNSUCCESSFUL_HTTP_RESPONSE_CODE"}]} The endpoint for receiving notifications is set to accept POST requests with application/json format, and it responds with 200 (OK) without any content. However, Apple notifications are not coming through. Could anyone help me with this issue?
1
0
218
Jul ’25
Get transfer_sub failed when transfer an app
Our app ID is 708064914; When we transferred an app with Sign in with Apple function, and request the REST API to get transfer_sub, approximately 25% of the requests return error responses such as: {"error":"invalid_request","error_description":"User not found."} or {"error":"invalid_request"} User 001700.6b50fa0cdf564b4f83e3ac6b8dfb9a9b.1205 received the first error; User 000908.523b85e1dd704d808dbfac55425c5a7b.1916 received the second error. Here's the English translation: We want to understand under what circumstances these errors occur. Since we have already transferred once before, this is the second transfer. The "User not found" error might be related to IDs from the original team. However, we don't understand the meaning of the second error type and what circumstances might cause it.
1
0
76
Jul ’25
Uploading game
When uploading via Xcode or transporter: the ipa file contains the icons and the info.plist with CFBundleIconFiles too. Validation failed (409) Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 10.0. To support older versions of iOS, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface. (ID: 0445efd3-c340-47b3-ad02-b7c7a2737b47)
1
0
240
Jul ’25
How to Access Request Logs for Reporter Tool and App Store Connect API?
Context We hold an Apple Developer Program team account and rely on: • Reporter tool – for downloading financial reports (Sales and Trends, etc.) • App Store Connect API – for retrieving subscription, refund, and other sales data We are facing several management challenges: The Developer portal shows no history of Reporter or API requests. Once team members are granted access, we cannot verify their exact actions (download time, report type, date range, etc.). Lack of permission-usage auditing makes it hard to judge whether an action is legitimate or poses potential risk. Questions Does Apple provide an official way to view detailed request logs for the Reporter tool or the App Store Connect API? • If yes, please indicate where to access them (developer portal location or API endpoint) and what fields are included (timestamp, account used, request parameters, etc.). If no built-in logging exists, are there any alternative methods to help teams monitor permission usage? • For example, an event-notification mechanism when reports are generated or data is pulled. Are there plans to introduce an auditing feature in the future? If so, is there an estimated release timeframe? Thanks in advance for any guidance!
0
0
103
Jul ’25
Get transfer_sub failed when transfer an app
Our app ID is 708064914; When we transferred an app with Sign in with Apple function, and request the REST API to get transfer_sub, approximately 25% of the requests return error responses such as: {"error":"invalid_request","error_description":"User not found."} 001307.dba0ea2b147f45aa9e85de2abfb4c072.2047 received the first error; We want to understand under what circumstances these errors occur. Since we have already transferred once before, this is the second transfer. The "User not found" error might be related to IDs from the original team. Is that right?
0
0
135
Jul ’25
use https://api.appstoreconnect.apple.com/v1/devices return 403
// Request curl --location --request POST 'https://api.appstoreconnect.apple.com/v1/devices' --header 'Authorization: ${the_token}' --header 'Content-Type: application/json' --data-raw '{ "data": { "type": "devices", "attributes": { "name": "${the_device_name}", "udid": "${the_device_udid}", "platform": "IOS" } } }' // Response { "errors": [ { "status": "403", "code": "FORBIDDEN_ERROR", "id":"8a45808f-aa56-4e29-bef0-3f836d571a24","title": "This request is forbidden for security reasons", "detail": "You are not allowed to perform this operation. Please check with one of your Team Admins, or, if you need further assistance, please contact Apple Developer Program Support. https://developer.apple.com/support" } ] }
1
0
169
Aug ’25
Apple Arcade Bonus Payout Report Download via App Store Connect API
I'm looking to automate the download of the Apple Arcade Bonus Payout Report accessible via the App Store Connect "Sales and Trends Reports" page. I've been looking at the documentation for the App Store Connect API here: https://developer.apple.com/documentation/appstoreconnectapi/get-v1-salesreports This page makes it seem as though there is no API connection for the Apple Arcade Bonus Payout Report - is this the case? If so, does anyone have any good solutions for automating downloads of this data source.
0
0
125
Aug ’25
Unable to download sales report
Hello, I’m encountering a consistent HTTP 400 – Bad Request error when attempting to retrieve daily sales reports via the App Store Connect API. The request format follows the official documentation: https://developer.apple.com/documentation/appstoreconnectapi/get-v1-salesreports. Here is an example of the request I’m making: curl --location --globoff \ ' https://api.appstoreconnect.apple.com/v1/salesReports?filter[frequency]=DAILY&filter[vendorNumber]=<REDACTED VENDOR NUMBER>&filter[reportDate]=2025-08-11&filter[reportType]=SALES&filter[reportSubType]=SUMMARY' \ --header 'Authorization: Bearer <REDACTED_JWT>' This request worked without issues until August 6, 2025 (Obviously using the previous day date), but from August 7 onward it returns a 400 error. Could you please confirm: Whether there have been any changes to the required query parameters (e.g., filter[version]). If there are any known issues with the SALES / SUMMARY / DAILY endpoint. Aside from the images attached, our buffer error also shows: new Uint8Array([60, 33, 100, 111, 99, 116, 121, 112, 101, 32, 104, 116, 109, 108, 62, 60, 104, 116, 109, 108, 32, 108, 97, 110, 103, 61, 34, 101, 110, 34, 62, 60, 104, 101, 97, 100, 62, 60, 116, 105, 116, 108, 101, 62, 72, 84, 84, 80, 32, 83, 116, 97, 116, 117, 115, 32, 52, 48, 48, 32, 226, 128, 147, 32, 66, 97, 100, 32, 82, 101, 113, 117, 101, 115, 116, 60, 47, 116, 105, 116, 108, 101, 62, 60, 115, 116, 121, 108, 101, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120, 116, 47, 99, 115, 115, 34, 62, 98, 111, 100, 121, 32, 123, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 84, 97, 104, 111, 109, 97, 44, 65, 114, 105, 97, 108, 44, 115, 97, 110, 115, 45, 115, 101, 114, 105, 102, 59, 125, 32, 104, 49, 44, 32, 104, 50, 44, 32, 104, 51, 44, 32, 98, 32, 123, 99, 111, 108, 111, 114, 58, 119, 104, 105, 116, 101, 59, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 35, 53, 50, 53, 68, 55, 54, 59, 125, 32, 104, 49, 32, 123, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 50, 50, 112, 120, 59, 125, 32, 104, 50, 32, 123, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 54, 112, 120, 59, 125, 32, 104, 51, 32, 123, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 52, 112, 120, 59, 125, 32, 112, 32, 123, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 50, 112, 120, 59, 125, 32, 97, 32, 123, 99, 111, 108, 111, 114, 58, 98, 108, 97, 99, 107, 59, 125, 32, 46, 108, 105, 110, 101, 32, 123, 104, 101, 105, 103, 104, 116, 58, 49, 112, 120, 59, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 35, 53, 50, 53, 68, 55, 54, 59, 98, 111, 114, 100, 101, 114, 58, 110, 111, 110, 101, 59, 125, 60, 47, 115, 116, 121, 108, 101, 62, 60, 47, 104, 101, 97, 100, 62, 60, 98, 111, 100, 121, 62, 60, 104, 49, 62, 72, 84, 84, 80, 32, 83, 116, 97, 116, 117, 115, 32, 52, 48, 48, 32, 226, 128, 147, 32, 66, 97, 100, 32, 82, 101, 113, 117, 101, 115, 116, 60, 47, 104, 49, 62, 60, 47, 98, 111, 100, 121, 62, 60, 47, 104, 116, 109, 108, 62]) Thank you for your assistance.
2
4
259
Aug ’25
Promotional Offer ID column is empty in Subscriber report for redeemed offer code
When redeeming a custom offer code, I'm not able to see the actual offer code ID in the Subscriber report - only the subscription offer name is present. I'm going off of the documentation for the Promotional Offer ID column: A code that you create for customers to enter and redeem the subscription offer. https://developer.apple.com/help/app-store-connect/reference/subscriber-report Is the documentation wrong? How are we supposed to measure the performance of our offer codes beyond the initial redemption? For example, with the offer name I can see how my "Holiday Promos" offer is doing but can't see the actual performance of "BLACKFRIDAY30" vs "MOTHERSDAY30".
1
0
635
Aug ’25
/v1/financeReports returns 400 error with HTML dump
Starting from 2025-08-07, our backoffice system always got 400 error when calling /v1/financeReports. In previous months, we can get the report successfully with no issue. Here is one dump with some header hidden, The response looked very strange, it is not a json response but a HTML dump. The request URI is like following: ?filter[regionCode]=US&filter[reportDate]=2025-10&filter[reportType]=FINANCE_DETAIL&filter[vendorNumber]=XXXXXX I used the key to generate JWT, and use postman to access the endpoints, I couldn't get the prevous month reports any more. based on the http status code and response, it is quite clueless which parameter caused issue. Anyone encountered similiar issue, really appreciated for the help.
2
0
169
Aug ’25
/v1/salesReports API started returning 400 Bad Request
We run an analytics query every day; this worked fine for the past 6 years or so. Two days ago this query has stopped working. It always returns a non-descript 400 Bad Request. Here's the exact query: curl \ -H 'Accept: application/a-gzip' \ -H 'Authorization: Bearer <TOKEN>' \ 'https://api.appstoreconnect.apple.com/v1/salesReports?filter[frequency]=DAILY&filter[reportType]=SALES&filter[reportSubType]=SUMMARY&filter[version]=1_0&filter[vendorNumber]=<VENDOR>' And the response: <!doctype html><html lang="en"><head><title>HTTP Status 400 – Bad Request</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 400 – Bad Request</h1></body></html> I have confirmed that the <TOKEN> is correct (with an incorrect token I get a specific error message). Same with missing or incorrect filter parameters: the API returns an exact error message. I have also confirmed that our vendor number is correct (from AppstoreConnect › Payments and Financial Reports, top left corner), though specifying an invalid vendor number yields the same non-descript 400 Bad Request. With seemingly valid filter parameters, (no matter the report type or frequency or specifying a date) I always get the generic 400 Bad Request. Has something changed in the API?
8
3
782
Aug ’25
subscriptionPromotionalOffers
问题描述: 创建苹果商品的促销优惠功能异常,查询官方接口文档,发现接口协议没有变更(协议文档:https://api.appstoreconnect.apple.com/v1/subscriptionPromotionalOffers) ,有人了解id字段的格式是什么?应该如何传值? 请求参数: {"data":{"attributes":{"duration":"ONE_WEEK","name":"20250817_test_2055","numberOfPeriods":1,"offerCode":"20250817_test_2055","offerMode":"FREE_TRIAL"},"relationships":{"prices":{"data":[{"id":"e467f67b-3d75-4319-aa6a-adebfc9f80da","type":"subscriptionPromotionalOfferPrices"}]},"subscription":{"data":{"id":"6673898723","type":"subscriptions"}}},"type":"subscriptionPromotionalOffers"},"included":[{"id":"e467f67b-3d75-4319-aa6a-adebfc9f80da","type":"subscriptionPromotionalOfferPrices","relationships":{"territory":{"data":{"id":"AUS","type":"territories"}}}}]} 响应参数: { "errors" : [ { "id" : "49d94648-0a8a-4aba-8856-72e69ac56aca", "status" : "409", "code" : "ENTITY_ERROR.INCLUDED.INVALID_ID", "title" : "The provided entity id is invalid", "detail" : "The provided included entity id 'e467f67b-3d75-4319-aa6a-adebfc9f80da' has invalid format", "source" : { "pointer" : "/included/0/id" } } ] }
0
1
159
Aug ’25
v1/appPriceSchedules 409
BASE_TERRITORY="USA" app_id = "*******" # your app id app_price_points_id = "eyJzIjoiNjc1MTMwOTAyNiIsInQiOiJVU0EiLCJwIjoiMTAwMTEifQ" # query and get manual_price_id = "manualPrice-0" update_app_price_url = "https://api.appstoreconnect.apple.com/v1/appPriceSchedules" update_app_price_payload = { "data": { "type": "appPriceSchedules", "relationships": { "app": { "data": {"type": "apps", "id": app_id} }, "baseTerritory": { "data": {"type": "territories", "id": BASE_TERRITORY} }, "manualPrices": { "data": [{"id": manual_price_id, "type": "appPrices"}] } } }, "included": [ { "type": "appPrices", "id": manual_price_id, "attributes": {"startDate": None}, "relationships": { "appPricePoint": { "data": {"type": "appPricePoints", "id": app_price_points_id} } } } ] } update_app_price_resp = requests.post(update_app_price_url, headers=headers, data=json.dumps(update_app_price_payload)) if update_app_price_resp.status_code == 201: update_app_price_id = update_app_price_resp.json()["data"]["id"] print(f"✅ Success : {update_app_price_id}") else: print(f"❌ Failed : {update_app_price_resp.status_code} {update_app_price_resp.text}") sys.exit(1) There was no problem a week ago, but now it reports an error ❌ Failed : 409 { "errors" : [ { "id" : "69a6e006-b99c-4d58-880c-0225c1eff581", "status" : "409", "code" : "ENTITY_ERROR.INCLUDED.INVALID_ID", "title" : "The provided entity id is invalid", "detail" : "The provided included entity id 'USA-1.0' has invalid format", "source" : { "pointer" : "/included/0/id" } } ] }
5
2
543
Aug ’25
Unable to recreate a ONE_TIME_SNAPSHOT analytics report
Previously created a one time snapshot report that was later deleted. Trying to recreate it but keeping getting a 409. Been already a week since it was deleted. Error message { "errors" : [ { "id" : "b0d8d738-1744-463d-bdcf-a48fbfa5d715", "status" : "409", "code" : "STATE_ERROR", "title" : "The request cannot be fulfilled because of the state of another resource.", "detail" : "You already have such an entity" } ] } Reports request only returns the ONGOING reports link no ONE_TIME_SNAPSHOT . Wonder if it takes time although unlikely or might it be a cache or similar causing the problem.
Replies
4
Boosts
1
Views
1.5k
Activity
Jul ’25
Hang on retrieving StoreKit2 data in c++
I've been implementing in app purchases into an existing C++ app. I'm using the latest Swift StoreKit since the old ObjC interface is deprecated . There is a really weird problem where the swift/C++ bridging seems to get into a loop. After the Product structure is retrieved I have the following structure which I use to bridge to C++ public struct storeData { public var id : String public var displayName : String public var description : String public var price : String public var purchased : Bool = false public var level : Int = 0 } and this is passed back to the caller as follows public func getProducts (bridge : StoreBridge) -> [storeData] { bridge.products.sort { $0.price > $1.price } var productList : [storeData] = [] for product in bridge.products { let data : storeData = storeData(id: product.id, displayName: product.displayName, description: product.description, price: product.displayPrice, purchased: bridge.purchasedProductIds.contains(product.id) ) productList.append(data) } return productList } the "bridge" variable is a bridging class where the guts of the bridge resides, and contains the "products" array as a publishable variable. In the C++ code the data is retrieved by outProd->id = String(inProd.getId()); outProd->displayName = String(inProd.getDisplayName()); outProd->description = String(inProd.getDescription()); outProd->price = String(String(inProd.getPrice())); outProd->purchased = inProd.getPurchased(); The "String" is actually a JUCE string but that's not part of the problem. Testing this with a local StoreKit config file works fine but when I test with a sandbox AppStore the app hangs. Very specifically it hangs somewhere in the Swift thunk when retrieving the price. When I remove the line to retrieve the price everything works. And - and this is the weird bit - when I pad the price out with some random text, it now starts working (so I have a workaround). This is, however, slightly worrying behaviour. Ideas?
Replies
0
Boosts
0
Views
338
Activity
Jul ’25
iOS TestFlight Build constantly rejected with "App failed to load content" (Guideline 2.1) despite API key restriction removed
Hello Apple Developer Community, I am facing a persistent issue with my iOS TestFlight builds that keeps getting rejected for Guideline 2.1 - Performance - App Completeness, specifically "Your app failed to load any content at launch." (blank white screen). My app is "With Wans Camp Map" (App ID: com.jiro.withwanscampmap). Here's a summary of the situation: App Functionality: The app uses Google Sheets API to fetch campsite data (pins) and Google Maps API to display them on a map. Local Development (Expo Go): When running the app locally using npx expo start and connecting with the Expo Go app, and with the Google Cloud Platform (GCP) API key "Application restrictions" set to "None (no restriction)", the app loads successfully and displays all pins correctly. This confirms the API keys themselves and the data fetching logic are working. TestFlight Builds (Rejected): All attempts to upload builds via EAS Build (profile preview with autoIncrement: true in eas.json) and Transporter have resulted in rejection with the same Guideline 2.1 reason ("blank white screen"). Builds submitted: e.g., 1.0.0 (8), 1.0.0 (9), 1.0.0 (10). (Transporter always insists on build 8 for version 1.0.0, even after app.config.js and eas.json changes to increment. The latest successful upload was 1.0.0 (10).) Crucially, even with the GCP API key "Application restrictions" set to "None (no restriction)" (which should allow any client application), TestFlight builds are still rejected for the blank white screen. What I've already tried: Verified Google Sheets/Maps API keys are correct in GCP. Confirmed API keys are correctly passed from app.config.js (using process.env) and launch.json for local development. Set GCP API key "Application restrictions" to "None". Attempted various app.config.js version (1.0.0, 1.0.1, 1.0.2) and ios.buildNumber (8, 9, 10, 11, 100, 200) increments. Ensured eas.json has autoIncrement: true for preview profile and cli.appVersionSource removed. Updated eas-cli to @latest. Updated all expo and react-native related dependencies using npx expo install --check. Cleared npm cache and EAS build cache (--clear-cache). Rebuilt native projects with npx expo prebuild --clean (though not yet built after this specific step, as I'm writing this post). Confirmed iPhone connectivity to Mac for .ipa transfer. My main questions are: Given that API key restrictions are set to "None", what could still cause the app to fail loading content specifically in the TestFlight review environment? Is it possible that TestFlight's internal bundle ID or network environment is somehow conflicting with Google API access even with no restrictions? Why does App Store Connect consistently report the cfBundleVersion as "8" (or a small number) and reject on version conflicts, despite app.config.js and eas.json being configured for auto-incrementing/higher buildNumber? Is there a deeper cache or project state issue on Apple's side that prevents correct versioning? Are there any specific logs (e.g., console logs from the review device) that can be provided from the App Review team to help debug this "blank white screen" issue? What is the recommended approach to debug content loading issues in TestFlight builds when local Expo Go development works perfectly? Any insights or suggestions from Apple engineers or experienced developers in the community would be greatly appreciated. I am truly struggling with this persistent rejection. Thank you for your time and assistance. Best regards, Jiro26
Replies
1
Boosts
0
Views
367
Activity
Jul ’25
Server notifications v2 UNSUCCESSFUL_HTTP_RESPONSE_CODE
Hello. I'm currently implementing Apple Notification v2 to prepare for refunds for in-app purchases, but I'm not receiving requests from Apple servers to my backend server. I've applied HTTPS (TLS 1.2) and correctly registered production/sandbox notification URLs on App Store Connect. After requesting a test notification, when I check the status of testNotificationToken, I receive an UNSUCCESSFUL_HTTP_RESPONSE_CODE as follows: {"signedPayload":"......":[{"atteptDate":1752128001970,"sendAttemptResult":"UNSUCCESSFUL_HTTP_RESPONSE_CODE"}]} The endpoint for receiving notifications is set to accept POST requests with application/json format, and it responds with 200 (OK) without any content. However, Apple notifications are not coming through. Could anyone help me with this issue?
Replies
1
Boosts
0
Views
218
Activity
Jul ’25
Get Transaction History V1 has been marked as deprecated. Will this interface be discontinued?
Get Transaction History V1 has been marked as deprecated. Will this API be discontinued? If so, when will it be discontinued? https://developer.apple.com/documentation/appstoreserverapi/get-transaction-history-v1
Replies
0
Boosts
0
Views
72
Activity
Jul ’25
Get Transaction History V1 has been marked as deprecated. Will this interface be discontinued?
Get Transaction History V1 has been marked as deprecated. Will this interface be discontinued? https://developer.apple.com/documentation/appstoreserverapi/get-transaction-history-v1
Replies
0
Boosts
0
Views
90
Activity
Jul ’25
Get transfer_sub failed when transfer an app
Our app ID is 708064914; When we transferred an app with Sign in with Apple function, and request the REST API to get transfer_sub, approximately 25% of the requests return error responses such as: {"error":"invalid_request","error_description":"User not found."} or {"error":"invalid_request"} User 001700.6b50fa0cdf564b4f83e3ac6b8dfb9a9b.1205 received the first error; User 000908.523b85e1dd704d808dbfac55425c5a7b.1916 received the second error. Here's the English translation: We want to understand under what circumstances these errors occur. Since we have already transferred once before, this is the second transfer. The "User not found" error might be related to IDs from the original team. However, we don't understand the meaning of the second error type and what circumstances might cause it.
Replies
1
Boosts
0
Views
76
Activity
Jul ’25
What replaced https://developer.apple.com/documentation/appstorereceipts/verifyreceipt ?
After reading thru https://developer.apple.com/documentation/appstoreserverapi a million times, I cannot find anything that seems even remotely like the replacement for the deprecated https://developer.apple.com/documentation/appstorereceipts/verifyreceipt Please help.
Replies
2
Boosts
0
Views
86
Activity
Jul ’25
Uploading game
When uploading via Xcode or transporter: the ipa file contains the icons and the info.plist with CFBundleIconFiles too. Validation failed (409) Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 10.0. To support older versions of iOS, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See https://developer.apple.com/documentation/bundleresources/information_property_list/user_interface. (ID: 0445efd3-c340-47b3-ad02-b7c7a2737b47)
Replies
1
Boosts
0
Views
240
Activity
Jul ’25
customerReviewResponses endpoint 500 error
Hi, we have been getting 500 Internal server error while submitting customer review response  for a while. Waited long enough, hoping that it could fix. Endpoint: https://api.appstoreconnect.apple.com/v1/customerReviewResponses Method: POST status: 500 "code": "UNEXPECTED_ERROR" Anyone has the same issue ? Any help is appreciated
Replies
0
Boosts
0
Views
131
Activity
Jul ’25
How to Access Request Logs for Reporter Tool and App Store Connect API?
Context We hold an Apple Developer Program team account and rely on: • Reporter tool – for downloading financial reports (Sales and Trends, etc.) • App Store Connect API – for retrieving subscription, refund, and other sales data We are facing several management challenges: The Developer portal shows no history of Reporter or API requests. Once team members are granted access, we cannot verify their exact actions (download time, report type, date range, etc.). Lack of permission-usage auditing makes it hard to judge whether an action is legitimate or poses potential risk. Questions Does Apple provide an official way to view detailed request logs for the Reporter tool or the App Store Connect API? • If yes, please indicate where to access them (developer portal location or API endpoint) and what fields are included (timestamp, account used, request parameters, etc.). If no built-in logging exists, are there any alternative methods to help teams monitor permission usage? • For example, an event-notification mechanism when reports are generated or data is pulled. Are there plans to introduce an auditing feature in the future? If so, is there an estimated release timeframe? Thanks in advance for any guidance!
Replies
0
Boosts
0
Views
103
Activity
Jul ’25
Get transfer_sub failed when transfer an app
Our app ID is 708064914; When we transferred an app with Sign in with Apple function, and request the REST API to get transfer_sub, approximately 25% of the requests return error responses such as: {"error":"invalid_request","error_description":"User not found."} 001307.dba0ea2b147f45aa9e85de2abfb4c072.2047 received the first error; We want to understand under what circumstances these errors occur. Since we have already transferred once before, this is the second transfer. The "User not found" error might be related to IDs from the original team. Is that right?
Replies
0
Boosts
0
Views
135
Activity
Jul ’25
use https://api.appstoreconnect.apple.com/v1/devices return 403
// Request curl --location --request POST 'https://api.appstoreconnect.apple.com/v1/devices' --header 'Authorization: ${the_token}' --header 'Content-Type: application/json' --data-raw '{ "data": { "type": "devices", "attributes": { "name": "${the_device_name}", "udid": "${the_device_udid}", "platform": "IOS" } } }' // Response { "errors": [ { "status": "403", "code": "FORBIDDEN_ERROR", "id":"8a45808f-aa56-4e29-bef0-3f836d571a24","title": "This request is forbidden for security reasons", "detail": "You are not allowed to perform this operation. Please check with one of your Team Admins, or, if you need further assistance, please contact Apple Developer Program Support. https://developer.apple.com/support" } ] }
Replies
1
Boosts
0
Views
169
Activity
Aug ’25
Apple Arcade Bonus Payout Report Download via App Store Connect API
I'm looking to automate the download of the Apple Arcade Bonus Payout Report accessible via the App Store Connect "Sales and Trends Reports" page. I've been looking at the documentation for the App Store Connect API here: https://developer.apple.com/documentation/appstoreconnectapi/get-v1-salesreports This page makes it seem as though there is no API connection for the Apple Arcade Bonus Payout Report - is this the case? If so, does anyone have any good solutions for automating downloads of this data source.
Replies
0
Boosts
0
Views
125
Activity
Aug ’25
Unable to download sales report
Hello, I’m encountering a consistent HTTP 400 – Bad Request error when attempting to retrieve daily sales reports via the App Store Connect API. The request format follows the official documentation: https://developer.apple.com/documentation/appstoreconnectapi/get-v1-salesreports. Here is an example of the request I’m making: curl --location --globoff \ ' https://api.appstoreconnect.apple.com/v1/salesReports?filter[frequency]=DAILY&filter[vendorNumber]=<REDACTED VENDOR NUMBER>&filter[reportDate]=2025-08-11&filter[reportType]=SALES&filter[reportSubType]=SUMMARY' \ --header 'Authorization: Bearer <REDACTED_JWT>' This request worked without issues until August 6, 2025 (Obviously using the previous day date), but from August 7 onward it returns a 400 error. Could you please confirm: Whether there have been any changes to the required query parameters (e.g., filter[version]). If there are any known issues with the SALES / SUMMARY / DAILY endpoint. Aside from the images attached, our buffer error also shows: new Uint8Array([60, 33, 100, 111, 99, 116, 121, 112, 101, 32, 104, 116, 109, 108, 62, 60, 104, 116, 109, 108, 32, 108, 97, 110, 103, 61, 34, 101, 110, 34, 62, 60, 104, 101, 97, 100, 62, 60, 116, 105, 116, 108, 101, 62, 72, 84, 84, 80, 32, 83, 116, 97, 116, 117, 115, 32, 52, 48, 48, 32, 226, 128, 147, 32, 66, 97, 100, 32, 82, 101, 113, 117, 101, 115, 116, 60, 47, 116, 105, 116, 108, 101, 62, 60, 115, 116, 121, 108, 101, 32, 116, 121, 112, 101, 61, 34, 116, 101, 120, 116, 47, 99, 115, 115, 34, 62, 98, 111, 100, 121, 32, 123, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 84, 97, 104, 111, 109, 97, 44, 65, 114, 105, 97, 108, 44, 115, 97, 110, 115, 45, 115, 101, 114, 105, 102, 59, 125, 32, 104, 49, 44, 32, 104, 50, 44, 32, 104, 51, 44, 32, 98, 32, 123, 99, 111, 108, 111, 114, 58, 119, 104, 105, 116, 101, 59, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 35, 53, 50, 53, 68, 55, 54, 59, 125, 32, 104, 49, 32, 123, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 50, 50, 112, 120, 59, 125, 32, 104, 50, 32, 123, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 54, 112, 120, 59, 125, 32, 104, 51, 32, 123, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 52, 112, 120, 59, 125, 32, 112, 32, 123, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 50, 112, 120, 59, 125, 32, 97, 32, 123, 99, 111, 108, 111, 114, 58, 98, 108, 97, 99, 107, 59, 125, 32, 46, 108, 105, 110, 101, 32, 123, 104, 101, 105, 103, 104, 116, 58, 49, 112, 120, 59, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 35, 53, 50, 53, 68, 55, 54, 59, 98, 111, 114, 100, 101, 114, 58, 110, 111, 110, 101, 59, 125, 60, 47, 115, 116, 121, 108, 101, 62, 60, 47, 104, 101, 97, 100, 62, 60, 98, 111, 100, 121, 62, 60, 104, 49, 62, 72, 84, 84, 80, 32, 83, 116, 97, 116, 117, 115, 32, 52, 48, 48, 32, 226, 128, 147, 32, 66, 97, 100, 32, 82, 101, 113, 117, 101, 115, 116, 60, 47, 104, 49, 62, 60, 47, 98, 111, 100, 121, 62, 60, 47, 104, 116, 109, 108, 62]) Thank you for your assistance.
Replies
2
Boosts
4
Views
259
Activity
Aug ’25
Promotional Offer ID column is empty in Subscriber report for redeemed offer code
When redeeming a custom offer code, I'm not able to see the actual offer code ID in the Subscriber report - only the subscription offer name is present. I'm going off of the documentation for the Promotional Offer ID column: A code that you create for customers to enter and redeem the subscription offer. https://developer.apple.com/help/app-store-connect/reference/subscriber-report Is the documentation wrong? How are we supposed to measure the performance of our offer codes beyond the initial redemption? For example, with the offer name I can see how my "Holiday Promos" offer is doing but can't see the actual performance of "BLACKFRIDAY30" vs "MOTHERSDAY30".
Replies
1
Boosts
0
Views
635
Activity
Aug ’25
/v1/financeReports returns 400 error with HTML dump
Starting from 2025-08-07, our backoffice system always got 400 error when calling /v1/financeReports. In previous months, we can get the report successfully with no issue. Here is one dump with some header hidden, The response looked very strange, it is not a json response but a HTML dump. The request URI is like following: ?filter[regionCode]=US&filter[reportDate]=2025-10&filter[reportType]=FINANCE_DETAIL&filter[vendorNumber]=XXXXXX I used the key to generate JWT, and use postman to access the endpoints, I couldn't get the prevous month reports any more. based on the http status code and response, it is quite clueless which parameter caused issue. Anyone encountered similiar issue, really appreciated for the help.
Replies
2
Boosts
0
Views
169
Activity
Aug ’25
/v1/salesReports API started returning 400 Bad Request
We run an analytics query every day; this worked fine for the past 6 years or so. Two days ago this query has stopped working. It always returns a non-descript 400 Bad Request. Here's the exact query: curl \ -H 'Accept: application/a-gzip' \ -H 'Authorization: Bearer <TOKEN>' \ 'https://api.appstoreconnect.apple.com/v1/salesReports?filter[frequency]=DAILY&filter[reportType]=SALES&filter[reportSubType]=SUMMARY&filter[version]=1_0&filter[vendorNumber]=<VENDOR>' And the response: <!doctype html><html lang="en"><head><title>HTTP Status 400 – Bad Request</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 400 – Bad Request</h1></body></html> I have confirmed that the <TOKEN> is correct (with an incorrect token I get a specific error message). Same with missing or incorrect filter parameters: the API returns an exact error message. I have also confirmed that our vendor number is correct (from AppstoreConnect › Payments and Financial Reports, top left corner), though specifying an invalid vendor number yields the same non-descript 400 Bad Request. With seemingly valid filter parameters, (no matter the report type or frequency or specifying a date) I always get the generic 400 Bad Request. Has something changed in the API?
Replies
8
Boosts
3
Views
782
Activity
Aug ’25
subscriptionPromotionalOffers
问题描述: 创建苹果商品的促销优惠功能异常,查询官方接口文档,发现接口协议没有变更(协议文档:https://api.appstoreconnect.apple.com/v1/subscriptionPromotionalOffers) ,有人了解id字段的格式是什么?应该如何传值? 请求参数: {"data":{"attributes":{"duration":"ONE_WEEK","name":"20250817_test_2055","numberOfPeriods":1,"offerCode":"20250817_test_2055","offerMode":"FREE_TRIAL"},"relationships":{"prices":{"data":[{"id":"e467f67b-3d75-4319-aa6a-adebfc9f80da","type":"subscriptionPromotionalOfferPrices"}]},"subscription":{"data":{"id":"6673898723","type":"subscriptions"}}},"type":"subscriptionPromotionalOffers"},"included":[{"id":"e467f67b-3d75-4319-aa6a-adebfc9f80da","type":"subscriptionPromotionalOfferPrices","relationships":{"territory":{"data":{"id":"AUS","type":"territories"}}}}]} 响应参数: { "errors" : [ { "id" : "49d94648-0a8a-4aba-8856-72e69ac56aca", "status" : "409", "code" : "ENTITY_ERROR.INCLUDED.INVALID_ID", "title" : "The provided entity id is invalid", "detail" : "The provided included entity id 'e467f67b-3d75-4319-aa6a-adebfc9f80da' has invalid format", "source" : { "pointer" : "/included/0/id" } } ] }
Replies
0
Boosts
1
Views
159
Activity
Aug ’25
v1/appPriceSchedules 409
BASE_TERRITORY="USA" app_id = "*******" # your app id app_price_points_id = "eyJzIjoiNjc1MTMwOTAyNiIsInQiOiJVU0EiLCJwIjoiMTAwMTEifQ" # query and get manual_price_id = "manualPrice-0" update_app_price_url = "https://api.appstoreconnect.apple.com/v1/appPriceSchedules" update_app_price_payload = { "data": { "type": "appPriceSchedules", "relationships": { "app": { "data": {"type": "apps", "id": app_id} }, "baseTerritory": { "data": {"type": "territories", "id": BASE_TERRITORY} }, "manualPrices": { "data": [{"id": manual_price_id, "type": "appPrices"}] } } }, "included": [ { "type": "appPrices", "id": manual_price_id, "attributes": {"startDate": None}, "relationships": { "appPricePoint": { "data": {"type": "appPricePoints", "id": app_price_points_id} } } } ] } update_app_price_resp = requests.post(update_app_price_url, headers=headers, data=json.dumps(update_app_price_payload)) if update_app_price_resp.status_code == 201: update_app_price_id = update_app_price_resp.json()["data"]["id"] print(f"✅ Success : {update_app_price_id}") else: print(f"❌ Failed : {update_app_price_resp.status_code} {update_app_price_resp.text}") sys.exit(1) There was no problem a week ago, but now it reports an error ❌ Failed : 409 { "errors" : [ { "id" : "69a6e006-b99c-4d58-880c-0225c1eff581", "status" : "409", "code" : "ENTITY_ERROR.INCLUDED.INVALID_ID", "title" : "The provided entity id is invalid", "detail" : "The provided included entity id 'USA-1.0' has invalid format", "source" : { "pointer" : "/included/0/id" } } ] }
Replies
5
Boosts
2
Views
543
Activity
Aug ’25