Skip to content

Self-signup for a free account + first inbox

POST
/v1/agent/sign-up

Check GET /v1/signup-status for current availability. When available, reserves a free account and first inbox on free.extrovertmail.com and returns a temporary signup:verify key. Follow the response’s activation method. For incoming_email, the human sends from the expected human_email to the returned inbox address, or approves using verified console sign-in. Observe activation until proven, then explicitly call POST /v1/agent/verify with an empty JSON object to exchange the bootstrap key for a scoped mailbox key. Legacy OTP responses instead require the code emailed to human_email; the code is never returned in the response. The temporary key can inspect, observe, correct and complete activation, but cannot read or send mail. Preserve the pending signup and its response fields when resuming; do not create another account because an observer or connection timed out.

object
gift_code

Optional gift. The verified human must claim the existing workspace and gift; email activation alone never activates Startup.

string
<= 64 characters
source
string
<= 128 characters
referrer
string
<= 512 characters
agent_client
object
name
string
<= 128 characters
version
string
<= 64 characters
human_email
required

The human email expected to activate this inbox.

string format: email
display_name

Friendly From name. Up to 60 Unicode characters after normalization; same validation and defaults as inbox creation.

string
<= 512 characters
username

Desired local part for the first free inbox. It is normalized to lowercase, must contain at least five characters, and cannot be postmaster, admin, webadmin, legal, fraudmark, fraudmarc, keith, melissa, richard, sydney, syd, john, or johnny. Omit it for a generated local part.

string

Account and inbox reserved; follow the returned activation method before completing verification.

The verification-only signup:verify bootstrap key (shown once) plus the pending inbox on free.extrovertmail.com. Incoming-email activation reserves it for 24 hours. The human sends from the expected address or approves through verified console sign-in. The key can check, correct, and complete activation; it cannot read or send mail. Legacy responses may instead describe an emailed OTP.

object
gift
object
gift_code
string
<= 64 characters
redeem_before
string format: date-time
status
required

Pending_human_claim is not Startup activation. No card is required to claim a gift.

string
campaign_id
string
claim_id
string
ends_at
string format: date-time
customer_id
string
agent_id
string
agent_key

Limited-scope bootstrap key

string
key_prefix
string
scopes
Array<string>
address

The pending inbox on free.extrovertmail.com.

string format: email
verified
boolean
activation_method
string
Allowed values: incoming_email
human_email
string format: email
activation_expires_at
string format: date-time
otp_sent_to

Legacy OTP delivery only.

string
otp_expires_at

Legacy OTP expiry only.

string format: date-time
message
string

Invalid request.

The canonical error envelope. error is a stable machine code.

object
error
required

Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).

string
Example
forbidden
message

Human-readable detail (never leaks internals).

string
Example
missing required scope
reason

Machine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.

string
used

Consumed plus reserved units.

integer format: int64
delta

Requested additional units.

integer format: int64
limit
integer format: int64
remaining
integer format: int64
consumed
integer format: int64
reserved
integer format: int64
next_reset_at

Next UTC usage-period boundary; pending reservations survive this boundary.

string format: date-time
upgrade_required
boolean

Free signup is temporarily paused (signup_disabled).

The canonical error envelope. error is a stable machine code.

object
error
required

Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).

string
Example
forbidden
message

Human-readable detail (never leaks internals).

string
Example
missing required scope
reason

Machine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.

string
used

Consumed plus reserved units.

integer format: int64
delta

Requested additional units.

integer format: int64
limit
integer format: int64
remaining
integer format: int64
consumed
integer format: int64
reserved
integer format: int64
next_reset_at

Next UTC usage-period boundary; pending reservations survive this boundary.

string format: date-time
upgrade_required
boolean

Upstream delivery failed. The request can be retried.

The canonical error envelope. error is a stable machine code.

object
error
required

Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).

string
Example
forbidden
message

Human-readable detail (never leaks internals).

string
Example
missing required scope
reason

Machine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.

string
used

Consumed plus reserved units.

integer format: int64
delta

Requested additional units.

integer format: int64
limit
integer format: int64
remaining
integer format: int64
consumed
integer format: int64
reserved
integer format: int64
next_reset_at

Next UTC usage-period boundary; pending reservations survive this boundary.

string format: date-time
upgrade_required
boolean

Self-signup is not configured or the signup gate is unavailable.

The canonical error envelope. error is a stable machine code.

object
error
required

Stable error code (e.g. unauthorized, forbidden, not_found, invalid, quota_exceeded, rate_limited).

string
Example
forbidden
message

Human-readable detail (never leaks internals).

string
Example
missing required scope
reason

Machine-readable quota reason. inbox_limit_exceeded means billing account inbox capacity across all organizations and projects sharing that account; enrollment_token_mailbox_budget_exhausted means the enrollment key lifetime creation allowance. Read message for recovery; inbox counts are separate from sending quotas.

string
used

Consumed plus reserved units.

integer format: int64
delta

Requested additional units.

integer format: int64
limit
integer format: int64
remaining
integer format: int64
consumed
integer format: int64
reserved
integer format: int64
next_reset_at

Next UTC usage-period boundary; pending reservations survive this boundary.

string format: date-time
upgrade_required
boolean