Overview a email account
/api/v1/email-accounts/{account}/overviewParameters
| Name | In | Type | Description |
|---|---|---|---|
accountrequired | path | string | The account identifier. |
Request
/api/v1/email-accounts/{account}/overviewcurl -X GET 'https://app.mailyte.com/api/v1/email-accounts/01JBT8XQ2M9WYC3K4F6R7S8T9V/overview' \
-H 'Authorization: Bearer mk_live_YOUR_API_KEY'const response = await fetch('https://app.mailyte.com/api/v1/email-accounts/01JBT8XQ2M9WYC3K4F6R7S8T9V/overview', {
method: 'GET',
headers: {
Authorization: 'Bearer mk_live_YOUR_API_KEY',
},
});
const { data } = await response.json();import requests
response = requests.get(
"https://app.mailyte.com/api/v1/email-accounts/01JBT8XQ2M9WYC3K4F6R7S8T9V/overview",
headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
)
data = response.json()["data"]<?php
$response = Http::withToken('mk_live_YOUR_API_KEY')
->get('https://app.mailyte.com/api/v1/email-accounts/01JBT8XQ2M9WYC3K4F6R7S8T9V/overview');
$data = $response->json('data');require "net/http"
require "json"
uri = URI("https://app.mailyte.com/api/v1/email-accounts/01JBT8XQ2M9WYC3K4F6R7S8T9V/overview")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer mk_live_YOUR_API_KEY"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }Response
Success.
dataobjectobjectstringmailboxidstringUnique identifier for the mailbox.
addressstringThe full email address. This *is* the mailbox publicly: there is no separate `username`, because the local part is already in here.
namestringDisplay name, as it appears to a recipient. null when none was set.
domain_idstringThe domain this mailbox belongs to. Retrieve it with `GET /api/v1/domains/{domain}`.
typestringmail | smtp | bothWhat the mailbox was created as, and what you can filter the list by. Recorded rather than enforced: nothing in the product currently branches on it, so it does not by itself restrict what the mailbox can do.
statestringactive | provisioning | failed | suspended | deletingThe one lifecycle answer, ordered by what stops you first: `deleting` outranks everything, then `suspended` (a business decision, whatever the mail server thinks), then what provisioning says. Only an `active` mailbox sends and receives.
provisioningobjectWhat the mail server has done with this mailbox. Creation is asynchronous, so a mailbox exists here before it exists there.
statestringpending | provisioning | active | failed | suspended | deleting | deletedThe mail server's own lifecycle value, as stored. **Never null**, and not nullable: `email_accounts.provisioning_state` is NOT NULL, defaults to `pending`, and creation writes `pending` explicitly before the row is inserted — so a mailbox always carries one. It is read from OUR database, not fetched from the mail server, so unlike `storage.used_bytes` it never goes unknown when that host is unreachable; a mail server we cannot reach leaves this value STALE, not absent. Every value the product writes today is in the set above, but rows that predate the column can still hold a spelling that is not — `provisioned` survives in real data — so branch on the top-level `state`, which normalises whatever is stored into a set that really is closed.
errorstringWhy provisioning failed, in the mail server's words. null unless `state` is `failed`.
retryablebooleanTrue only while `state` is `failed`, which is the only state `POST /retry-provisioning` accepts.
storageobjectBytes, both of them. Never a pre-formatted "3 GB", which cannot be computed with.
quota_bytesintegerBytes. The ceiling set for this mailbox. **Never null**, and not nullable — read the contrast with `used_bytes` below, because the two figures in this object have very different reliability. The quota is OUR number, held in MySQL in a NOT NULL column, and a mailbox created without an explicit quota is given one (1 GB), so there is always an answer and it never depends on the mail server being reachable. `used_bytes` is the mail server's number and can be unknown. A null here would mean the mailbox has no ceiling, which is not a state this product can be in.
used_bytesintegerBytes. **null means we could not read the figure, not that the mailbox is empty** — usage is measured on the mail server and is null whenever the mailbox does not exist there yet, so there has been nothing to measure. Treat null as "unknown" and show it as such: a customer told they have used nothing, when in truth we could not ask, will discover the difference the day they hit the quota. A mailbox that IS provisioned but whose storage has never been synced currently reads 0 rather than null; the column cannot yet express the difference.
send_limitsobjectPer-mailbox sending overrides.
dailyintegerMessages per day. **null means no override, not unlimited** — the organization's plan limit applies instead. A 0 would mean "may not send".
hourlyintegerMessages per hour. null means no override, exactly as `daily`.
created_atstringupdated_atstring
Returned inside the standard envelope.
Errors
| Status | When |
|---|---|
401 | The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist. |
403 | The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys. |
404 | No such resource in this organization. |
422 | The request was understood but the values were not acceptable. |
429 | Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait. |
Every status, with what causes it and what to do, is on the error reference.