Key concepts
- General settings — Project display name and optional proxy URLs (
proxy_urlfor SDK traffic,rtdn_proxy_urlfor Play Store RTDN callbacks). - Secret rotation —
POST /v4/project-settings/regenerate-secretis deprecated. It creates a newsk_…key, deletes the project’s oldest Secret Key immediately, and returns the new value. Requests with the deleted key are normally rejected within about an hour — see What happens after you delete a key. Every call rotates again, so never retry it automatically. For rotation without downtime, create a second Secret Key in the dashboard, migrate and verify your consumers, then delete the old key — see How to manage and rotate project keys. - Store config —
GET/POST /v4/project-settings/stores/{platform}whereplatformisappleorgoogle. Stripe store config is not exposed via this API. Apple requires the App Store Connect API triplet (connect_key_identifier+connect_private_key+connect_issuer_id) to be sent together; same for the In-App Purchase API triplet (iap_key_identifier+iap_private_key+iap_issuer_id). Submitting only 1–2 of a triplet returns 422.
Available endpoints
Sensitive fields
Secrets (Apple shared secret, Apple Connect/IAP private keys, Google service account key) are never returned inGET responses. Instead the response includes boolean flags — has_shared_secret, has_connect_private_key, has_iap_private_key, has_service_account_key — that tell you whether the value is set. Each store config also carries enabled, which says whether the platform is switched on for the project at all. Switching a store off (enabled: false) needs a signed-in dashboard user: it works through the MCP server, and with a Secret Key alone it returns 403 control_forbidden.
On POST (update), omitting a secret field preserves the existing value. To rotate a secret, send the new value explicitly.