Less boo. More booked. Halloween offer: 30 days free on any paid plan. Claim 30 days freeEvery new account gets one free mailbox for warmup and replies. No domain to buy. See how it works

Skip to content

Connect several accounts at once

API referenceAccounts

From the Accounts API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.

text
POST /accounts/bulk

Requires 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:

json
{
  "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.

Was this page helpful?