Initialize
- CDP Wallet (Recommended)
- Private Key
from_domain must be a domain provisioned through OneShot. from_mailbox
defaults to agent and from_domain to oneshotagent.com. from_name is the display name
recipients see; omit it to send from the bare address.Dedicated mailboxes: pass
mailbox_mode: "mailbox" when first
provisioning a new from_domain to give each address a dedicated mailbox
(better deliverability, per-address warmup) instead of the default relay
(send-only) mode. This adds a one-time mailbox_provisioning_fee to the
quote. It applies only at first setup: a provisioned domain keeps the mode it
was created with, and requesting mailbox on an existing relay domain
returns 400 mailbox_mode_conflict.Omitting mailbox_mode does not make your sends relay sends. On a domain set
up in mailbox mode, every address not already active bills the one-time fee
on its first send, including the default agent@. Call listDomains() and
read mailbox_mode per domain to see which charge. from_mailbox has no
effect on it.Bulk email
The SDK handles bulk quoting. Service fees scale with the number of
recipients.
Voice calls
SMS
Deep research
Poll inbox
People search and enrichment
seniority takes any of owner, founder, c_suite, partner, vp, head, director, manager, senior, entry, intern. Common variants ("Vice President", "C-Level", "executive") are accepted, and a value that matches no level fails the search with invalid_input. industry is free text.
An empty results array means the search ran and nobody matched. If the search could not be run, the call throws a JobError with a retryable code (service_unavailable, service_auth, rate_limited) instead of returning an empty result.
Find and verify email
Commerce: search and buy
Web search
Search the web and get structured results synchronously, without polling:Web read
Read a web page as markdown, with a screenshot:Browser automation
Person intelligence
Look up a person by name+company, email, phone or profile URL. Each method runs async and returns when the job finishes.Universal tool method
Get balance
Spend budgets
Cap the agent’s spend per day and per call. The API enforces the cap, so it survives restarts and applies across every process using this wallet:Error handling
Build production websites
Update existing website
Complete agent example
Next steps
API Reference
API reference
SDK Source
SDK source
Optional phone lookup
waitForPhones waits without purchasing phones. onStatusUpdate('completed', requestId)
fires after this wait, before resolution; phones_pending: true may remain on timeout.