Mailbox API
Get a message
const url = 'https://api.customers.ac/api/mailbox/v1alpha1/azure/v1.0/users/sender%40yourdomain.com/messages/example?%24select=id%2Csubject%2Cbody%2Cfrom%2CtoRecipients%2CreceivedDateTime';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.customers.ac/api/mailbox/v1alpha1/azure/v1.0/users/sender%40yourdomain.com/messages/example?%24select=id%2Csubject%2Cbody%2Cfrom%2CtoRecipients%2CreceivedDateTime' \ --header 'Authorization: Bearer <token>'Fetches a single message by id. Mirrors Graph’s GET /users/{id}/messages/{message-id}.
Use the id returned by List messages.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The mailbox address, which must belong to the account owning the API key. A mailbox that exists but is not yours returns 404 rather than 403, so this endpoint cannot be used to discover which addresses are sending.ac mailboxes.
Example
sender@yourdomain.comGraph message id. Opaque and forwarded byte-for-byte — do not decode or re-encode it, as ids routinely contain =, + and /.
Query Parameters
Section titled “Query Parameters”Example
id,subject,body,from,toRecipients,receivedDateTimeResponses
Section titled “Responses”The message.
A Graph message. Only commonly used properties are listed; the full Graph resource is returned and accepted.
object
Opaque message id. Forward it byte-for-byte — ids contain =, + and /.
object
object
object
object
object
object
object
Example
{ "body": { "contentType": "text" }, "from": { "emailAddress": { "name": "Jane Doe", "address": "jane@example.com" } }, "toRecipients": [ { "emailAddress": { "name": "Jane Doe", "address": "jane@example.com" } } ], "ccRecipients": [ { "emailAddress": { "name": "Jane Doe", "address": "jane@example.com" } } ]}Headers
Section titled “Headers”Microsoft’s own request id for the upstream call. Quote this when raising an issue with Microsoft support. (Graph returns it as request-id; it is re-emitted under this name because Request-ID is already used for our own request identifier.)
Missing or invalid API key. Also returned when the key has been revoked.
Microsoft’s error shape, used on the /azure and /google surfaces so Graph SDKs deserialise failures as ordinary errors.
object
object
Microsoft’s error code for the status.
object
Correlation id for this request. Quote it in support requests.
Example
{ "error": { "code": "InvalidAuthenticationToken", "message": "The API key is invalid or has been revoked.", "innerError": { "request-id": "a26397a7-04e1-4c8f", "date": "2026-07-31T08:24:57+00:00" } }}The key is valid but not usable here: it is a Provisioning key rather than a Mailbox key, it is a sandbox key, or it is not linked to a sending.ac account.
Microsoft’s error shape, used on the /azure and /google surfaces so Graph SDKs deserialise failures as ordinary errors.
object
object
Microsoft’s error code for the status.
object
Correlation id for this request. Quote it in support requests.
Example
{ "error": { "code": "ErrorAccessDenied", "message": "The Mailbox API requires a live API key; sandbox keys are not accepted because these calls send and read real mail.", "innerError": { "request-id": "a26397a7-04e1-4c8f", "date": "2026-07-31T08:24:57+00:00" } }}Either the mailbox is not yours (or does not exist), or the Graph path is outside the allow-list. Both answer 404 so the API does not disclose which.
Microsoft’s error shape, used on the /azure and /google surfaces so Graph SDKs deserialise failures as ordinary errors.
object
object
Microsoft’s error code for the status.
object
Correlation id for this request. Quote it in support requests.
Example
{ "error": { "code": "ResourceNotFound", "message": "No such mailbox.", "innerError": { "request-id": "a26397a7-04e1-4c8f", "date": "2026-07-31T08:24:57+00:00" } }}Rate limit exceeded — 60 requests per minute per API key.
Microsoft’s error shape, used on the /azure and /google surfaces so Graph SDKs deserialise failures as ordinary errors.
object
object
Microsoft’s error code for the status.
object
Correlation id for this request. Quote it in support requests.
Example
{ "error": { "code": "TooManyRequests", "message": "Too many requests. Retry after the number of seconds in Retry-After.", "innerError": { "request-id": "a26397a7-04e1-4c8f", "date": "2026-07-31T08:24:57+00:00" } }}Headers
Section titled “Headers”Seconds to wait before retrying.
Unix timestamp at which the window resets.
Microsoft Graph could not be reached, or its response was too large to relay.
For sendMail this is ambiguous: the message may already have been accepted and sent. Do not retry automatically.
Microsoft’s error shape, used on the /azure and /google surfaces so Graph SDKs deserialise failures as ordinary errors.
object
object
Microsoft’s error code for the status.
object
Correlation id for this request. Quote it in support requests.
Example
{ "error": { "code": "UnknownError", "message": "Could not reach Microsoft Graph. The request may not have been processed; retry only if it is safe to repeat.", "innerError": { "request-id": "a26397a7-04e1-4c8f", "date": "2026-07-31T08:24:57+00:00" } }}The Mailbox API is temporarily unavailable, or credentials could not be verified. Safe to retry with backoff.
Microsoft’s error shape, used on the /azure and /google surfaces so Graph SDKs deserialise failures as ordinary errors.
object
object
Microsoft’s error code for the status.
object
Correlation id for this request. Quote it in support requests.
Example
{ "error": { "code": "BadRequest" }}