Summary
Create an inbox at cooperemail.com. username is optional; omit it and Cooper picks box plus 8 hex characters, the same generator as a batch with no prefix. Optional metadata is caller data (at most 256 keys, keys at most 256 characters, values string number or boolean, serialized at most 16 KB; otherwise 400 invalid_metadata). Optional client_id (at most 128 characters) makes a retry return the original inbox with HTTP 200 and idempotent true. Optional ttl_hours or expires_at makes that one inbox temporary. Optional status is active (default) or paused. It still counts toward the plan inbox limit until it expires. Optional domain is ignored while custom-domain mail is off. When that flag is on, domain must be verified on this account with mail.receiving true or the call returns 404 domain_not_found, 409 domain_not_verified, or 409 domain_receiving_not_ready. Optional notify_url registers a message.received webhook for the new inbox. The response includes next_steps. next_steps.recommended suggests adding a human owner email. That line is a recommendation. When usage is at 80 percent of a plan limit, the response includes notices.
Request
{
"display_name": "Support",
"metadata": {
"team": "ops"
},
"client_id": "inbox-1",
"notify_url": "https://example.com/hooks/cooper"
}Response
The OpenAPI document does not declare a JSON response schema for this call. The summary is the contract.Errors
- HTTP 400 invalid_metadata
- HTTP 404 domain_not_found
- HTTP 409 domain_not_verified
- HTTP 409 domain_receiving_not_ready
Idempotency
client_id makes this write idempotent. Sending the same client_id again returns the original object instead of creating a duplicate.