Running cold email campaigns at scale requires more than just a dashboard and a few mailboxes. When you're managing hundreds of domains, thousands of mailboxes, and integrating with multiple outreach platforms, manual operations become the bottleneck that limits your growth. This is where API integrations transform your cold email infrastructure from a manual process into an automated, scalable system.
Modern sales and marketing teams need their cold email infrastructure to seamlessly connect with CRMs, sales engagement platforms, analytics tools, and custom internal systems. Without robust API access, you're stuck copying data between platforms, manually provisioning resources, and reacting to issues instead of preventing them.
InboxOne was built API-first from day one. Every action you can take in our dashboard is available through our REST API and MCP (Model Context Protocol) interface. This guide covers everything you need to know about integrating InboxOne into your technical stack, from basic authentication to advanced webhook configurations and AI-powered automation through MCP.
Understanding the most valuable API use cases helps you prioritize your integration efforts. Here are the scenarios where InboxOne's API delivers the most impact:
The most common use case is programmatic provisioning of domains and mailboxes. Instead of manually purchasing domains and setting up mailboxes through a dashboard, you can automate the entire process. When a new client signs up for your agency, your onboarding system can automatically provision their cold email infrastructure within minutes.
The provisioning API handles domain registration, Google Workspace mailbox creation, DNS record configuration (SPF, DKIM, DMARC, MX), and initial warmup scheduling. A single API call can kick off this entire workflow, with webhooks notifying your system when each step completes.
Sales teams need their cold email infrastructure data flowing into their CRM and sales engagement platforms. The InboxOne API enables real-time synchronization of mailbox health scores, deliverability metrics, and sending limits. When a mailbox hits a threshold that requires attention, your CRM can automatically flag the associated contacts or pause sequences.
Integration with platforms like Salesforce, HubSpot, and Pipedrive allows you to correlate cold email performance with pipeline data. You can answer questions like "Which domains are generating the most qualified leads?" and optimize your infrastructure allocation accordingly.
InboxOne supports export to 14+ outreach platforms including Instantly, Smartlead, Apollo, Lemlist, and more. The API allows you to automate these exports based on your workflows. When a mailbox completes warmup and reaches production-ready status, your integration can automatically export it to the appropriate outreach platform without manual intervention.
You can also build sophisticated rotation logic, automatically distributing mailboxes across platforms based on current utilization, deliverability scores, and campaign requirements.
Proactive deliverability monitoring is critical for maintaining inbox placement rates. The InboxOne API provides access to real-time deliverability metrics including inbox placement rates, spam folder rates, bounce rates, and blacklist status. You can build custom alerting systems that integrate with Slack, PagerDuty, or your internal monitoring tools.
Webhooks make this even more powerful. Instead of polling for status changes, you can receive instant notifications when any metric crosses a threshold, when a domain gets blacklisted, or when DNS records drift from their optimal configuration.
For agencies managing infrastructure for multiple clients, accurate usage tracking is essential for billing. The API provides granular usage data including domain counts, mailbox counts, email volumes, and feature utilization. You can build automated billing systems that accurately charge clients based on their actual resource consumption.
Choosing the right integration pattern depends on your use case, technical requirements, and team capabilities. Here are the primary patterns we see InboxOne customers implement successfully:
The simplest pattern is direct integration where your application makes synchronous API calls to InboxOne. This works well for operations that need immediate responses, like checking mailbox status before sending a campaign or validating domain configuration.
Direct integration is best for: real-time status checks, single resource operations, and synchronous workflows where you need immediate confirmation.
For asynchronous operations and real-time monitoring, webhook-based integration is the preferred pattern. Instead of continuously polling for status changes, your system receives HTTP POST requests when events occur. This reduces API calls, minimizes latency, and enables reactive workflows.
InboxOne webhooks support event filtering, retry with exponential backoff, signature verification for security, and custom headers for authentication. You can subscribe to specific events like "domain.verified", "mailbox.warmup_complete", or "deliverability.alert" rather than receiving all events.
For high-volume operations or batch processing, a queue-based pattern provides better reliability and scalability. Your application pushes operations to a queue (like AWS SQS, Redis, or RabbitMQ), and worker processes consume from the queue to make API calls. This pattern handles rate limiting gracefully and provides automatic retry capabilities.
This pattern is ideal for: bulk provisioning, large-scale migrations, and operations that can tolerate eventual consistency.
The Model Context Protocol (MCP) pattern enables AI agents and large language models to interact with InboxOne programmatically. This is ideal for building conversational interfaces, AI-powered operations assistants, and automated decision-making systems that can manage your cold email infrastructure.
With MCP, you can build systems where an AI agent monitors your deliverability, makes recommendations, and takes corrective actions automatically. For example, an AI assistant could detect a declining inbox placement rate, analyze the potential causes, and automatically adjust sending volumes or rotate underperforming domains out of active use.

Security should be a primary concern when integrating with any API that manages critical infrastructure. Here's how to ensure your InboxOne integration follows security best practices:
Never hardcode API keys in your source code or commit them to version control. Use environment variables or a secrets management service like AWS Secrets Manager, HashiCorp Vault, or Azure Key Vault. Rotate API keys periodically and immediately if you suspect a compromise.
InboxOne allows you to create multiple API keys with different permission scopes. Use the principle of least privilege, creating keys that only have access to the specific resources and operations they need. A key used for read-only monitoring shouldn't have permission to delete domains.
Always verify webhook signatures before processing events. InboxOne signs all webhook payloads using HMAC-SHA256 with your webhook secret. Your endpoint should compute the signature of the received payload and compare it with the signature in the X-InboxOne-Signature header. Reject any requests that fail signature verification.
Additionally, use HTTPS for all webhook endpoints, implement IP allowlisting if your infrastructure supports it, and set reasonable timeouts to prevent slow-loris attacks.
All InboxOne API communications occur over TLS 1.2 or higher. We enforce HTTPS for all endpoints and reject plaintext HTTP requests. Sensitive data like mailbox passwords are never returned in API responses and are encrypted at rest using AES-256.
When storing InboxOne data in your own systems, apply appropriate encryption and access controls. Treat mailbox credentials and API keys as highly sensitive data with restricted access.
Implement circuit breakers in your integration to prevent cascading failures when the API is experiencing issues. If you receive multiple 5xx errors in succession, your system should back off rather than continuing to hammer the API. This protects both your application and the shared infrastructure.
Let's walk through practical code examples for common integration scenarios. These examples use our official JavaScript/TypeScript SDK, but the patterns apply to all supported languages.
import { InboxOne } from '@inboxone/sdk';
// Initialize the client with your API key
const inboxone = new InboxOne({
apiKey: process.env.INBOXONE_API_KEY,
environment: 'production' // or 'sandbox' for testing
});
// Provision a new domain with automatic DNS setup
async function provisionDomain(domainName) {
try {
const domain = await inboxone.domains.create({
name: domainName,
autoConfigureDns: true,
dnsProvider: 'cloudflare',
registrar: 'inboxone' // or 'external' for BYOD
});
console.log(`Domain provisioned: ${domain.id}`);
console.log(`DNS Status: ${domain.dnsStatus}`);
return domain;
} catch (error) {
if (error.code === 'DOMAIN_UNAVAILABLE') {
console.error('Domain is not available for registration');
}
throw error;
}
}// Create mailboxes with automatic warmup scheduling
async function provisionMailboxes(domainId, count) {
const mailboxes = [];
for (let i = 1; i <= count; i++) {
const mailbox = await inboxone.mailboxes.create({
domainId: domainId,
email: `outreach${i}@${domainId}`,
firstName: 'Sales',
lastName: `Rep ${i}`,
provider: 'google_workspace',
warmup: {
enabled: true,
dailyLimit: 5, // Start slow
rampUpDays: 21,
targetDailyLimit: 50
}
});
mailboxes.push(mailbox);
}
return mailboxes;
}
// Export mailboxes to outreach platforms
async function exportToInstantly(mailboxIds) {
const export = await inboxone.exports.create({
platform: 'instantly',
mailboxIds: mailboxIds,
includeCredentials: true,
autoSync: true // Keep synced with InboxOne
});
return export;
}import crypto from 'crypto';
import express from 'express';
const app = express();
app.use(express.raw({ type: 'application/json' }));
// Webhook secret from InboxOne dashboard
const WEBHOOK_SECRET = process.env.INBOXONE_WEBHOOK_SECRET;
function verifySignature(payload, signature) {
const expected = crypto
.createHmac('sha256', WEBHOOK_SECRET)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(`sha256=${expected}`)
);
}
app.post('/webhooks/inboxone', (req, res) => {
const signature = req.headers['x-inboxone-signature'];
if (!verifySignature(req.body, signature)) {
return res.status(401).send('Invalid signature');
}
const event = JSON.parse(req.body);
switch (event.type) {
case 'mailbox.warmup_complete':
handleWarmupComplete(event.data);
break;
case 'deliverability.alert':
handleDeliverabilityAlert(event.data);
break;
case 'domain.dns_drift':
handleDnsDrift(event.data);
break;
}
res.status(200).send('OK');
});from inboxone import InboxOneMCP
from anthropic import Anthropic
# Initialize MCP client for AI agent integration
mcp_client = InboxOneMCP(
api_key=os.environ['INBOXONE_API_KEY'],
capabilities=['domains', 'mailboxes', 'deliverability']
)
# Connect to Claude for AI-powered operations
anthropic = Anthropic()
async def ai_operations_assistant(user_query):
"""
AI assistant that can manage cold email infrastructure
through natural language commands.
"""
# Get current infrastructure context
context = await mcp_client.get_context()
response = anthropic.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=4096,
tools=mcp_client.get_tools(),
messages=[
{
"role": "system",
"content": f"""You are an AI operations assistant
for cold email infrastructure. Current context:
{context}"""
},
{"role": "user", "content": user_query}
]
)
# Execute any tool calls from the AI
if response.stop_reason == "tool_use":
for tool_call in response.content:
if tool_call.type == "tool_use":
result = await mcp_client.execute(
tool_call.name,
tool_call.input
)
# Continue conversation with result
return response
# Example: "Check all domains with inbox placement below 90%
# and pause their mailboxes"
result = await ai_operations_assistant(
"Identify underperforming domains and take corrective action"
)After working with hundreds of customers building InboxOne integrations, we've identified patterns that separate robust production systems from fragile prototypes:
Implement comprehensive error handling. Don't just catch errors, categorize them. Transient errors (rate limits, network timeouts) should trigger retries with exponential backoff. Permanent errors (invalid parameters, resource not found) should be logged and surfaced to operators immediately.
Use idempotency keys for mutations. When creating or updating resources, include an idempotency key to ensure operations can be safely retried. If a request times out, you can retry with the same idempotency key knowing that duplicate operations won't create duplicate resources.
Cache appropriately. Domain and mailbox configurations don't change frequently. Cache GET responses for a few minutes to reduce API calls. Use webhook events to invalidate caches when data changes rather than polling.
Monitor your integration health. Track metrics like API response times, error rates, and webhook processing latency. Set up alerts for anomalies. An integration that silently fails is worse than no integration at all.
Test in sandbox first. Our sandbox environment mirrors production exactly. Use it to test new integration code, simulate failure scenarios, and validate error handling before deploying to production.
"The best API integrations are invisible to end users. When your cold email infrastructure scales automatically, alerts proactively, and recovers gracefully, your team can focus on what matters: building relationships and closing deals."
API integration transforms InboxOne from a tool into a platform that adapts to your workflows. Start with the use cases that deliver immediate value, whether that's automated provisioning, deliverability monitoring, or CRM synchronization. Then expand your integration as you identify new automation opportunities.
The MCP interface opens particularly exciting possibilities for AI-powered operations. As AI assistants become more capable, the ability to manage infrastructure through natural language commands will become essential. InboxOne's MCP support ensures you're ready for this future today.
Our developer documentation at docs.inboxone.io includes comprehensive API references, SDK guides, and runnable examples for all supported languages. Our support team includes engineers who have built production integrations and can help you architect solutions for your specific requirements.
Whether you're building a simple monitoring dashboard or a fully automated multi-tenant infrastructure management system, InboxOne's API gives you the building blocks to make it happen.
InboxOne API supports multiple authentication methods including API keys for server-to-server communication, OAuth 2.0 for user-authorized applications, and JWT tokens for stateless authentication. We recommend using API keys for backend integrations and OAuth 2.0 when building user-facing applications that need to access InboxOne on behalf of users.
InboxOne implements tiered rate limiting based on your plan: Basic (100 requests/minute), Pro (500 requests/minute), and Max (2000 requests/minute). Always check the X-RateLimit-Remaining header in API responses and implement exponential backoff when you receive 429 status codes. Our SDKs handle this automatically.
Yes, InboxOne provides comprehensive webhook support for events like domain verification complete, mailbox provisioned, DNS records updated, deliverability alerts, and bounce notifications. You can configure multiple webhook endpoints with different event subscriptions and include custom headers for authentication.
MCP (Model Context Protocol) is our AI-native interface that allows large language models and AI agents to interact with InboxOne programmatically. While the REST API is designed for traditional application integration, MCP enables conversational AI workflows where an AI assistant can manage your cold email infrastructure through natural language commands.
InboxOne provides dedicated migration endpoints that accept bulk imports of domains, mailboxes, and configurations. You can export data from your current platform and use our /v1/migrations/import endpoint to transfer everything. Our API also supports incremental syncing for gradual migrations.
Yes, InboxOne offers official SDKs for JavaScript/TypeScript (Node.js and browser), Python, Ruby, PHP, Go, and Java. All SDKs include TypeScript definitions, automatic retry logic, rate limit handling, and comprehensive documentation with examples. Community SDKs are also available for Rust, C#, and Elixir.
InboxOne provides a complete sandbox environment at api.sandbox.inboxone.io with test API keys. The sandbox includes simulated domains, mailboxes, and realistic response data. You can trigger specific scenarios like DNS failures or deliverability issues to test your error handling. Sandbox usage is unlimited and doesn't count against your plan limits.