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 tag

212 Posts
Sort by:
Post marked as solved
21 Replies
17k Views
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?
Posted
by
Post not yet marked as solved
16 Replies
9.7k Views
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.
Posted
by
Post not yet marked as solved
25 Replies
17k Views
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
7 Replies
5.1k Views
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
Posted
by
Post not yet marked as solved
2 Replies
4.0k Views
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.
Posted
by
Post not yet marked as solved
31 Replies
26k Views
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.
Posted
by
Post not yet marked as solved
3 Replies
2.2k Views
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
Posted
by
Post not yet marked as solved
180 Replies
64k Views
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?
Posted
by
Post not yet marked as solved
1 Replies
341 Views
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.
Posted
by
Post not yet marked as solved
1 Replies
856 Views
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.
Posted
by
Post not yet marked as solved
4 Replies
1.6k Views
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?
Posted
by
Post not yet marked as solved
4 Replies
9.4k Views
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.
Posted
by
Post not yet marked as solved
1 Replies
599 Views
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)
Posted
by
Post not yet marked as solved
3 Replies
3.4k Views
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 } } }
Posted
by
Post not yet marked as solved
1 Replies
957 Views
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.
Posted
by
Post not yet marked as solved
2 Replies
2.0k Views
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
Posted
by
Post not yet marked as solved
7 Replies
3.1k Views
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/***" } }
Posted
by