Messages

Update message

Update an existing message. You can modify the message flags, labels, or move it to a different folder. If the target folder doesn't exist, it will be created automatically.

put/v1/messages/{id}

Request

  • Base URL: https://api.forwardemail.net
  • URL: https://api.forwardemail.net/v1/messages/{id}
  • Auth: HTTP basic

Path parameters

idstring required

Message ID

Query parameters

emlboolean

Return raw EML format instead of JSON

lightweight'true' | 'false'

When set to "true", returns metadata only, without nodemailer or raw fields. Skips rebuilding the full message, so flag and label changes respond quickly.

Request body

flagsstring[]

IMAP flags to set on the message

flags_addstring[]

IMAP flags to add to the message. Its other flags are kept, so changes another client made in the meantime are not undone. Takes precedence over flags.

flags_removestring[]

IMAP flags to remove from the message. A keyword removed here is removed from its labels as well. Its other flags are kept. Takes precedence over flags.

labels_addstring[]

Labels to add to the message. Its other labels are kept. Takes precedence over labels.

labels_removestring[]

Labels to remove from the message, for IMAP clients as well (they see labels as keywords). Its other labels are kept. Takes precedence over labels.

folderstring

Move message to this folder

Example request

{
  "flags_add": [
    "\\Seen"
  ],
  "flags_remove": [
    "\\Seen"
  ],
  "labels_add": [
    "work"
  ],
  "labels_remove": [
    "work"
  ]
}

Response

Message updated successfully

idstring required

Message ID

root_idstring required

Root message ID for threading

folder_idstring required

Folder ID containing the message

folder_pathstring required

Folder path containing the message

thread_idstring required

Thread ID for conversation grouping

header_message_idstring required

Message-ID header value

is_unreadboolean required

Whether message is unread

is_flaggedboolean required

Whether message is flagged

is_deletedboolean required

Whether message is deleted

is_draftboolean required

Whether message is a draft

is_junkboolean required

Whether message is junk/spam

is_copiedboolean required

Whether message is copied

is_encryptedboolean required

Whether message is encrypted (PGP/MIME or S/MIME)

is_searchableboolean required

Whether message is searchable

is_expiredboolean required

Whether message is expired

has_attachmentboolean required

Whether message has attachments

retention_datestring date-time nullable required

Message retention date

internal_datestring date-time required

Internal date (IMAP)

header_datestring date-time required

Date from message headers

subjectstring required

Message subject

flagsstring[] required

IMAP flags

labelsstring[] required

User-defined labels (lowercase, max 10)

sizeinteger required

Message size in bytes

uidinteger required

IMAP UID

modseqinteger required

Modification sequence

transactionstring required

Transaction type

remote_addressstring required

Remote IP address

created_atstring date-time required

Message creation timestamp

updated_atstring date-time required

Message last update timestamp

nodemailerobject

Parsed message object (included by default, set ?nodemailer=false to exclude)

rawstring

Raw message content (included by default, set ?raw=false to exclude)

object'message' required

Example response

{
  "id": "message123",
  "root_id": "root123",
  "folder_id": "folder123",
  "folder_path": "INBOX",
  "thread_id": "thread123",
  "header_message_id": "<message123@example.com>",
  "is_unread": true,
  "is_flagged": false,
  "is_deleted": false,
  "is_draft": false,
  "is_junk": false,
  "is_copied": false,
  "is_encrypted": false,
  "is_searchable": true,
  "is_expired": false,
  "has_attachment": false,
  "retention_date": null,
  "internal_date": "2025-01-01T00:00:00.000Z",
  "header_date": "2025-01-01T00:00:00.000Z",
  "subject": "Test Message",
  "flags": [
    "\\Seen"
  ],
  "size": 1024,
  "uid": 1,
  "modseq": 1,
  "transaction": "API",
  "remote_address": "127.0.0.1",
  "created_at": "2025-01-01T00:00:00.000Z",
  "updated_at": "2025-01-01T00:00:00.000Z",
  "object": "message"
}

Changes

No recorded changes to this operation across all 1 revision of this API.