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#

PropertyDescription
idUnique identifier (UUID)
nameDisplay name
configApplication settings (JSON)
created_atCreation timestamp
organisation_idParent organization

Creating an Application#

Via Console#

  1. Sign in to console.outeract.com
  2. Click Create Application
  3. Enter a name
  4. Configure settings (optional)
  5. 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"
}
SettingBehavior
on_receivedMark messages as read immediately when received
on_processing_completeMark as read after your webhook responds
neverNever automatically mark messages as read
{
  "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_KEY

When 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.