Skip to content

Create Plan

POST
/mailboxes/schedule-buy/plans

Create and LOCK a buying plan. PLACES REAL CREDIT HOLDS IMMEDIATELY.

Locking reserves credits for the WHOLE plan up front - one hold per batch, up to two hundred of them - even though the domains are bought a batch a day afterwards. The credits are gone from your spendable balance the moment this returns. total_credits_held in the response is the figure.

Org admins and owners only, and only for an org on a paid or pre-funded plan. 402 if the balance cannot cover the plan, 429 if the org has locked more than five plans this hour, 400 for an unsupported extension or an empty plan. With reuse_domains, 409 when a domain’s mailbox count changed (or it filled up) while the plan was locking: nothing stays held, re-read the domains and lock again.

At least one persona_ids entry is required. Manual registrants / mailbox_aliases are not accepted for new plans. idle_mailboxes_snapshot is your own count, used to detect drift - the server recomputes it and returns its own as server_idle_mailboxes.

Send an Idempotency-Key header. A retried lock without one places a second full set of holds.

Authorizations

Parameters

Header Parameters

X-Target-Org-Id
Any of:
string

Request Body required

Create and LOCK a staggered buying plan. PLACES REAL CREDIT HOLDS.

Mirrors the app’s CreatePlanRequest field for field, including the rule that new plans require persona_ids. Manual registrants / mailbox_aliases are still parsed so a legacy payload 422s here rather than inside the proxy.

object
daily_send_cap

Sends per mailbox per day

integer
default: 15 >= 1 <= 100
domain_names
Any of:
Array<string>
>= 1 items <= 500 items
domain_tld

Extension to buy, e.g. ‘.com’

string
default: .com
domains_per_batch

Domains bought per daily batch

integer
default: 10 >= 1 <= 100
google_share_pct

Google Workspace share of the plan when platform=‘mixed’

integer
default: 100 <= 100
idle_mailboxes_snapshot
required

Idle mailboxes you already hold, from /suggest

integer
mailbox_aliases

Not accepted for new plans. Use persona_ids.

Array<object>
object
key
additional properties
any
mailboxes_per_domain

Mailboxes bought on each domain

integer
default: 3 >= 1 <= 5
persona_ids
Any of:
Array<integer>
<= 20 items
platform

Mailbox platform to buy on. ‘mixed’ spreads domain-units by google_share_pct

string
default: google
Allowed values: google microsoft mixed
registrants

Not accepted for new plans. Use persona_ids.

Array<object>
<= 20 items
object
key
additional properties
any
reuse_domains
Any of:
Array<string>
>= 1 items <= 500 items
sending_days_per_month

Sending days assumed per month

integer
default: 22 >= 1 <= 31
target_monthly_volume
required

Contacts you intend to reach per month

integer
<= 100000000
warmup_enabled

Hold and spend the premium-pool warmup credit (350/mailbox). False buys with no warmup

boolean
default: true
warmup_provider

Warmup engine the bought mailboxes are enrolled with

string
default: warmy
Allowed values: warmy instantly smartlead
workspace_uid
Any of:
string

Responses

200

Successful Response

object
data
required

An open envelope for one provider/deliverability result.

Open on purpose. These payloads are provider state and advisory reads whose contents grow with the product, and a dropped field reads as “nothing to report” rather than “we did not tell you”. Every value passes through scrub_vendor_names on the way in.

object
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
notes
Any of:
Array<string>
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer
total_available
Any of:
integer
total_is_lower_bound
Any of:
boolean

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string