App Management API
The App Management API allows you to programmatically create, retrieve, update, and delete apps in your Appizer organization without using the dashboard.
Base URL
https://api.appizer.com/v1/apps
Authentication
All App Management API requests require authentication using your Organization API Key:
X-API-Key: apps_your_organization_api_key
The API key must be included in the X-API-Key header of every request.
Getting Your API Key
Organization admins can find and regenerate their API key in the Organization Settings:
- Log in to your Appizer dashboard
- Navigate to Settings (gear icon)
- Scroll to the "App Management API" section
- Copy your API key or regenerate it if needed
Request Format
All requests must include the following headers:
X-API-Key: apps_your_api_key
Content-Type: application/json
Response Format
All responses are returned in JSON format with the following structure:
{
"success": true,
"app": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "My App",
...
}
}
Error responses:
{
"error": "Error message describing what went wrong"
}
Common Fields
All app objects returned by the API contain the following fields:
| Field | Type | Description |
|---|---|---|
id |
string | Unique app UUID |
organization_id |
string | UUID of the owning organization |
name |
string | App name |
description |
string | null | Optional app description |
api_key |
string | App tracking API key (ak_...) |
api_secret |
string | App tracking API secret (as_...) |
platform |
string | Always "web" for API-created apps |
bundle_id |
string | null | Mobile app bundle ID (set via dashboard) |
environment |
string | "production", "staging", or "development" |
app_store_url |
string | null | iOS App Store URL |
play_store_url |
string | null | Google Play Store URL |
website_url |
string | null | Website URL |
authorized_domains |
array | Domain strings allowed to use the SDK |
data_retention_days |
number | Days to retain event data (default: 365) |
timezone |
string | App timezone (default: UTC) |
features |
object | Feature flags: push, analytics, audiences, ai_insights |
status |
string | "active" or "inactive" |
engagement_platform |
string | "none" or "wonderpush" |
engagement_credentials |
object | null | Credentials for engagement platform |
email_platform |
string | "none" or "brevo" |
email_credentials |
object | null | Credentials for email platform |
webhook_enabled |
boolean | Whether webhook passthrough is enabled |
webhook_url |
string | null | Webhook URL if enabled |
webhook_use_query_params |
boolean | Whether to send event data as query parameters |
context_info |
string | null | Custom context for AI-generated content |
url_context |
string | null | Auto-scraped context from app URLs |
cached_user_count |
number | Cached count of tracked users |
cached_event_count |
number | Cached count of tracked events |
cached_last_event |
string | null | ISO 8601 timestamp of the most recent event |
stats_last_updated |
string | null | ISO 8601 timestamp of last stats refresh |
created_at |
string | ISO 8601 creation timestamp |
updated_at |
string | ISO 8601 last-updated timestamp |
Available Endpoints
- Create an App -
POST /v1/apps - List Apps -
GET /v1/apps - Get App Details -
GET /v1/apps/:id - Update App -
PATCH /v1/apps/:id - Delete App -
DELETE /v1/apps/:id
Error Handling
The API returns standard HTTP status codes:
200 OK- Request successful201 Created- Resource created successfully400 Bad Request- Invalid request parameters401 Unauthorized- Missing or invalid API key403 Forbidden- API key disabled404 Not Found- Resource not found500 Internal Server Error- Server error
Error responses include an error field with a description:
{
"error": "App name is required and must be 1-100 characters"
}
Rate Limiting
Currently, there are no rate limits on the App Management API. However, we recommend implementing reasonable delays between requests to avoid overwhelming the server.
Best Practices
- Secure Your API Key - Treat your API key like a password. Never commit it to version control.
- Use HTTPS - Always use HTTPS when making API requests.
- Handle Errors Gracefully - Check status codes and handle errors appropriately in your application.
- Validate Input - Validate all input data before sending requests.
- Store Safely - Store API keys in environment variables or secure configuration files.
Examples
Create an App (Node.js)
const fetch = require('node-fetch');
const apiKey = 'apps_your_api_key';
const appData = {
name: 'My New App',
description: 'My awesome app',
timezone: 'America/New_York'
};
const response = await fetch('https://api.appizer.com/v1/apps', {
method: 'POST',
headers: {
'X-API-Key': apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify(appData)
});
const result = await response.json();
if (result.success) {
console.log('App created:', result.app.id);
} else {
console.error('Error:', result.error);
}
List All Apps (Python)
api_key = 'apps_your_api_key'
headers = {
'X-API-Key': api_key,
'Content-Type': 'application/json'
}
response = requests.get('https://api.appizer.com/v1/apps', headers=headers)
result = response.json()
if result.get('success'):
for app in result['apps']:
print(f"App: {app['name']} ({app['id']})")
else:
print(f"Error: {result.get('error')}")