Follow this guide to create an Apple Ads API client and connect your campaign spend to AppDesk, so it sits next to the App Store revenue it brought in.
Prerequisite: You need an Account Admin in your Apple Ads account to hand out an API role, and you sign in under that API role to create the client. An Account Admin on its own cannot do it — see Step 1.
This is separate from your App Store Connect key. If you have not connected App Store Connect yet, start with the App Store Connect setup guide — Apple Ads spend is only useful once there is revenue to compare it against.
Apple Ads keeps API access behind its own set of user roles. The screen where you create an API client is only visible to a user who holds one of them, which is why your existing admin login is not enough.
Tip: AppDesk only reads reports, so API Account Read Only is all it needs. Choose API Account Manager instead only if you want the same credentials to create or edit campaigns from other tools.
Unlike App Store Connect, Apple Ads does not hand you a key file. You create the key pair yourself and give Apple the public half. Open Terminal and run these two commands:
openssl ecparam -genkey -name prime256v1 -noout -out private-key.pem openssl ec -in private-key.pem -pubout -out public-key.pem
This leaves two files in whatever folder you ran the commands in:
private-key.pem — stays on your machine. You add this to AppDesk in Step 4 and never share it.public-key.pem — you paste this into Apple Ads in Step 3.Print the public key so you can copy it:
cat public-key.pem
Important: Keep private-key.pem somewhere safe. Nobody can re-issue it for you — if you lose it, you generate a new pair and register the new public key with Apple Ads again.
public-key.pem into the Public Key field — including the -----BEGIN PUBLIC KEY----- and -----END PUBLIC KEY----- lines.Apple then shows three values above the Public Key field:
SEARCHADS. followed by a UUID.SEARCHADS.; it is not your Apple Developer team id.These three stay visible on this page, so you can come back for them later. Copy all three now.
private-key.pem file.Your private key is stored in the Keychain on your device and is used only to sign requests to Apple. It is never sent to Rivolu LLC or any third party.
Once connected, two optional settings appear. Both change how much AppDesk downloads.
One row per campaign, per country, per day instead of one per campaign per day. More detail, more to download. Changing it re-downloads your spend history, because the two levels of detail cannot be mixed without double-counting.
What each keyword cost and returned, pulled after every spend sync. Worth turning on early: Apple serves daily keyword data for about 90 days only, so history builds from the day you enable it and cannot be backfilled afterwards.
Apple serves daily campaign data for about 90 days. Your first sync reaches back that far and no further; everything after that accumulates as AppDesk keeps syncing.
| Field | Where to Find It |
|---|---|
| Client Id | Apple Ads → Account Settings → API (above the Public Key field) |
| Team Id | Same page, next to the Client ID |
| Key Id | Same page, identifies the key pair you registered |
| Private Key (.pem) | The file you generated with openssl in Step 2 |
| Organization | Chosen in AppDesk after clicking Connect |
This is the most common snag. The field is hidden from Account Admins — it only appears for a user signed in with an API role. Go back to Step 1, invite yourself as API Account Read Only, accept the invitation, and sign in as that user.
The credentials work, but the user behind them has not been granted access to any campaign group. Check in Account Settings → User Management that the API user still holds its role and that the invitation was accepted.
AppDesk needs private-key.pem, not public-key.pem. The right file starts with -----BEGIN EC PRIVATE KEY----- or -----BEGIN PRIVATE KEY-----.
The ids and the key file have to come from the same registration. If you generated a second key pair after copying the ids, paste the new public key into Apple Ads and copy the ids again — they change with the key.
Run the two openssl commands from Step 2 again, paste the new public key into Apple Ads → Account Settings → API, and update the Client Id, Team Id, and Key Id in AppDesk.
Expected. Spend from one organization means nothing under another, so AppDesk clears what it downloaded and syncs the new organization from scratch. Your App Store data is untouched.
Still need help? Contact us at admin@rivolu.com