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:<br/>Production"]
Org --> Staging["Application:<br/>Staging"]
Org --> CustA["Application:<br/>Customer A"]
Prod --> PC1["Platform<br/>Connections"]
Prod --> U1["Users"]
Prod --> E1["Events"]
Prod --> K1["API Keys"]Every application is fully isolated, with its own platform connections, users, events, and API keys. Production is expanded above; Staging and each tenant’s application contain exactly the same resources, kept completely separate.
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#
- Sign in to the console
- Click Create Application
- Enter a name
- Configure settings (optional)
- Click Create
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 one application per environment in the console, and configure them differently:
| Application | auto_mark_read | debug_responses_enabled |
|---|---|---|
My App - Production | on_processing_complete | disabled |
My App - Staging | on_processing_complete | enabled |
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:
POST / HTTP/1.1
Host: api.outeract.com
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"query": "{ users(first: 10) { edges { node { id name } } } }"
}Each API key belongs to exactly one application, so the key itself determines which application a request operates on. To work against a different application, use a key created for it.
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