# AgentMail Core Common CLI path: create inboxes, send mail, read incoming mail, reply in threads, label work, and fetch attachments. Need a key first? Use [signup.md](signup.md). Need realtime delivery? Use [webhooks.md](webhooks.md) or [websockets.md](websockets.md). ## Setup ```bash npm install -g agentmail-cli@latest export AGENTMAIL_API_KEY="am_..." agentmail inboxes list --format json ``` ## Inboxes ```bash agentmail inboxes create \ --username support \ --display-name "Support Agent" \ --client-id support-agent-primary \ --format json agentmail inboxes get --inbox-id support@agentmail.to --format json ``` Omit `domain` to use `@agentmail.to`. Use stable `client_id` values for retried create commands. ## Send ```bash agentmail inboxes:messages send \ --inbox-id support@agentmail.to \ --to customer@example.com \ --subject "Hello" \ --text "Plain-text body." \ --html "

Plain-text body.

" \ --label outreach \ --format json ``` Send both `text` and `html` when possible. Recipient limit is 50 total across `to`, `cc`, and `bcc`. ## Read and Reply ```bash agentmail inboxes:messages list --inbox-id support@agentmail.to --label unread --format json agentmail inboxes:messages get --inbox-id support@agentmail.to --message-id --format json agentmail inboxes:threads get --inbox-id support@agentmail.to --thread-id --format json ``` For LLM input, prefer `extracted_text` or `extracted_html`. Some email has `html` but no `text`. ```bash agentmail inboxes:messages reply \ --inbox-id support@agentmail.to \ --message-id \ --text "Thanks, I will take a look." \ --format json agentmail inboxes:messages reply-all \ --inbox-id support@agentmail.to \ --message-id \ --text "Thanks, everyone." \ --format json agentmail inboxes:messages forward \ --inbox-id support@agentmail.to \ --message-id \ --to teammate@example.com \ --format json ``` ## Labels Use labels as lightweight state: `unread`, `handled`, `needs-review`. ```bash agentmail inboxes:messages update \ --inbox-id support@agentmail.to \ --message-id \ --add-labels handled \ --remove-labels unread \ --format json ``` ## Attachments ```bash agentmail inboxes:messages get-attachment \ --inbox-id support@agentmail.to \ --message-id \ --attachment-id \ --format json ``` Fetch the returned download URL before it expires. Check `agentmail inboxes:messages send --help` for attachment-send flags. ## REST Notes Use REST only when the CLI is unavailable or missing a required operation. ```bash curl https://api.agentmail.to/v0/inboxes \ -H "Authorization: Bearer $AGENTMAIL_API_KEY" ``` Base URLs: `https://api.agentmail.to/v0`, `https://api.agentmail.eu/v0`. Error bodies include `name` and `message`; validation errors include `errors`. For `429`, honor `Retry-After` and back off.