---
title: "Connect a mailbox from any provider"
method: POST
path: "/api/v1/inboxes/smtp"
tags: ["Mailboxes"]
---

# Connect a mailbox from any provider

`POST /api/v1/inboxes/smtp`

## Request

- Base URL: `https://app.argorant.com`
- URL: `https://app.argorant.com/api/v1/inboxes/smtp`
- Auth: HTTP bearer

Connects one mailbox from any email provider with its server settings. Argorant first signs in to send and to read replies and connects the mailbox only when both work; otherwise the answer is `sign_in_failed` with the test result. The password is stored encrypted and never returned. Connecting the same address again replaces its settings, which is how a mailbox is reconnected after a password change. A free trial connects up to 2 mailboxes. Up to 30 connects an hour; use the bulk route for more.

| Cost | What it does | Key scopes |
| --- | --- | --- |
| Free | Writes | `argorant:manage_lists` |

## Headers

- `Idempotency-Key` string
- `X-Request-Id` string

## Request body

- object
  - `email` string, email, required: The mailbox address that sends.
  - `display_name` string: The sender name people see.
  - `preset` 'zoho' | 'zoho_eu' | 'zoho_personal' | 'fastmail' | 'godaddy' | 'titan' | 'hostinger' | 'ionos' | 'ionos_de' | 'ionos_uk' | 'namecheap' | 'yahoo' | 'icloud' | 'outlook' | 'other': An email provider from the presets. Fills every empty server name, port and security setting.
  - `smtp_host` string: Server for sending. Needed without a preset.
  - `smtp_port` integer: Port for sending. Use 587. If you send 465, Argorant tries 587 with starttls and saves 587 when it works. Needed without a preset.
  - `smtp_secure` 'ssl' | 'starttls' | 'none': Security for sending, starttls on port 587. Leave out to pick it from the port.
  - `smtp_username` string: Sign-in name for sending. Leave out when it is the email address.
  - `smtp_password` string, password, required: The password, or an app password when the provider asks for one. Stored encrypted, never returned.
  - `imap_host` string: Server for reading replies. Needed without a preset.
  - `imap_port` integer: Port for reading replies.
  - `imap_secure` 'ssl' | 'starttls' | 'none': Security for reading replies. Leave out to use ssl on port 993 and starttls on port 143.
  - `imap_username` string: Sign-in name for reading replies. Leave out to use the one for sending.
  - `imap_password` string, password: Password for reading replies. Leave out to use the one for sending.
  - `daily_limit` integer: Cold emails a day from this mailbox.

## Response `200`

OK

- object
  - `inbox` object
    - `email` string
    - `name` string
    - `provider` string
    - `status` string
    - `health` string
    - `daily_limit` integer
    - `active` boolean
  - `test` object
    - `works` boolean
    - `message` string
    - `smtp` object
      - `works` boolean
      - `result` string
      - `message` string
    - `imap` object
      - `works` boolean
      - `result` string
      - `message` string

## Other responses

- `401`: 401 Unauthorized. `unauthorized` when the API key is missing, wrong or revoked.
- `403`: 403 Forbidden. `scope_missing` when the key lacks argorant:manage_lists; `forbidden` when a free trial already has its 2 mailboxes.
- `409`: 409 Conflict. `conflict` when the address is connected to another Argorant account; `idempotency_conflict` when the Idempotency-Key was used with another body.
- `422`: 422 Validation error. `validation_error` when a field has the wrong type or is missing; `sign_in_failed` when the server did not accept the sign-in for sending or for reading replies; details.test says which and why.
- `429`: 429 Too many requests. `rate_limited` when too many requests this minute.

---

[API](https://skmtc.dev/argorant/apis/argorant-api.md) · [All operations](https://skmtc.dev/argorant/apis/argorant-api/llms.txt) · [OpenAPI document](https://skmtc.dev/argorant/apis/argorant-api/revisions/4bc28c0085b6?raw)
