---
title: "Test a mailbox sign-in"
method: POST
path: "/api/v1/inboxes/smtp/test"
tags: ["Mailboxes"]
---

# Test a mailbox sign-in

`POST /api/v1/inboxes/smtp/test`

## Request

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

Signs in to a mailbox from any email provider twice, once to send (SMTP) and once to read replies (IMAP), and says for each whether it works or what is wrong. Nothing is saved and no email is sent. Google and Microsoft mailboxes connect with their own sign-in instead. Up to 30 tests an hour.

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

## Headers

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

## Request body

- object
  - `email` string, email, required: The mailbox address that sends.
  - `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.

## Response `200`

Works or Does not work or Works on 587

- MailboxSignInTest: Whether Argorant can sign in to a mailbox to send and to read replies.
  - `works` boolean: true when both sending and reading replies work.
  - `message` string: A one-sentence summary.
  - `smtp` MailboxSignInCheck: One half of a sign-in test: sending (smtp) or reading replies (imap).
    - `works` boolean: true when the server accepted the sign-in.
    - `result` 'signed_in' | 'wrong_password' | 'not_reachable' | 'security_mismatch' | 'not_allowed' | 'failed': signed_in, wrong_password, not_reachable, security_mismatch, not_allowed or failed.
    - `message` string: What happened, in plain words.
    - `port` integer: Sending only, and only when Argorant signed in on another port than the one you sent (587 instead of 465). Connecting saves this port.
    - `security` 'ssl' | 'starttls' | 'none': Sending only, together with port. The security that worked, starttls.
  - `imap` MailboxSignInCheck: One half of a sign-in test: sending (smtp) or reading replies (imap).
    - `works` boolean: true when the server accepted the sign-in.
    - `result` 'signed_in' | 'wrong_password' | 'not_reachable' | 'security_mismatch' | 'not_allowed' | 'failed': signed_in, wrong_password, not_reachable, security_mismatch, not_allowed or failed.
    - `message` string: What happened, in plain words.
    - `port` integer: Sending only, and only when Argorant signed in on another port than the one you sent (587 instead of 465). Connecting saves this port.
    - `security` 'ssl' | 'starttls' | 'none': Sending only, together with port. The security that worked, starttls.

## 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.
- `409`: 409 Conflict. `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.
- `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)
