Base URLs
All API requests are made to one of the following base URLs depending on your environment:API Key Types
AppDNA uses two distinct key types, each designed for a different integration surface.1. SDK API Keys
SDK API Keys authenticate mobile SDKs (iOS, Android, Flutter, React Native) against the ingestion and config-bundle endpoints.
Send the public key in the
x-api-key header:
2. Dashboard Session Tokens
Dashboard and analytics endpoints (analytics, webhooks, settings, etc.) are authenticated with the Firebase session token of the signed-in console user — not a standalone REST API key. Send the Firebase ID token as a Bearer token along with headers identifying the organization and application in scope:Authentication Levels
AppDNA enforces four authentication levels depending on the endpoint:Public
No authentication required. Used for health checks and public endpoints.SDK Key
Requires thex-api-key header. Resolves the key to an app_id and tenant_id pair. Used by the mobile SDKs.
Customer (JWT)
Requires a valid Firebase session token plusx-tenant-id and x-app-id headers. The server resolves the caller to:
Super Admin
Requires a valid session token carrying the super-admin claim, which the server verifies before granting access. Used exclusively for platform-operator endpoints (tenant management, platform billing, etc.).Super Admin endpoints are not available to regular API consumers. They are reserved for platform operators.
Managing API Keys
API keys are managed from the AppDNA Console:- Navigate to Settings in the left sidebar
- Select the SDK tab
- Click API Keys
- Use Create Key to generate a new key pair
When you create a new SDK API Key, the secret key is shown only once. Store it securely — you will not be able to retrieve it again.
Rotating Keys
To rotate an SDK API Key:Rate Limits
Rate limits are configurable per application from your app’s settings.
When the rate limit is exceeded, the API responds with HTTP
429 Too Many Requests. The SDK automatically retries with exponential backoff.
You have successfully configured authentication when your SDK can call the bootstrap endpoint and receive a valid response with your
orgId and appId.
