Connect App Store Server API to Your AI Agent

Provide a customer transaction identifier or a notification time window. AI can organize decoded records into a support or delivery-investigation brief.

30 tools Custom credential

Try a App Store Server API Task

Copy a prompt into your agent with the oo Skill installed. Add your page links and source notes before running it.

oo Skill App Store Server API

Explain a Customer’s Purchase History

Read transaction history and subscription status to prepare a support summary.

/oo App Store Server API: Read App Store transaction history and subscription statuses for [customer transaction ID] in this connection. Summarize purchases, renewals, and reported current states without changing the subscription.

Investigate Notification Delivery

Read notification history for a time window and organize delivery failures for investigation.

/oo App Store Server API: Read App Store notification history from [start time] to [end time], including failures. Group the records by notification type and summarize delivery problems.

Start Working with App Store Server API

  1. Install OOMOL

    Set up oo CLI and the oo Skill in your agent.

    Install OOMOL →
  2. Connect App Store Server API

    Connect with an In-App Purchase key, issuer ID, key ID, Bundle ID, and the correct environment.

    Connect App Store Server API →
  3. Give Your Agent a Task

    Use /oo with the pages to read, the changes to make, and where to save the result.

    Connection Guide →

Choose Your Agent

  • An App Store Connect In-App Purchase private key and its identifiers, the app Bundle ID, and sandbox or production environment.
  • Use an In-App Purchase key rather than an App Store Connect API key.

App Store Server API Tools

The App Store Server API exposes purchase histories, subscription groups, and notification records for an app. These records connect customer transactions with reported subscription states and server delivery attempts.

Read Purchases and Subscriptions

Retrieve transaction history, transaction details, refunds, and subscription status.

Read Notification History

Retrieve notification records and test-notification delivery results.

30 tools

Get Transaction History

List a customer's in-app purchase transactions for your app, oldest first by default, decoded from the signed payloads Apple returns. Pass sort DESCENDING to get the most recent transactions first. Returns up to 20 transactions per page.

app_store_server.get_transaction_history

Get Transaction Info

Read one in-app purchase transaction by identifier, decoded from the signed payload Apple returns.

app_store_server.get_transaction_info

Get App Transaction Info

Read the app download transaction for a customer, decoded from the signed payload Apple returns. It records when and on which platform the customer first acquired the app.

app_store_server.get_app_transaction_info

Look Up Order Id

Look up the in-app purchase transactions behind an order ID from a customer's App Store receipt, to check that the order is genuine and belongs to your app. Apple serves this endpoint only in the production environment, so it fails on a sandbox connection.

app_store_server.look_up_order_id

Set App Account Token

Set or replace the app account token on a transaction, to associate a purchase made outside your app with a customer on your own service. Overwrites any token already set.

app_store_server.set_app_account_token

Finish Transaction

Tell the App Store that your server finished delivering the content for a transaction. Call it only after the customer has the content; it cannot be undone. Apple still returns a finished transaction from get_transaction_history, so do not treat its disappearance as confirmation.

app_store_server.finish_transaction

Get All Subscription Statuses

Read the status of every auto-renewable subscription a customer has for your app, grouped by subscription group, with the latest transaction and renewal information of each decoded from the signed payloads Apple returns.

app_store_server.get_all_subscription_statuses

Extend Subscription Renewal Date

Extend the renewal date of one customer's active auto-renewable subscription, to compensate for a service outage or a cancelled event. The extension cannot be reversed, and Apple emails the customer about the new renewal date.

app_store_server.extend_subscription_renewal_date

Extend Renewal Date For All Active Subscribers

Extend the renewal date of every active subscription to one product, optionally limited to some storefronts. The App Store processes the request asynchronously; poll get_subscription_renewal_date_extension_status for the outcome. The extension cannot be reversed.

app_store_server.extend_renewal_date_for_all_active_subscribers

Get Subscription Renewal Date Extension Status

Check how far the App Store has got with a renewal date extension that was requested for all active subscribers of a product.

app_store_server.get_subscription_renewal_date_extension_status

Get Refund History

List the in-app purchase transactions the App Store refunded for a customer in your app, newest first, decoded from the signed payloads Apple returns. Returns up to 20 transactions per page.

app_store_server.get_refund_history

Send Consumption Information

Send consumption information for an in-app purchase after a CONSUMPTION_REQUEST notification, so the App Store can decide on the customer's refund request. Apple expects an answer within 12 hours of the notification. Use this for App Store in-app purchases that do not go through the Advanced Commerce API.

app_store_server.send_consumption_information

Send Consumption Information V1

Send the version 1 consumption information for an in-app purchase after a CONSUMPTION_REQUEST notification. Apple documents this shape for purchases made through the Advanced Commerce API; use send_consumption_information for ordinary App Store in-app purchases.

app_store_server.send_consumption_information_v1

Request Test Notification

Ask the App Store to send a TEST notification to the App Store Server Notifications URL configured for your app, and get back the token that identifies the attempt. Fails when no notification URL is configured for the selected environment.

app_store_server.request_test_notification

Get Test Notification Status

Read the delivery result of a test notification, with the notification payload decoded from the signed payload Apple returns. Apple answers 404 until it has finished the first delivery attempt.

app_store_server.get_test_notification_status

Get Notification History

List the App Store Server Notifications the App Store tried to deliver to your server in a time span, with each notification payload decoded. History covers the past 180 days in production and the past 30 days in sandbox, and returns up to 20 records per page.

app_store_server.get_notification_history

Upload Retention Image

Upload a PNG image for retention messages, either a FULL_SIZE image shown above the message body or a BULLET_POINT icon. The image starts in the PENDING state and Apple reviews it before it can be displayed; check the state with get_retention_image_list. Each app can hold up to 2000 images and an identifier can be uploaded only once. Only images and messages in the APPROVED state are shown to customers; the sandbox approves uploads immediately. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.upload_retention_image

Get Retention Image List

List every image uploaded for retention messaging in this app and environment, with its size slot and approval state. Only images and messages in the APPROVED state are shown to customers; the sandbox approves uploads immediately. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.get_retention_image_list

Delete Retention Image

Delete an uploaded retention image. Apple refuses with 403 while a message still references the image, so delete the message first; a missing image answers 404. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.delete_retention_image

Upload Retention Message

Upload the text of a retention message: a header, a body, optionally a full-size image and bullet points with icons. The message starts in the PENDING state and Apple reviews it; check the state with get_retention_message_list. Leave out image and bulletPoints for messages you will use as switch-plan or promotional-offer messages. Each app can hold up to 2000 messages and an identifier can be uploaded only once. Only images and messages in the APPROVED state are shown to customers; the sandbox approves uploads immediately. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.upload_retention_message

Get Retention Message List

List every message uploaded for retention messaging in this app and environment, with its approval state. A message that carries an image also needs that image to be APPROVED; check it with get_retention_image_list. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.get_retention_message_list

Delete Retention Message

Delete an uploaded retention message. A missing message answers 404. Stop returning the identifier from your Get Retention Message endpoint first, and delete any image it used afterwards with delete_retention_image. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.delete_retention_message

Configure Default Retention Message

Set the default retention message the App Store shows for one subscription product in one locale, replacing any default configured before. Only text-based messages, with or without an image, can be defaults, and both the message and its image must be APPROVED. Products without a default in a locale show no retention message there, and the default is also the fallback when your real-time endpoint fails. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.configure_default_retention_message

Get Default Retention Message

Read which message is configured as the default retention message for one subscription product in one locale. Returns a null messageIdentifier when no default is configured there. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.get_default_retention_message

Delete Default Retention Message

Remove the default retention message of one subscription product in one locale, so the App Store shows no retention message there. Succeeds even when no default was configured. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.delete_default_retention_message

Configure Retention Realtime Url

Register the URL of your Get Retention Message endpoint for the environment of this connection, replacing any URL registered before. Once set, the App Store calls it whenever a subscriber opens the cancellation flow and shows the message you pick. A production URL is accepted only after your endpoint passed the sandbox performance test (Apple answers 403 otherwise). Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.configure_retention_realtime_url

Get Retention Realtime Url

Read the URL of the Get Retention Message endpoint registered for the environment of this connection. Returns a null realtimeUrl when none is registered. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.get_retention_realtime_url

Delete Retention Realtime Url

Unregister the Get Retention Message endpoint URL for the environment of this connection. Afterwards the App Store shows only default messages in that environment until a URL is registered again. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.delete_retention_realtime_url

Initiate Retention Performance Test

Start Apple's performance test of the Get Retention Message endpoint registered in the sandbox, using an active sandbox subscription as the sample purchase. Passing the test is required before configure_retention_realtime_url accepts a production URL. Returns the request identifier and the test parameters; the test runs for the returned totalDuration. Available only on a connection whose environment is sandbox; Apple serves the performance test endpoints on the sandbox host alone. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.initiate_retention_performance_test

Get Retention Performance Test Results

Read the outcome of a sandbox performance test started with initiate_retention_performance_test: PENDING while it runs, then PASS or FAIL together with the measured response times, success rate and failure counts. Available only on a connection whose environment is sandbox; Apple serves the performance test endpoints on the sandbox host alone. Apple grants Retention Messaging API access per developer account; without it these endpoints answer 404 with no error body.

app_store_server.get_retention_performance_test_results

Frequently Asked Questions

Why must I choose sandbox or production?

Transactions belong to one environment. Use the matching connection for sandbox and TestFlight purchases or production purchases.

What identifier is needed for a customer summary?

Provide a transaction identifier belonging to that customer in your app. History and subscription-status operations can use transaction, original transaction, or app transaction identifiers.

Will a support summary modify a subscription?

No. Reading history and status does not extend renewal dates or submit consumption information. Those are separate operations.

Connect App Store Server API

About App Store Server API ↗