API access · Methodology · Public, citable
How AppMeta Pulse
talks to App Store Connect.
AppMeta Pulse authenticates to App Store Connect using Apple's official API with a key you generate in your own account. This page documents exactly which endpoints the app calls, which API key role is required for each, how the short-lived JWT tokens are signed and refreshed, where credentials live, and — equally important — what the app cannot do because of the scope it operates under. No marketing language. Verifiable against Apple's own documentation.
What you generate, what the app stores.
App Store Connect API keys are generated in your App Store Connect account, not by AppMeta Pulse. The app cannot generate or escalate a key; it can only use the one you give it.
- Sign in to App Store Connect with an account that has permission to create API keys (Admin or Account Holder).
- Open Users and Access → Integrations → App Store Connect API.
- Generate a new key. Pick a role (Sales, Finance, Developer, App Manager, Admin, etc.). The role determines what AppMeta Pulse can read — see the endpoint table below for the minimum role per report.
- Download the
.p8private key file. Apple only lets you download it once — if you lose it, you regenerate. - Copy the Key ID (10-character string) and the Issuer ID (your team's UUID, shown above the keys list).
- Paste or import the
.p8file, Key ID, and Issuer ID into AppMeta Pulse. - The three values are stored together in the system Keychain — the same secure storage iOS and macOS use for passwords and Wi-Fi credentials.
- None of the three is written to plain files, iCloud Drive, iCloud Sync, third-party servers, or analytics SDKs. With iCloud Sync on, the Issuer ID is replaced by a one-way hash and the Key ID by a short hash; the account name and vendor number you entered do sync.
- Revoke the key any time in App Store Connect → Users and Access → Keys. Revocation takes effect at Apple's API immediately; the app cannot circumvent it.
How the request is actually signed.
Per Apple's documented requirements for API tokens, every request to the App Store Connect API must include a short-lived JSON Web Token signed with ES256 using your private key. AppMeta Pulse does this signing locally — the .p8 private key never leaves your device.
alg: ES256, kid: <your Key ID>, typ: JWT. Payload: iss: <your Issuer ID>, iat: <now>, exp: <now + ≤20 min>, aud: appstoreconnect-v1. Apple's documentation specifies a maximum token lifetime of 20 minutes — tokens with longer expiry are rejected by the API.Authorization: Bearer <token> header on each HTTPS request to https://api.appstoreconnect.apple.com. The request goes directly to Apple — no intermediate proxy, no Lagerland server, no third-party analytics endpoint.iat and exp. There is no refresh token in the OAuth sense; Apple's API uses self-signed short-lived JWTs only.Endpoints called, and the role required for each.
Per Apple's role permissions matrix, the role you pick when generating the key determines which reports the key can read. AppMeta Pulse exposes exactly the views the role allows — never more.
GET /v1/salesReports. Returns daily, weekly, monthly, or yearly aggregated proceeds, units, and refunds by app and territory.Minimum role required: Sales, Finance, Admin, or Account Holder (per Apple's role permissions). App Manager and Developer roles do not have access to this endpoint — keys with those roles will see permission errors here.
This is the endpoint that drives the top-line revenue, downloads, and country breakdown views.
GET /v1/salesReports with report types SUBSCRIPTION and SUBSCRIPTION_EVENT.Minimum role required: Sales, Finance, Admin, or Account Holder. Same access scope as Sales reports.
Drives the subscription health view — active subscribers, trial conversions, cancellations, refunds.
Minimum role required: Admin, Account Holder, App Manager, Developer, Marketing, or Sales — App Analytics has broader role access than Sales reports.
If your key has only one of the analytics-eligible roles (e.g. App Manager) but lacks Sales access, AppMeta Pulse will show analytics-derived counts but not paid-out proceeds. The app surfaces this state clearly rather than failing silently.
POST, PATCH, and DELETE on /v1/customerReviewResponses when you send, edit, or delete a review reply, and POST /v1/analyticsReportRequests, which asks Apple to start preparing your analytics reports.What the app can and cannot change.
Two layers of limits — what the app's code does, and what your key's role allows.
- The network layer reads with
GET. Its only writes are review replies you send (POST,PATCH,DELETEon customer review responses) and analytics report requests (POST). There is no code for builds, metadata, pricing, or TestFlight. - The UI has no "submit," "publish," metadata, or pricing controls. The only buttons that change App Store Connect are Reply (to one review or a batch of up to 25), Edit, and Delete on your own review responses.
- Pushing the wrong build or hiking the wrong price is impossible inside AppMeta Pulse by construction.
- The role you set on the API key determines what the key can do. A key with the Sales role cannot write to anything, even if a request tried.
- You can revoke the key in App Store Connect at any time; the next API call from AppMeta Pulse will fail with 401 and the app surfaces that state clearly.
- Apple's API enforces the role at the request level — not on trust of the calling app.
Data freshness — what to expect.
App Store Connect's own reporting cadence is the upper bound on freshness; no third-party dashboard can be faster than Apple's source data.
What we deliberately do not promise.
- Numbers can never be fresher than Apple's reporting cadence. We cannot accelerate Apple's overnight ETL.
- Exchange rates and tax categories in Apple's Sales and Trends are rolling averages — they will not always match what hits your bank account.
- If you generated your API key with a role that lacks Sales access (e.g. App Manager only), the app will show what that role can read and clearly note what it cannot.
- App Store Connect API rate limits are managed by Apple. Heavy refresh during a sales spike may briefly throttle; the app backs off rather than retrying aggressively.
- Where the .p8 key lives (system Keychain — not iCloud Drive, not a plaintext file, not a third-party server).
- Where your data goes when iCloud Sync is on (your own private iCloud database, which we can't access; the .p8 key never syncs).
- What the app does with your data after fetching it (keeps it for you — nothing is sent to us, and the App Store privacy label declares zero data collection, verifiable on the listing).
- Which App Store Connect writes the app makes (only the review replies you send and analytics report requests, listed above).
- Honest disclosure when something changes (this page is dated and updated when the model changes).
About AppMeta Pulse
Use it
Open AppMeta Pulse.
App Store Connect on iPhone, iPad, and Mac. No build, pricing, or metadata controls, zero data collection on the privacy label, .p8 key in your Keychain, your data goes nowhere but Apple.