Concepts
Apps and keys
An app is one iOS bundle id with its own App ID. Which key goes in the app, which stays on your server, and how an agent signs in.
Organizations and apps
An organization holds your apps. Each app is one iOS bundle id, and each app is billed on its own: its first 1,000 monthly active users are free, and apps do not pool.
When you create an app, Xulo gives it an App ID. The App ID is a UUID and it never changes.
The bundle id is unique inside your account, so the same account cannot open a second app with the same bundle id. Another account can use that bundle id. If you typed the bundle id wrong, you can correct it. The App ID stays the same.
Which key goes where
| Key | Where it lives | What it can do |
|---|---|---|
| App ID | In the app, passed to Xulo.start |
Register an install, record opens, sessions and purchases, and ask for an in-app card. It cannot send. It is not a secret. |
| REST API key | On your server only | Send a push to one app and read its counts. |
| Agent sign-in | In your agent tool | Draft and send for the apps in your organization. |
Both the App ID and the REST API key are in Settings → Keys & IDs.
The phone never carries a secret. The App ID in your app cannot send a push, so it is safe to ship inside the binary.
REST API keys
A REST API key belongs to one app and starts with xulo_. The dashboard shows it once, when you create it. Store it on your server, for example in an environment variable.
- A key opens only its own app. Naming another app's App ID returns 404.
- You can lock a key to IP addresses or ranges. A call from anywhere else returns 403.
- A revoked key returns 401.
See Authentication.
Agent sign-in
An agent connects to https://mcp.xulo.io/mcp. The tool opens a sign-in screen, you sign in with your dashboard account and allow it, and the tool comes back connected. There is no key to copy. The connection acts for the organization of the person who signed in. The setup prompt is at xulo.io/mcp.
Apple credentials
Each app sends through its own Apple credentials.
- A
.p8auth key belongs to an Apple developer account. Upload it once with a name, then choose it on every app from that account. - A
.p12certificate stays on the one app it was uploaded to.
See APNs setup.