Report delivered messages as spam
const url = 'https://mail.work.optidata.cloud/api/mail/mailboxes/78/messages/spam';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"message_ids":["4186"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://mail.work.optidata.cloud/api/mail/mailboxes/78/messages/spam \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "message_ids": [ "4186" ] }'Move messages that reached the inbox into Junk and, when spam training is enabled for the tenant, report them to the filtering service so future messages like them are caught earlier.
The response separates what was asked from what actually happened:
junk_moved counts the messages moved, trained the ones the filter
accepted as training samples, and train_attempted says whether training
was tried at all. Training is best-effort — the move succeeds even when it
does not.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”Id of the mailbox. Every mailbox the caller may use is listed in their account.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Ids of the messages to act on.
Examples
{ "message_ids": [ "4186" ]}Responses
Section titled “ Responses ”The outcome of the report.
object
How many messages were submitted.
How many were moved to Junk.
How many were accepted as training samples.
Whether training was attempted.
Examples
{ "requested": 2, "junk_moved": 2, "trained": 2, "train_attempted": true}Missing, malformed or expired authentication key.
Authentication failures use an error key rather than message.
object
Examples
No bearer token sent
{ "error": "JWT passport exception: Missing bearer token in request"}The spam features are not enabled for this tenant.
Generic error envelope used by policy, binding and framework failures.
object
Human-readable description of the failure.
Examples
{ "message": "Not available"}The request body or query string failed validation.
object
The first validation message.
Validation messages keyed by field name.
object
Examples
{ "message": "The conversations field is required.", "errors": { "conversation_ids": [ "The conversations field is required." ] }}Rate limit exceeded. Retry after the window resets.
Generic error envelope used by policy, binding and framework failures.
object
Human-readable description of the failure.
Examples
{ "message": "Too Many Attempts."}The mail platform did not answer as expected — a folder or message that
does not exist, or a transient failure. reference is the code to quote to
support and fault_code names the underlying condition. A 503 with the
same envelope means the platform is in maintenance; retry shortly.
Failure raised by the mail platform behind the API rather than by the request itself.
object
What went wrong, phrased for the end user.
Repeats the HTTP status code.
Suggested next step.
Support reference, e.g. MZ-502.
Names the underlying condition, e.g. mail.NO_SUCH_FOLDER.
Examples
Unknown folder
{ "error": "The mail server did not answer as expected, so this action could not be completed.", "status": 502, "help": "If the problem persists, contact support and inform the error code above.", "reference": "MZ-502", "fault_code": "mail.NO_SUCH_FOLDER"}Unknown message
{ "error": "The mail server did not answer as expected, so this action could not be completed.", "status": 502, "help": "If the problem persists, contact support and inform the error code above.", "reference": "MZ-502", "fault_code": "mail.NO_SUCH_MSG"}