Properties
| Name | Type | Description |
|---|---|---|
| id | string | Message ID |
| root_id | string | Root message ID for threading |
| folder_id | string | Folder ID containing the message |
| folder_path | string | Folder path containing the message |
| thread_id | string | Thread ID for conversation grouping |
| header_message_id | string | Message-ID header value |
| is_unread | boolean | Whether message is unread |
| is_flagged | boolean | Whether message is flagged |
| is_deleted | boolean | Whether message is deleted |
| is_draft | boolean | Whether message is a draft |
| is_junk | boolean | Whether message is junk/spam |
| is_copied | boolean | Whether message is copied |
| is_encrypted | boolean | Whether message is encrypted (PGP/MIME or S/MIME) |
| is_searchable | boolean | Whether message is searchable |
| is_expired | boolean | Whether message is expired |
| has_attachment | boolean | Whether message has attachments |
| retention_date | stringnull | Message retention date |
| internal_date | string | Internal date (IMAP) |
| header_date | string | Date from message headers |
| subject | string | Message subject |
| flags | array | IMAP flags |
| labels | array | User-defined labels (lowercase, max 10) |
| size | integer | Message size in bytes |
| uid | integer | IMAP UID |
| modseq | integer | Modification sequence |
| transaction | string | Transaction type |
| remote_address | string | Remote IP address |
| created_at | string | Message creation timestamp |
| updated_at | string | Message last update timestamp |
| nodemailer | object | Parsed message object (included by default, set ?nodemailer=false to exclude) |
| raw | string | Raw message content (included by default, set ?raw=false to exclude) |
| object | string |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/forward-email/main/json-schema/forward-email-message-schema.json",
"title": "Message",
"x-generated": "2026-10-26",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/forward-email-openapi.json#/components/schemas/Message",
"type": "object",
"required": [
"id",
"root_id",
"folder_id",
"folder_path",
"thread_id",
"header_message_id",
"is_unread",
"is_flagged",
"is_deleted",
"is_draft",
"is_junk",
"is_copied",
"is_encrypted",
"is_searchable",
"is_expired",
"has_attachment",
"retention_date",
"internal_date",
"header_date",
"subject",
"flags",
"labels",
"size",
"uid",
"modseq",
"transaction",
"remote_address",
"created_at",
"updated_at",
"object"
],
"properties": {
"id": {
"type": "string",
"description": "Message ID"
},
"root_id": {
"type": "string",
"description": "Root message ID for threading"
},
"folder_id": {
"type": "string",
"description": "Folder ID containing the message"
},
"folder_path": {
"type": "string",
"description": "Folder path containing the message"
},
"thread_id": {
"type": "string",
"description": "Thread ID for conversation grouping"
},
"header_message_id": {
"type": "string",
"description": "Message-ID header value"
},
"is_unread": {
"type": "boolean",
"description": "Whether message is unread"
},
"is_flagged": {
"type": "boolean",
"description": "Whether message is flagged"
},
"is_deleted": {
"type": "boolean",
"description": "Whether message is deleted"
},
"is_draft": {
"type": "boolean",
"description": "Whether message is a draft"
},
"is_junk": {
"type": "boolean",
"description": "Whether message is junk/spam"
},
"is_copied": {
"type": "boolean",
"description": "Whether message is copied"
},
"is_encrypted": {
"type": "boolean",
"description": "Whether message is encrypted (PGP/MIME or S/MIME)"
},
"is_searchable": {
"type": "boolean",
"description": "Whether message is searchable"
},
"is_expired": {
"type": "boolean",
"description": "Whether message is expired"
},
"has_attachment": {
"type": "boolean",
"description": "Whether message has attachments"
},
"retention_date": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Message retention date"
},
"internal_date": {
"type": "string",
"format": "date-time",
"description": "Internal date (IMAP)"
},
"header_date": {
"type": "string",
"format": "date-time",
"description": "Date from message headers"
},
"subject": {
"type": "string",
"description": "Message subject"
},
"flags": {
"type": "array",
"items": {
"type": "string"
},
"description": "IMAP flags"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "User-defined labels (lowercase, max 10)"
},
"size": {
"type": "integer",
"description": "Message size in bytes"
},
"uid": {
"type": "integer",
"description": "IMAP UID"
},
"modseq": {
"type": "integer",
"description": "Modification sequence"
},
"transaction": {
"type": "string",
"description": "Transaction type"
},
"remote_address": {
"type": "string",
"description": "Remote IP address"
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "Message creation timestamp"
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "Message last update timestamp"
},
"nodemailer": {
"type": "object",
"description": "Parsed message object (included by default, set ?nodemailer=false to exclude)"
},
"raw": {
"type": "string",
"description": "Raw message content (included by default, set ?raw=false to exclude)"
},
"object": {
"type": "string",
"enum": [
"message"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/forward-email-message"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.