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

Post

Replies

Boosts

Views

Activity

Update for the subscriptionPricePoints Endpoint
I received an email from the app store that contained this message We’re reaching out to let you know that the subscriptionPricePoints endpoint now requires a territory relationship filter. If you use the App Store Connect API to configure your subscriptions, please note that you'll be required to define this filter in an upcoming release. but I can't understant it, please could anyon explain what they want or what should I do? my app was built with Flutter and had in-app purchase
1
5
1.6k
Oct ’24
I am not able to create certificate for pass via rest api
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?
5
1
2.3k
Sep ’20
Authentication on `https://appstoreconnect.apple.com/iris/v1`
Hi, I've tried to authenticate this endpoint https://appstoreconnect.apple.com/iris/v1/betaFeedbacks with the JWT token as described in the documentation, but it's not working. I know this endpoint is not documented, but gathering the beta feedback and being able to extract it to some ticket system (e.g. GitHub board) would be a really helpful option for us. Does anyone know how we can authenticate this one?
1
1
838
Apr ’22
App Store Connect API - create certificate from CSR
Hi, i am trying to upload certificate signing request (CSR) for Pass Type ID via API, using this endpoint https://api.appstoreconnect.apple.com/v1/certificates. Request body looks like this, with POST method and content type application/json: { "data": { "attributes": { "certificateType": "PASS_TYPE_ID", "csrContent": "LS0tL...S0tLS0K" }, "type": "certificates" } } csrContent is base64 encoded. The response from API is: { "errors" : [ { "id" : "71a...4c9", "status" : "404", "code" : "NOT_FOUND", "title" : "The specified resource does not exist", "detail" : "There is no identifier with ID 'null' on this team." } ] } CSR was created with KeyChain on Mac (as described here: https://developer.apple.com/help/account/create-certificates/create-a-certificate-signing-request), but i can also do it with OpenSSL. First of all, there is no pairing information between Pass Type Identifier and certificate in request. Status 404? I would expect 400. And given detail is totally useless... The documentation is poor for this topic: https://developer.apple.com/documentation/appstoreconnectapi/create_a_certificate. So that brings me to the idea of adding it (Pass Type Identifier) to the CSR content, but where? I am able to read all certificates stored via Developer Account and put them together with private keys... but storing it is pain... Does anyone have an idea?
2
1
1.1k
Sep ’23
Updating contentRightsDeclaration now returns FORBIDDEN_ERROR
Recently I've started receiving a "FORBIDDEN_ERROR" error when submitting a PATCH to "/v1/apps/xxxx". The data below is what is being sent: { "data": { "type": "apps", "id": "xxxx", "attributes": { "contentRightsDeclaration": "DOES_NOT_USE_THIRD_PARTY_CONTENT" } } } This used to work (for over a year) fine. We also update several other things (Category, Age Rating, Available Territories etc) and they still work as expected; this is the only type that has started (about a month or so ago) to behave this way. I also generated a new API key with full Admin privileges but the issue still occurs. The specific error returned is: { "errors" : [ { "id" : "1cfb7772-940c-46d5-bfe5-a97bbe314", "status" : "403", "code" : "FORBIDDEN_ERROR", "title" : "This request is forbidden for security reasons", "detail" : "The API key in use does not allow this request" } ] } Any ideas how to fix this or what's going on? Thanks in advance.
2
0
808
Oct ’23
upload App Screenshots 409
request URL:https://api.appstoreconnect.apple.com/v1/appScreenshots request body: { "data": { "type": "appScreenshots", "attributes": { "fileSize": 11097, "fileName": "my_screenshot.png" }, "relationships": { "appScreenshotSet": { "data": { "type": "appScreenshotSets", "id": "54594240-5c4c-4a0f-add1-b4cb7e52d166" } } } } } response: { "errors": [ { "id": "9523fce2-5ca3-407e-8829-fd57f2011caa", "status": "409", "code": "ENTITY_ERROR.RELATIONSHIP.INVALID", "title": "The provided entity includes a relationship with an invalid value", "detail": "appScreenshotSets doesn't exist!!", "source": { "pointer": "/data/relationships/appScreenshotSet" } } ] }
1
1
451
Nov ’23
I want to obtain information about the app, but when calling the interface to request 401, the jwt token is set
request url :ttps://appstoreconnect.apple.com/iris/v1/apps/xxxxxx?include=appStoreVersions&limit[appStoreVersions]=7 response: { "errors": [{ "status": "401", "code": "NOT_AUTHORIZED", "title": "Authentication credentials are missing or invalid.", "detail": "No valid credentials found in the request." }] }
0
0
356
Nov ’23
about make an assert Reservatation
interface response is below "attributes" : { "fileSize" : 11097, "fileName" : "my_screenshot.png", "sourceFileChecksum" : null, "imageAsset" : null, "assetToken" : "PurpleSource62/v4/c4/c6/5f/c4c65fe0-b616-0454-d71b-7771b95f74f1/4d62262c-4ec1-4d89-b82c-c7b7a402e866_null_54594240-5c4c-4a0f-add1-b4cb7e52d166_my_screenshot.png", "assetType" : "SCREENSHOT", "uploadOperations" : [ { "method" : "PUT", "url" : "https://store-030.blobstore.apple.com/itms6-assets-massilia-030001/PurpleSource62%2Fv4%2Fc4%2Fc6%2F5f%2Fc4c65fe0-b616-0454-d71b-7771b95f74f1%2FgzsRhfc7iZIvrJoG3mdTlRGfH-Hu1JJBY_Y82m_QlKU_U003d-1587670858469?uploadId=5ae7a610-859a-11ea-adb0-d8c497b45469&Signature=nL9SQyAh4l1tEwoWQhiflX270Zs%3D&AWSAccessKeyId=MKIA4IEXBU1OGIOUHE96&partNumber=1&Expires=1588275658", "length" : 11097, "offset" : 0, "requestHeaders" : [ { "name" : "Content-Type", "value" : "image/png" } ] } problem is how to upload
0
0
332
Nov ’23
List All In-App Purchases route timing out
Over the last 48 hours (Since Dec 4th) for me, the List All In-App Purchases route is timing out for several different apps. Either the initial request times-out or the paging next token request times out. https://api.appstoreconnect.apple.com/v1/apps/{id}/inAppPurchasesV2 https://developer.apple.com/documentation/appstoreconnectapi/list_all_in-app_purchases_for_an_app Other routes like listing apps seem to work. https://api.appstoreconnect.apple.com/v1/apps The developer status page does not list any outages. https://developer.apple.com/system-status/ Where is the correct place to report issues with AppStore Connect API services?
0
0
446
Dec ’23
Internal Server Error 500 at AppStoreConnect API end-point https://api.appstoreconnect.apple.com/v1/appPricePoints
This started last night for us - we are getting Internal Server Error 500 when making the request (appropriately authenticated): https://api.appstoreconnect.apple.com/v1/appPricePoints?limit=200&include=priceTier,territory&filter[territory]=USA&filter[priceTier]=12 We are getting error: { "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/." }] } Anyone else experiences this?
1
0
502
Dec ’23
Missing "price" and "currency" in "Get Transaction History" response
Hello, I am using the Get Transaction History endpoint in our application back end and I've noticed that "price" and "currency" are no longer in the response payload. I did not see this change in the Apple App Store Server API Changelog and was wondering if this is due to a pending change or an error on Apple's server-side? I've added handling into my application to not utilize those items in the payload but it would be nice to have them if they are going to return.
4
16
804
Dec ’23
When calling AppConnect API, it says to me that "This request requires an in-effect agreement that has not been signed or has expired."
when calling APPConnectAPI, It says to me that "This request requires an in-effect agreement that has not been signed or has expired." But when I go to https://appstoreconnect.apple.com/agreements/#/, There is no agreements I can agree. {"status": 403, "msg": "", "data": {"errors": [{"id": "6V4Q4XMVTZIH2URMLCQ5BPD4FU", "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"}}]}} API address: https://api.appstoreconnect.apple.com/v1/certificates
2
2
3.2k
Jan ’24
Activations# "api subscription_event report" vs "web sales and trends event report"
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
1
0
648
Jan ’24
A required agreement is missing or has expired when connecting to https://api.appstoreconnect.apple.com
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" } } ] }
1
3
2.9k
Jan ’24
Error connecting to appstore API
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" } } ] }
0
0
509
Jan ’24
AppStore Connect API - Random 405 Error When Batch Updating Localizations
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
0
0
451
Jan ’24