On one hand: I download the following report from the Apple Store API:
https://api.appstoreconnect.apple.com/v1/salesReports
with the following filters:
"filter[reportType]": "SUBSCRIPTION_EVENT",
"filter[reportSubType]": "SUMMARY",
"filter[frequency]": "DAILY",
"filter[version]": "1_3"
On the other hand: I download the report from the website, generated by: "sales and trends", "Event", and filtering by "event Type=Activations.
If I sum the Quantity field of the events corresponding to activations (according to this other website),
the daily activation counts differ between the API and the web report. The quantity is higher in the web report and lower in the API, averaging a difference of approximately 50%, if not more
I confirmed that the events I should count in the API are: 'Start Introductory Offer,' 'Subscribe,' 'Opt-In,' 'Start Offer Code,' according to the website I copied above, but they do not add up to the total activations shown on the website.
The same happens with "Reactivations."
What could be happening?
Thanks for everything
App Store Connect API
RSS for tagThe App Store Connect API helps you automate tasks usually done on the Apple Developer website and App Store Connect.
Post
Replies
Boosts
Views
Activity
Hi Team,
WE are receiving the below error message while connecting to https://api.appstoreconnect.apple.com . Any help greatly appreciated
ERROR - {
"errors" : [ {
"id" : "4TODNPAPCW332EEZC54U4SQZJI",
"status" : "403",
"code" : "FORBIDDEN.REQUIRED_AGREEMENTS_MISSING_OR_EXPIRED",
"title" : "A required agreement is missing or has expired.",
"detail" : "This request requires an in-effect agreement that has not been signed or has expired.",
"links" : {
"see" : "/agreements"
}
} ]
}
Hi Team,
We are receiving below error message while retrieving data form appstore connect API (https://api.appstoreconnect.apple.com)
ERROR - {
"errors" : [ {
"id" : "4TODNPAPCW332EEZC54U4SQZJI",
"status" : "403",
"code" : "FORBIDDEN.REQUIRED_AGREEMENTS_MISSING_OR_EXPIRED",
"title" : "A required agreement is missing or has expired.",
"detail" : "This request requires an in-effect agreement that has not been signed or has expired.",
"links" : {
"see" : "/agreements"
}
} ]
}
I wrote some scripts in Python to make supporting multiple Localizations much easier, however I run into some weird errors when looping through and updating the App Info for a handful of random languages.
Check out this log.
These calls are all being made in an identical way, why am I getting 405 METHOD_NOT_ALLOWED on:
nl,fr,de,pt,sl,es?
ca localization created/updated successfully
zh-Hans localization created/updated successfully
zh-Hant localization created/updated successfully
hr localization created/updated successfully
cs localization created/updated successfully
da localization created/updated successfully
Failed to create/update nl localization: {'errors': [{'status': '405', 'code': 'METHOD_NOT_ALLOWED', 'title': 'The request method is not valid for the resource path.', 'detail': 'The request method used for this request is not valid for the resource path. Please consult the documentation.'}]}
fi localization created/updated successfully
Failed to create/update fr localization: {'errors': [{'status': '405', 'code': 'METHOD_NOT_ALLOWED', 'title': 'The request method is not valid for the resource path.', 'detail': 'The request method used for this request is not valid for the resource path. Please consult the documentation.'}]}
Failed to create/update de localization: {'errors': [{'status': '405', 'code': 'METHOD_NOT_ALLOWED', 'title': 'The request method is not valid for the resource path.', 'detail': 'The request method used for this request is not valid for the resource path. Please consult the documentation.'}]}
el localization created/updated successfully
he localization created/updated successfully
hi localization created/updated successfully
hu localization created/updated successfully
id localization created/updated successfully
it localization created/updated successfully
ja localization created/updated successfully
ko localization created/updated successfully
ms localization created/updated successfully
no localization created/updated successfully
pl localization created/updated successfully
Failed to create/update pt localization: {'errors': [{'status': '405', 'code': 'METHOD_NOT_ALLOWED', 'title': 'The request method is not valid for the resource path.', 'detail': 'The request method used for this request is not valid for the resource path. Please consult the documentation.'}]}
pt-PT localization created/updated successfully
ro localization created/updated successfully
ru localization created/updated successfully
sk localization created/updated successfully
Failed to create/update sl localization: {'errors': [{'status': '405', 'code': 'METHOD_NOT_ALLOWED', 'title': 'The request method is not valid for the resource path.', 'detail': 'The request method used for this request is not valid for the resource path. Please consult the documentation.'}]}
Failed to create/update es localization: {'errors': [{'status': '405', 'code': 'METHOD_NOT_ALLOWED', 'title': 'The request method is not valid for the resource path.', 'detail': 'The request method used for this request is not valid for the resource path. Please consult the documentation.'}]}
sv localization created/updated successfully
th localization created/updated successfully
tr localization created/updated successfully
uk localization created/updated successfully
vi localization created/updated successfully
I want to use Appstore connect's api to upload images using php. But when I finished creating the image and received a response containing the image upload link, I didn't know what to do next. I tried searching but to no avail.
Document
Respone url:
"uploadOperations" : [ {
"method" : "PUT",
"url" : "https://store-030.blobstore.apple.com/itms6-assets-massilia...",
"length" : 11097,
"offset" : 0,
"requestHeaders" : [ {
"name" : "Content-Type",
"value" : "image/png"
} ]
} ],
I try code: PHP
$url = "https://store-030.blobstore.apple.com/itms6-assets-massilia..."
$imageData = file_get_contents($filePath);
$responseUpload = $client->put($url,
[
'headers' => [
'Content-Type' => 'image/png',
],
'body' => $imageData
]);
echo $responseUpload->getStatusCode() . PHP_EOL;
var_dump($responseUpload->getBody()->getContents());
Response: 200, string(2) "{}". I don't know why it's wrong
Hope everybody help please.
Is there any API to get the data regarding the app installs data shown in the app store connect?
Hey,
I've been utilizing the v1/salesReports endpoint to retrieve a daily summary sales report. Below is an example of the query I use:
Example query
https://api.appstoreconnect.apple.com/v1/salesReports?filter[vendorNumber]=***&filter[reportType]=SALES&filter[reportSubType]=SUMMARY&filter[frequency]=DAILY&filter[reportDate]=2024-01-20&filter[version]=1_0
Starting today (23.01.24) I encountered an error stating: :
The version parameter you have specified is invalid. The latest version for this report is 1_1.
This is confusing because according to the documentation, the SALES report should use version 1_0. I attempted to use version 1_1, but it resulted in a 404 error with the message: There were no sales for the date specified.
Interestingly, when I change the frequency to WEEKLY, the request with version 1_0 is processed successfully and contains data.
Is this discrepancy a known issue, or has there been a recent change in the API that I might have missed?
Hi
I have an api which was downloading the apple sales report by using Apple Connect Api in short it used to generate the jwt and then was fetching the report.
Some how it stopped working and same code now returns 401.
Question is the details which I use to generate the jwt for each request do I need to refresh / renew that ? Is there an expiry date associated with that which I use to generate the jwt or not ?
Say you use the private key to create the jwt or ECParameters parameters to generate the key which is used to create the jwt do we need to renew that private key / ECP details or that remains alive / active until it is revoked ?
If that is the case how I can refresh that ? I know that the jwt which we need to send to apple connect to get the sale report has maximum 20 mins life.
Thanks
Khurram
I intend to use Apple Store Connect API for making & updating OFFER CODES in my subscription.
I have created the GET requests needed using an API Key I have generated but the POST requests are not going through and getting an error in the process.
https://api.appstoreconnect.apple.com/v1/subscriptionOfferCodes
This is the API that I am trying to hit using the POST request but the process is not going through for some reason.
Recently Apple has deprecated subscriptions property availableInAllTerritories from the resource 'subscriptions'"
Post this, You are not able to update prices to the subscription.
As availableInAllTerritories is not set for new subscription.
So you have to enable availableInAllTerritories manually to change the prices.
So the steps listed in https://developer.apple.com/documentation/appstoreconnectapi/app_store/auto-renewable_subscriptions/managing_auto-renewable_subscriptions will not work out of box.
I'm using AppStoreConnect_Swift_SDK to add achievements to Game Center. Everything looks ok. I'm able to add achievements, localizations, and seem to be sending the images correctly. Yet when I try to update 'isUploaded' to 'true', I get "The request failed with response code 500 UNEXPECTED_ERROR".
And while the error says it's server side, I suspect it is something wrong on my side. GCAI.id is the image reservation id.
let data = GameCenterAchievementImageUpdateRequest.Data(type: .gameCenterAchievementImages, id: GCAI.id, attributes: .init(isUploaded: true))
let req = GameCenterAchievementImageUpdateRequest(data: data)
let request = APIEndpoint.v1.gameCenterAchievementImages.id(GCAI.id).patch(req)
let gcaiRes = try await self.provider.request(request).data
Other than going through the SDK, this looks like Hubert's Video. So I suspect it doesn't like something else but the error just isn't that informative? I could ask the SDK author but every issue I've worked out so far has just been from misunderstanding the API and not related to the SDK itself.
In order to improve App sales, I hope to promote App. At present, I only know from the VisionOS App Submission Guide that I can get the opportunity to become an editor's choice to promote the App by sharing my APP. Is there any other way to promote VisionOS App?
The API documentations says
Don’t use this API to create new apps; instead, create new apps on the App Store Connect website.
https://developer.apple.com/documentation/appstoreconnectapi/app_store/apps
If I am going to the App Store Connect API documentation, it's not because I want to create things from a UI.
Is there any valid reason for not having an endpoint for that?
Thanks
Recently Xcode Cloud has stopped showing new branches on the branch picker. For example, I still see our main branch on the list, but branches that I pushed recently do not appear when trying to generate a manual build.
We have another app where none of the branches appear, and the same app (with a different bundle ID we use for Production, they all appear except for the new ones).
The GitHub integration seems fine since when PRs are merged to main, all workflows that listen to changes to main work fine, and on the Settings I can see that the last access to the GitHub repository is from a few minutes ago when pushing new things.
The same issue happens on the integration of Xcode Cloud inside Xcode, none of the new branches is listed there.
Looks like the issue is on whatever lists the branches available. Has anyone noticed this?
I am setting up an api endpoint in our server to intake apple store V2 notifications and I'm confused on the section outlining root CAs for the verifyAndDecodeNotification method.
Are we suppose to download those certs from https://www.apple.com/certificateauthority/ and store them on our server for reference to use in verifyAndDecodeNotification.
Seems odd to reference them locally and convert them to buffers for an api call
We're using
https://api.appstoreconnect.apple.com/v1/salesReports
to download salesReports everyday and have been running for 4 years.
After 2024/02/22 08:00(GMT+8) the api call started to return 403 error
{ "errors" : [ { "id" : "4e219b15-0d2f-416a-bd66-5c30c314fd44", "status" : "403", "code" : "FORBIDDEN_ERROR", "title" : "This request is forbidden for security reasons", "detail" : "The API key in use does not allow this request" } ] }
we checked our key is still valid, and there's no change about the jwt sign method: https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests
we tested keys with ADMIN or FINANCE or ACCESS_TO_REPORTS
all return the 403 error above.
On January 30, 2024, an iOS refund for HX Red Xuan was applied for. The refund was successful on January 31, but the game server did not receive a refund push message. The specific information is as follows:
Refund information
Refund amount: RMB 7.5
Environment: Production environment
Order number in Apple order information: MLJQXD3HWD
Application Notification Configuration
Notification address: The notification URL protocol is https
Notification Version: Version 2
Note: Currently, the same address can receive Apple refund notification information from other applications
May I ask what problem caused the application server to not receive a refund notification from Apple's service users?
Hey all,
This morning when trying to use my API connection to pull my app stats as I always do, I received the following error:
This request is forbidden for security reasons: The API key in use does not allow this request
My API keys had both Sales and App Manager access like it always did.
What I tried already:
Creating an API Key on the "Users and Access > Integrations" page with admin access. That's also returning the same error
I'm checking the release notes and the documentation but nothing seems to have changed
Anyone else with the same problem? I checked with a different developer account and I'm getting exactly the same problem.
Hi, I'm trying to create a response for a review through the Apple Store Connect API, but I receive the following error message when sending the body following this documentation: https://developer.apple.com/documentation/appstoreconnectapi/create_or_update_a_response_to_a_customer_review
cURL Request
--header 'Authorization: {{MY_BEARER_TOKEN}}' \
--header 'Content-Type: application/json' \
--data '{
"attributes": {
"responseBody": "{{MY_RESPONSE}}"
},
"relationships": {
"review": {
"data": {
"id": "{{REVIEW_ID}}",
"type": "customerReviews"
}
}
},
"type": "customerReviewResponses"
}'
*I changed the cURL to not display real data, but they are filled in my request.
Error message:
"errors": [
{
"id": "5575b9ef-9005-4db2-9a89-123b1aaa9355",
"status": "422",
"code": "ENTITY_UNPROCESSABLE",
"title": "The request entity is not a valid request document object",
"detail": "Unexpected or invalid value at 'attributes'.",
"meta": {
"position": {
"row": 2,
"column": 20
}
}
}
]
}
Can you help me put together the body correctly if that's the case of the error?
API urls :
https://api.appstoreconnect.apple.com/v1/financeReports
https://api.appstoreconnect.apple.com/v1/salesReports
I'm getting server errors on both APIs.
There was a token error before, but it was resolved and another error occurred the very next day.
help us!
api_key_id :
error message:
{'errors': [{'status': '500', 'code': 'UNEXPECTED_ERROR', 'title': 'An unexpected error occurred.', 'detail': 'An unexpected error occurred on the server side. If this issue continues, contact us at https://developer.apple.com/contact/.'}]}