It shows on the AppStore Connect API landing page that only a team agent can request access. Since my team agent is unfamiliar with the portal, can an Admin request access, instead?
Post not yet marked as solved
I see that it's currently possible to report payments and tax information manually from the App Store Connect user interface, per the 'View Payment Information' section of the App Store Connect help documentation. Is there any way to retrieve this information programmatically, either via the REST API or the Reporter command line tool? The 'Finance' reports that are available through the developer tools show developer proceeds in the original currency of the transaction, not in the developer's currency post-conversion. Without currency conversion and tax information, the 'Finance' reports are not particularly useful for accounting purposes.
Post not yet marked as solved
Hi, I working on a programmatical solution to collect all the App Store data. The api is working fine, I can collect the sales/finance reports. However, I also want to collect information about the impressions, product page views etc. (App analytics) Is this not possible at the moment, or is the documentation lacking this information? Thanks in advance
Post not yet marked as solved
HI AllI am trying to use the API in Python and am getting the followin gerror:{
"errors" : [ {
"id" : "285874b4-16fb-4109-b810-ffa2973be714",
"status" : "400",
"code" : "PARAMETER_ERROR.INVALID",
"title" : "A parameter has an invalid value",
"detail" : "Invalid vendor number specified. Try again.",
"source" : {
"parameter" : "filter[vendorNumber]"
}
} ]
}I am passing the Following payload:payload = {'filter[frequency]':'DAILY', 'filter[reportSubType]': 'SUMMARY', 'filter[reportDate]':'2019-03-01', 'filter[vendorNumber]': '12345678', 'filter[reportType]': 'SALES' }Here is the request call:r = requests.get('https://api.appstoreconnect.apple.com/v1/salesReports', headers={'Authorization': 'Bearer {}'.format(token)}, params=payload)Any suggestions on how do i resolve this error?Thanks
Post not yet marked as solved
Now that provisioning has been added to the App Store Connect API I was wondering if support for enterprise developer accounts will also be added. As of yet there is no way to generate API keys for enterprise accounts.
Post not yet marked as solved
Hello,I am trying to create a certificate via App Store Connect API.First, I created csr by the following command. I confirmed that the generated csr can be successfuly registered to developer.apple.com manually.openssl genrsa 2048 > private.key
openssl req -new -key private.key -out private.csr -subj "/emailAddress=<my email address>/O=<my name>/C=JP"Then, I tried to create a certificate using certificates API. The token is generated using an API key with Developer role (I tried also Admin and AppManager role and all are same).curl -i \
-H'Authorization: Bearer <token>' \
-H'Content-Type: application/json' \
-d '{"data":{"attributes":{"certificateType":"IOS_DISTRIBUTION","csrContent":"'$(cat private.csr | base64)'"},"type":"certificates"}}' \
https://api.appstoreconnect.apple.com/v1/certificatesThe response was:HTTP/1.1 401 Unauthorized
Server: daiquiri/3.0.0
Date: Tue, 29 Oct 2019 03:31:38 GMT
Content-Type: application/json
Content-Length: 350
Connection: keep-alive
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Request-ID: QUKNKFNK2BDNPUUDIDEHJY7W
X-Rate-Limit: user-hour-lim:3600;user-hour-rem:3592;
x-daiquiri-instance: daiquiri:18493001:mr85p00it-hyhk03154801:7987:19N28
{
"errors": [{
"status": "401",
"code": "NOT_AUTHORIZED",
"title": "Authentication credentials are missing or invalid.",
"detail": "Provide a properly configured and signed bearer token, and make sure that it has not expired. Learn more about Generating Tokens for API Requests https://developer.apple.com/go/?id=api-generating-tokens"
}]
}This error message says that my token is wrong or missing. Next, so I checked if the token is valid or not by invoking other API.curl -i \
-H'Authorization: Bearer <token>' \
https://api.appstoreconnect.apple.com/v1/certificatesThis API call succeeded and showed the list of my certificates.Are there something wrong in my commands?(I wonder that the api is not available currently...)Appendix: my ruby script to generate jwtrequire 'jwt'
require 'base64'
require 'optparse'
params = {}
opt = OptionParser.new
opt.on('-i val', '--iss') { |v| params[:iss] = v }
opt.on('-k val', '--kid') { |v| params[:kid] = v }
opt.parse!
private_key = STDIN.readlines.join
key = OpenSSL::PKey::EC.new(private_key)
payload = {
iss: params[:iss],
exp: Time.now.utc.to_i + 10 * 60,
aud: 'appstoreconnect-v1'
}
header_fields = {
"kid": params[:kid],
"typ": 'JWT'
}
token = JWT.encode(payload, key, 'ES256', header_fields=header_fields)
puts tokenThank you.
Post not yet marked as solved
I want to use app store connect api to automate our build workflow. I followed https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api.But i coundn't find api keys tab in Users and Access section.
Post not yet marked as solved
Hi, I'm trying to obtain the detailed financial report via the API.I'm able to get the aggregated monthly report using filter `reportType: FINANCIAL`,But the doc says another value could be `reportType: FINANCE_DETAIL`, but when I use it I get "There were no sales for the date specified."I'd love to have a detailed report per-transaction or per-day, similar to the web interface "Create Reports" - "All Countries And Regions (Detailed)" option.The documentation in question:https://developer.apple.com/documentation/appstoreconnectapi/download_finance_reportsThanks
Post not yet marked as solved
I have two bundle ids, but they seems to be missing and I cant select anyone. this is why I cant create a new app.
Post not yet marked as solved
I'm submitting a new version of my app, and after click "submit for Review", it show that:
A few more items are needed in order to submit for review
The items listed below are required for submission:There are still screenshot uploads in progress. I didn't met this problem before. Is that mean I haven't upload all the screenshot required or it's still uploading the screenshots to App Store Connect's server? Cause before there is a "save" button after you drag images to the screenshots area, now you don't.
And I think I have uploaded all the screenshots needed and I waited a day to try submit again, still the same.
What should I do?
Post not yet marked as solved
Hi
Is there any way any API which gives me the ability to download all of my apps downloads/installs on my web dashboard.
I have gone through this link - https://help.apple.com/app-store-connect/#/itc14b94d665,read every word but the only thing I found is it has to be manually through app store.
I have asked the apple developer support program and they told me to follow forum or search in this documentation - https://developer.apple.com/documentation//. The only API related to statistics is App Store Connect API which I believe made for sales and trend.
Please point me in the right direction.
Post not yet marked as solved
When using the create certificate API - https://developer.apple.com/documentation/appstoreconnectapi/create_a_certificate, I get a response back similar to the following:
{
	"data" : {
		"type" : "certificates",
		"id" : "XXXXXXXXXX",
		"attributes" : {
			"serialNumber" : "YYYYYYYYYYYYYYYY",
			"certificateContent" : "...",
			"displayName" : "Created via API",
			"name" : "iOS Development: Created via API",
			"csrContent" : null,
			"platform" : "IOS",
			"expirationDate" : "2021-08-26T02:15:27.000+0000",
			"certificateType" : "IOS_DEVELOPMENT"
		},
		"links" : {
			"self" : "https://api.appstoreconnect.apple.com/v1/certificates/XXXXXXXXXX"
		}
	},
	"links" : {
		"self" : "https://api.appstoreconnect.apple.com/v1/certificates"
	}
}
The newly created certificate also shows up on the web interface with "Created via API" as its name, which makes it hard to differentiate between different certificates. I'm assuming the web interface gets the name from the "displayName" field in the response, or vice versa.
The CertificateCreateRequest object - https://developer.apple.com/documentation/appstoreconnectapi/certificatecreaterequest doesn't define a field for the display name. Does anybody know of a way to specify the display name when creating a certificate with the API? Any help is appreciated.
Post not yet marked as solved
I am trying to automate PASS\_TYPE\_ID certificate creation via AppleConnect API, I cannot find what parameters I should use to be able to create this type of certificate.
When I try to POST this data to https://api.appstoreconnect.apple.com/v1/certificates:
{'data': {'attributes': {'certificateType': 'PASS\_TYPE\_ID', 'csrContent': '-----BEGIN CERTIFICATE REQUEST----------END CERTIFICATE REQUEST-----\n'}, 'type': 'certificates'}}
I get this error:
{'errors': [{'code': 'NOTFOUND',
'detail': "There is no identifier with ID 'null' on this team.",
'id': '5c9f7d3c-ce75-43a4-b3ac-b295a8f146db',
'status': '404',
'title': 'The specified resource does not exist'}]}
From OpenAPI spec is not clear what parameters should be used and 'certificateType': 'PASSTYPE_ID' is not covered there.
Do you have idea or example how to do it?
Post not yet marked as solved
Hello everyone,
My question is how we can fetch our own apple apps download counts using API. I want to create code which will fetch total number of app downloads or installs of my app.
Is there any way to to get this data using API or any other official method. Own app download counts data [since app uploaded - today's date].
Thank you.
Post not yet marked as solved
How to get sales report data between two date range from app store connect api? This API does not allows us to provide startDate & endDate in its request call.
Post not yet marked as solved
How can I get the daily download number of my app from the Apple Store automatically?
I looked for different ways and so far I haven't found anything.
I found this documentation that talks about bringing sales, but how can I put my app id in it (to make the request with App Store Connect API)
Post not yet marked as solved
Using the App Store Connect API how can you get the release date for an app? I've been able to use this endpoint to list a bunch of information, however the release date is not included.
As you can see in the JSON response posted below, it does have a "createdDate" but this corresponds to when the version was made in App Store Connect (Prepare for Submission), not when it was released to the store. This can be verified by looking in App Store connect.
JSON Response:
https://api.appstoreconnect.apple.com/v1/apps/395389919/appStoreVersions?limit=1
{
"data": [
{
"type": "appStoreVersions",
"id": "a75acc6e-9429-4539-a282-eadef235169e",
"attributes": {
"platform": "IOS",
"versionString": "5.9.0",
"appStoreState": "READY_FOR_SALE",
"copyright": "InterPro Solutions, LLC",
"releaseType": "MANUAL",
"earliestReleaseDate": null,
"usesIdfa": null,
"downloadable": true,
"createdDate": "2021-10-11T08:37:22-07:00"
},
"relationships": {
"ageRatingDeclaration": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/ageRatingDeclaration",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/ageRatingDeclaration"
}
},
"appStoreVersionLocalizations": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/appStoreVersionLocalizations",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/appStoreVersionLocalizations"
}
},
"build": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/build",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/build"
}
},
"appStoreVersionPhasedRelease": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/appStoreVersionPhasedRelease",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/appStoreVersionPhasedRelease"
}
},
"routingAppCoverage": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/routingAppCoverage",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/routingAppCoverage"
}
},
"appStoreReviewDetail": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/appStoreReviewDetail",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/appStoreReviewDetail"
}
},
"appStoreVersionSubmission": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/appStoreVersionSubmission",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/appStoreVersionSubmission"
}
},
"idfaDeclaration": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/idfaDeclaration",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/idfaDeclaration"
}
},
"appClipDefaultExperience": {
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/relationships/appClipDefaultExperience",
"related": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e/appClipDefaultExperience"
}
}
},
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/appStoreVersions/a75acc6e-9429-4539-a282-eadef235169e"
}
}
],
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/apps/395389919/appStoreVersions?limit=1",
"next": "https://api.appstoreconnect.apple.com/v1/apps/395389919/appStoreVersions?cursor=AQ.ANZyDDk&limit=1"
},
"meta": {
"paging": {
"total": 68,
"limit": 1
}
}
}
Post not yet marked as solved
Hi, I want to download the salesReports via the API, unfortunately, over:
https://api.appstoreconnect.apple.com/v1/salesReports?filter[frequency]=DAILY&filter[reportSubType]=SUMMARY&filter[reportType]=SALES&filter[vendorNumber]=<my_vendor_number>
I always get:
I generate the token for 15min and without any scope restriction and following the description here https://developer.apple.com/documentation/appstoreconnectapi/download_sales_and_trends_reports.
Can anybody spot what I'm missing or wrongly formatted the request or any idea what I could test next to get a finally a result?
thanks a lot for your help.
Post not yet marked as solved
Hi, when I request SalesReport via Connect API, I get 403 error. However, until December 28, it was working normally.
I've tried creating a new api key, but it's still a 403. Can anyone help me or tell me how to troubleshoot this? Thanks
ERROR MESSAGE
{'errors': [{'id': '***', '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'}}]}
CODE
import time
import requests
import jwt
KEY_ID = "***"
ISSUER_ID = "x-x-x-x-x"
EXPIRATION_TIME = int(round(time.time() + (20 * 60)))
PRIVATE_KEY = open('PATH_TO_KEY', 'r').read()
header = {
"alg": "ES256",
"kid": KEY_ID,
"typ": "JWT"
}
payload = {
"iss": ISSUER_ID,
"exp": EXPIRATION_TIME,
"aud": "appstoreconnect-v1"
}
token = jwt.encode(payload=payload, key=PRIVATE_KEY, headers=header, algorithm='ES256')
URL = 'https://api.appstoreconnect.apple.com/v1/salesReport'
HEAD = {'Authorization': 'Bearer %s' % token}
params = {
'filter[frequency]': 'DAILY',
'filter[reportDate]': '2022-02-01',
'filter[reportSubType]': 'SUMMARY',
'filter[reportType]': 'SALES',
'filter[vendorNumber]': 'my vendor number',
}
r = requests.get(URL, params=params, headers=HEAD)
print(r.status_code) # return 403
Post not yet marked as solved
When we use register api to register our device,
I got response that status is PROCESSING/INELIGIBLE why?
response like:
{
"type": "devices",
"id": "XXXXX",
"attributes": {
"addedDate": "2022-04-20T22:57:51.000+00:00",
"name": "XXXXX",
"deviceClass": "IPHONE",
"model": "iPhone 13 Pro Max",
"udid": "XXXXXXXXXXXXXX",
"platform": "IOS",
"status": "PROCESSING"
},
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/devices/***"
}
}