Applications#
Applications are the primary organizational unit in Outeract. They serve as isolated containers for all your messaging data and platform connections.
Overview#
An Application represents a single messaging context - typically one per product, environment, or customer (if you’re building a multi-tenant product).
flowchart TB
Org["Organisation"]
Org --> Prod["Application: Production"]
Org --> Staging["Application: Staging"]
Org --> CustA["Application: Customer A<br/>(if multi-tenant)"]
Prod --> PC1["Platform Connections<br/>(WhatsApp, Slack)"]
Prod --> U1["Users & Platform Users"]
Prod --> E1["Events"]
Prod --> K1["API Keys"]
Staging --> PC2["Platform Connections<br/>(test accounts)"]
Staging --> U2["Users & Platform Users"]
Staging --> E2["Events"]
Staging --> K2["API Keys"]
CustA --> PC3["Platform Connections"]
CustA --> More["..."]Key Properties#
| Property | Description |
|---|---|
id | Unique identifier (UUID) |
name | Display name |
config | Application settings (JSON) |
created_at | Creation timestamp |
organisation_id | Parent organization |
Creating an Application#
Via Console#
- Sign in to console.outeract.com
- Click Create Application
- Enter a name
- Configure settings (optional)
- Click Create
Via API (Admin)#
mutation CreateApplication {
createApplication(
name: "My New App"
config: {
auto_mark_read: "on_received"
link_code_auto_detect: "enabled"
}
) {
id
name
}
}Application Configuration#
Applications have configurable settings that control behavior:
Message Handling#
{
"auto_mark_read": "on_received" | "on_processing_complete" | "never"
}| Setting | Behavior |
|---|---|
on_received | Mark messages as read immediately when received |
on_processing_complete | Mark as read after your webhook responds |
never | Never automatically mark messages as read |
Link Codes#
{
"link_code_auto_detect": "enabled" | "disabled"
}When enabled, Outeract automatically detects link codes in incoming messages and processes them.
Transcription#
{
"transcription_enabled": "enabled" | "disabled",
"transcription_provider": "whisper",
"transcription_model": "base" | "small" | "medium" | "large",
"transcription_language": "en" | "es" | "auto"
}Automatically transcribe audio messages using AI.
Debug Mode#
{
"debug_responses_enabled": "enabled" | "disabled"
}Include detailed debug information in API responses.
Querying Applications#
Get Current Application#
query {
application {
id
name
config
platformConnections {
id
platformName
name
}
}
}List All Applications (Admin)#
query {
organisation {
applications {
id
name
createdAt
}
}
}Multi-Environment Setup#
A common pattern is to create separate applications for different environments:
Development#
- Use test platform accounts
- Enable debug mode
- Relaxed rate limits
Staging#
- Mirror production configuration
- Use test data
- Integration testing
Production#
- Real platform connections
- Production API keys
- Monitoring enabled
# Create production app
mutation {
createApplication(
name: "My App - Production"
config: {
auto_mark_read: "on_processing_complete"
debug_responses_enabled: "disabled"
}
) {
id
}
}
# Create staging app
mutation {
createApplication(
name: "My App - Staging"
config: {
auto_mark_read: "on_processing_complete"
debug_responses_enabled: "enabled"
}
) {
id
}
}Data Isolation#
Applications provide complete data isolation:
- Users are scoped to a single application
- Events cannot be accessed across applications
- Platform Connections belong to one application
- API Keys are bound to a specific application
This means:
- A user in App A is completely separate from a user in App B
- Queries automatically filter to the current application
- Cross-application data leakage is impossible
Authentication#
API keys are scoped to a specific application, so no additional application ID header is needed:
GET /v1/users HTTP/1.1
Host: api.outeract.com
Authorization: Bearer YOUR_API_KEYWhen using JWT authentication (Admin API), include the X-Outeract-App-ID header to specify which application to operate on.
Deleting Applications#
**Warning**: Deleting an application permanently removes all associated data including users, events, and platform connections. This action cannot be undone.
mutation DeleteApplication {
deleteApplication(id: "app_abc123")
}Best Practices#
1. Separate Environments#
Create distinct applications for development, staging, and production.
2. Meaningful Names#
Use clear, descriptive names that indicate the application’s purpose.
3. Minimal Configuration#
Start with default settings and only customize what you need.
4. Regular Audits#
Periodically review API keys and platform connections.
5. Monitor Usage#
Track message volumes and API usage per application.
Related Concepts#
- Users - User management within applications
- Events - Events belong to applications
- Platform Connections - Connecting platforms to applications