Documentation
DocsGetting StartedIntroduction
Introduction
OutreachAgent is an API-first platform purpose-built for AI agent email infrastructure. It gives your autonomous agents the ability to send, receive, and reason about email — with deliverability, compliance, and observability handled out of the box.
Architecture Overview
OutreachAgent is composed of four core services that work together to provide a reliable, scalable email platform:
- Fastify API — The primary REST interface. All client SDKs and integrations communicate through this layer. Handles authentication, validation, rate limiting, and request routing.
- Next.js Console — A full-featured web dashboard for managing organizations, configuring inboxes, monitoring deliverability metrics, and debugging message flows.
- Temporal Workers — Durable workflow execution for long-running processes like domain verification, drip campaign enrollments, bounce processing, and webhook delivery with automatic retries.
- PostgreSQL — The persistent data layer. Stores organizations, inboxes, messages, threads, contacts, templates, and all audit logs. Row-level security isolates tenant data.
Key Concepts
Before diving in, familiarize yourself with the core abstractions that OutreachAgent uses to organize your account:
- Organizations — The top-level tenant boundary. Every resource belongs to exactly one organization. Billing and plan limits are scoped here.
- Pods — Regional isolation units within an organization. Pods let you separate sending reputations, comply with data residency requirements, or run staging vs. production environments side by side.
- Inboxes — Individual email identities assigned to a pod. Each inbox has its own address, display name, and sending configuration. An inbox is what your agent actually sends from and receives into.
- Domains — Custom sending domains verified with DKIM and SPF records. Associating a domain with your organization unlocks branded sending and improves deliverability.
- API Keys — Scoped credentials for programmatic access. Each key is prefixed with
rm_and tied to an organization. You can create multiple keys with different permissions.