Frequently Asked Questions#

General#

What is Outeract?#

Outeract is a unified messaging infrastructure that lets you send and receive messages across multiple platforms (WhatsApp, Instagram, Telegram, Slack, etc.) through a single API.

Which platforms are supported?#

  • WhatsApp Business
  • Instagram Business
  • Facebook Messenger
  • Telegram
  • Slack
  • Discord
  • SMS (Twilio)
  • Email (Maileroo)
  • iMessage (LoopMessage)

Is there a free tier?#

Yes! The free tier includes:

  • 1,000 messages/month
  • 1 application
  • All platform integrations
  • Basic support

How does pricing work?#

Pricing is based on message volume and features. See pricing page for details.

Authentication#

How do I get an API key?#

  1. Sign in to console.outeract.com
  2. Go to SettingsAPI Keys
  3. Click Create API Key
  4. Copy and securely store the key

What’s the difference between API keys and JWT tokens?#

  • API Keys: For application-to-application authentication (your backend → Outeract)
  • JWT Tokens: For admin operations and console access

How do I rotate API keys?#

  1. Create a new API key
  2. Update your application to use the new key
  3. Verify it works
  4. Delete the old key

Platform Connections#

How do I connect WhatsApp?#

  1. Create a WhatsApp Business Account in Meta Business Manager
  2. In Outeract, click Add ConnectionWhatsApp Business
  3. Click Connect with Meta and complete OAuth
  4. Done! Your connection is ready.

Can I connect multiple accounts of the same platform?#

Yes! You can have multiple WhatsApp numbers, multiple Telegram bots, etc. Each is a separate platform connection.

What happens if my OAuth token expires?#

For OAuth platforms (WhatsApp, Instagram, Facebook), tokens are automatically refreshed. If issues occur, reconnect via OAuth.

How do I test without sending real messages?#

Use sandbox mode:

mutation {
  sendMessage(
    platformConnectionId: "pc_abc123"
    toExternalId: "+14155551234"
    message: "Test"
    sandbox: true
  ) {
    id
  }
}

Messaging#

What’s the maximum message length?#

Varies by platform:

  • WhatsApp: 4,096 characters
  • Telegram: 4,096 characters
  • Instagram: 1,000 characters
  • Facebook: 2,000 characters
  • SMS: 1,600 characters (concatenated)
  • Discord: 2,000 characters

Can I send files/attachments?#

Yes! Upload files first, then attach to messages:

mutation {
  sendMessage(
    platformConnectionId: "pc_abc123"
    toExternalId: "+14155551234"
    message: "Here's the file"
    fileIds: ["file_xyz789"]
  ) {
    id
  }
}

What’s the 24-hour messaging window?#

WhatsApp, Instagram, and Facebook require users to message you first. After their last message, you have 24 hours to respond freely. Outside this window, you must use pre-approved templates.

How do I send messages outside the 24-hour window?#

Use message templates:

mutation {
  sendTemplateMessage(
    platformConnectionId: "pc_abc123"
    toExternalId: "+14155551234"
    templateName: "order_update"
    parameters: [...]
  ) {
    id
  }
}

Templates must be pre-approved in Meta Business Manager.

Users & Identity#

What’s the difference between User and Platform User?#

  • User: Abstract identity (a person)
  • Platform User: Concrete identity on a specific platform (phone number, username)

One User can have multiple Platform Users (same person on WhatsApp and Slack).

Use link codes:

  1. User requests code on Platform A
  2. User enters code on Platform B
  3. Both platform users are linked to the same user

Can I merge duplicate users?#

Yes:

mutation {
  mergeUsers(
    sourceUserId: "user_duplicate"
    targetUserId: "user_keep"
  ) {
    id
    platformUsers { id }
  }
}

Webhooks#

How do I receive incoming messages?#

  1. Create a webhook subscription:
mutation {
  createWebhookSubscription(
    name: "Messages"
    targetUrl: "https://myapp.com/webhooks"
    eventPatterns: ["message.inbound"]
    secret: "your-secret"
  ) {
    id
  }
}
  1. Handle webhooks at your endpoint
  2. Verify signatures for security

Why aren’t my webhooks being delivered?#

Common issues:

  • Endpoint not returning 200 within 30 seconds
  • SSL certificate issues
  • Firewall blocking requests
  • Signature verification failing

Check webhook delivery logs:

query {
  webhookDeliveryLogs(webhookSubscriptionId: "ws_abc123") {
    edges {
      node {
        status
        statusCode
        errorMessage
      }
    }
  }
}

How do I test webhooks locally?#

Use ngrok:

ngrok http 3000
# Use the HTTPS URL as your webhook endpoint

Data & Privacy#

Where is data stored?#

Data is stored in secure cloud infrastructure with encryption at rest.

How long is data retained?#

  • Messages: 90 days by default (configurable)
  • Events: 90 days
  • Files: 30 days after last access

Is data encrypted?#

Yes:

  • TLS 1.3 for all connections
  • Encryption at rest for stored data
  • Secrets stored encrypted

Can I export my data?#

Yes, contact support for data export requests.

Rate Limits#

What are the API rate limits?#

Depends on your plan:

  • Free: 60 requests/minute
  • Pro: 600 requests/minute
  • Enterprise: Custom

What if I hit rate limits?#

Implement exponential backoff:

time.sleep(2 ** attempt)  # 2, 4, 8, 16... seconds

Are platform rate limits separate?#

Yes, each platform has its own limits in addition to API limits.

Billing#

How are messages counted?#

Each message sent or received counts as one message. Status updates don’t count.

What happens if I exceed my plan?#

You’ll receive a warning at 80% usage. At 100%, additional messages are queued until the next billing cycle or you upgrade.

Can I upgrade mid-cycle?#

Yes, upgrades are prorated.

Technical#

Is there a GraphQL playground?#

Yes: api.outeract.com

Are there SDKs?#

Official SDKs coming soon:

  • Python
  • Node.js
  • Go

Can I self-host?#

Enterprise plans include self-hosting options. Contact sales.

What’s the uptime SLA?#

  • Free/Pro: 99.9%
  • Enterprise: 99.99%

Getting Help#

How do I contact support?#

Where can I report bugs?#

GitHub Issues: github.com/outeract/outeract

Is there a community?#