Connect several accounts at once
From the Accounts API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.
POST /accounts/bulkRequires X-Project-Id and a plan that includes the email channel (403 channel_not_included otherwise). Takes { "accounts": [...] }, where each item has email, provider (gmail | outlook | zoho | namecheap | custom), smtp and imap objects, and optional displayName and timezone (default UTC), the same fields as POST /accounts. SMTP or IMAP hosts that point at private or internal addresses refuse the whole batch with 400 bad_request.
Capacity is all-or-nothing: if the batch would breach the plan's mailbox limit the whole request is refused with 402 plan_capacity rather than importing the first few. A billing-locked workspace is refused with 402 billing_locked. Past that gate each account is inserted independently, so one bad row does not lose the others:
{
"results": [
{ "index": 0, "email": "a@yourdomain.com", "ok": true, "id": "3a6f9e2e-4b7a-4e9a-9b1d-6e3a2f8c1a10" },
{ "index": 1, "email": "b@yourdomain.com", "ok": false, "error": "duplicate key value violates unique constraint" }
]
}A failed row carries the database's error text in error, so treat it as debugging context, not something to parse. Each connected mailbox starts with status: "aging" and warmup enabled (warmupStartedAt is set). Unlike POST /accounts, the bulk route does not start the DNS pre-flight check itself.