Zoho Mail Messages API
Send, receive, search, and manage email messages and attachments
Send, receive, search, and manage email messages and attachments
openapi: 3.0.3
info:
title: Zoho Mail Accounts Messages API
description: REST API for Zoho Mail providing programmatic access to email accounts, folders, messages, threads, labels, signatures, tasks, bookmarks, notes, organization settings, domains, groups, users, mail policies, and audit logs. Supports full CRUD operations across all modules with OAuth 2.0 authentication.
version: 1.0.0
contact:
name: Zoho Mail Support
url: https://www.zoho.com/mail/help/
email: support@zohomail.com
termsOfService: https://www.zoho.com/mail/zohomail-pricing.html
license:
name: Zoho Terms of Service
url: https://www.zoho.com/terms.html
servers:
- url: https://mail.zoho.com
description: US Data Center
- url: https://mail.zoho.eu
description: Europe Data Center
- url: https://mail.zoho.in
description: India Data Center
- url: https://mail.zoho.com.au
description: Australia Data Center
- url: https://mail.zoho.jp
description: Japan Data Center
- url: https://mail.zohocloud.ca
description: Canada Data Center
- url: https://mail.zoho.ae
description: UAE Data Center
- url: https://mail.zoho.sa
description: Saudi Arabia Data Center
- url: https://mail.zoho.com.cn
description: China Data Center
security:
- OAuth2:
- ZohoMail.messages
- ZohoMail.accounts
- ZohoMail.folders
- ZohoMail.organization
tags:
- name: Messages
description: Send, receive, search, and manage email messages and attachments
paths:
/api/accounts/{accountId}/messages:
get:
operationId: listMessages
summary: List emails in folder
description: Get all or a specific set of emails in a folder based on view options.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- name: folderId
in: query
description: Folder ID to list messages from
schema:
type: string
- name: start
in: query
description: Starting index for pagination
schema:
type: integer
default: 0
- name: limit
in: query
description: Number of messages to retrieve
schema:
type: integer
default: 200
responses:
'200':
description: Successful response with message list
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ApiResponse'
- properties:
data:
type: array
items:
$ref: '#/components/schemas/Message'
post:
operationId: sendMessage
summary: Send an email
description: Send an email specifying the From, To, Cc, Bcc, Subject, Encoding and Email format.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SendMessageRequest'
responses:
'200':
description: Email sent successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ApiResponse'
- properties:
data:
type: object
properties:
messageId:
type: string
subject:
type: string
fromAddress:
type: string
/api/accounts/{accountId}/messages/search:
get:
operationId: searchMessages
summary: Search emails
description: Retrieve messages using custom search criteria.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- name: searchKey
in: query
description: Search keyword or phrase
schema:
type: string
- name: folder
in: query
description: Folder ID to search within
schema:
type: string
- name: start
in: query
description: Starting index for pagination
schema:
type: integer
default: 0
- name: limit
in: query
description: Number of results to return
schema:
type: integer
default: 200
responses:
'200':
description: Successful response with search results
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ApiResponse'
- properties:
data:
type: array
items:
$ref: '#/components/schemas/Message'
/api/accounts/{accountId}/messages/attachments:
post:
operationId: uploadAttachment
summary: Upload an attachment
description: Upload a file before attaching it to an email.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
attach:
type: string
format: binary
description: File to upload as an attachment
responses:
'200':
description: Attachment uploaded successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ApiResponse'
- properties:
data:
type: object
properties:
attachmentId:
type: string
attachmentName:
type: string
attachmentSize:
type: integer
/api/accounts/{accountId}/messages/{messageId}:
post:
operationId: replyToMessage
summary: Reply to email
description: Respond to a received message.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/messageId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SendMessageRequest'
responses:
'200':
description: Reply sent successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/api/accounts/{accountId}/messages/view:
get:
operationId: viewMessages
summary: Get emails in folder by view
description: Get details of all or a specific set of emails in a folder based on view options.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- name: folderId
in: query
required: true
description: Folder ID to retrieve emails from
schema:
type: string
- name: start
in: query
description: Starting index for pagination
schema:
type: integer
default: 0
- name: limit
in: query
description: Number of messages to retrieve
schema:
type: integer
default: 200
responses:
'200':
description: Successful response with message list
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ApiResponse'
- properties:
data:
type: array
items:
$ref: '#/components/schemas/Message'
/api/accounts/{accountId}/updatemessage:
put:
operationId: updateMessage
summary: Update message(s)
description: 'Perform bulk operations on messages: mark as read/unread, move, flag, apply or remove labels, archive/unarchive, mark as spam/not spam.'
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMessageRequest'
responses:
'200':
description: Messages updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}:
delete:
operationId: deleteMessage
summary: Delete email
description: Permanently delete an email message.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/folderId'
- $ref: '#/components/parameters/messageId'
responses:
'200':
description: Message deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/header:
get:
operationId: getMessageHeader
summary: Get email headers
description: Retrieve the headers of a specific email message.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/folderId'
- $ref: '#/components/parameters/messageId'
responses:
'200':
description: Successful response with email headers
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/content:
get:
operationId: getMessageContent
summary: Get email content
description: Retrieve the body/content of a specific email message.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/folderId'
- $ref: '#/components/parameters/messageId'
responses:
'200':
description: Successful response with email content
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/details:
get:
operationId: getMessageDetails
summary: Get email metadata
description: Retrieve metadata and details for a specific email message.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/folderId'
- $ref: '#/components/parameters/messageId'
responses:
'200':
description: Successful response with email metadata
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/ApiResponse'
- properties:
data:
$ref: '#/components/schemas/Message'
/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/attachmentinfo:
get:
operationId: getAttachmentInfo
summary: Get attachment information
description: Retrieve information about attachments in a specific email.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/folderId'
- $ref: '#/components/parameters/messageId'
responses:
'200':
description: Successful response with attachment info
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/api/accounts/{accountId}/folders/{folderId}/messages/{messageId}/attachments/{attachmentId}:
get:
operationId: getAttachmentContent
summary: Get attachment content
description: Get the content stream of attachments in an email.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/folderId'
- $ref: '#/components/parameters/messageId'
- $ref: '#/components/parameters/attachmentId'
responses:
'200':
description: Attachment content stream
content:
application/octet-stream:
schema:
type: string
format: binary
/api/accounts/{accountId}/messages/{messageId}/originalmessage:
get:
operationId: getOriginalMessage
summary: Get original message
description: Obtain the MIME representation of the original email message.
tags:
- Messages
security:
- OAuth2:
- ZohoMail.messages
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/messageId'
responses:
'200':
description: Successful response with original MIME message
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
components:
schemas:
ApiStatus:
type: object
properties:
code:
type: integer
description: HTTP-style status code
description:
type: string
description: Human-readable status description
ApiResponse:
type: object
properties:
status:
$ref: '#/components/schemas/ApiStatus'
data:
description: Response payload; structure varies by endpoint
UpdateMessageRequest:
type: object
properties:
mode:
type: string
description: 'Action to perform: markAsRead, markAsUnread, moveMessage, flagMessage, addLabel, removeLabel, markAsSpam, markAsNotSpam, archiveMessage, unarchiveMessage'
messageId:
type: array
items:
type: string
description: Array of message IDs to update
folderId:
type: string
description: Target folder ID (used with moveMessage)
labelId:
type: string
description: Label ID to add or remove
SendMessageRequest:
type: object
required:
- fromAddress
- toAddress
- subject
properties:
fromAddress:
type: string
format: email
description: Sender email address
toAddress:
type: string
description: Recipient email addresses (comma-separated)
ccAddress:
type: string
description: CC email addresses (comma-separated)
bccAddress:
type: string
description: BCC email addresses (comma-separated)
subject:
type: string
description: Email subject
content:
type: string
description: Email body content
mailFormat:
type: string
enum:
- html
- plaintext
description: Format of the email body
encoding:
type: string
description: Character encoding for the email
Message:
type: object
properties:
messageId:
type: string
description: Unique message identifier
subject:
type: string
description: Email subject line
fromAddress:
type: string
format: email
description: Sender email address
toAddress:
type: string
description: Recipient email addresses
ccAddress:
type: string
description: CC email addresses
bccAddress:
type: string
description: BCC email addresses
sentDateInGMT:
type: string
description: Date and time the message was sent in GMT
hasAttachment:
type: string
description: Indicates if the message has attachments (true/false)
isUnread:
type: string
description: Indicates if the message is unread (true/false)
parameters:
attachmentId:
name: attachmentId
in: path
required: true
description: The unique identifier for the attachment.
schema:
type: string
messageId:
name: messageId
in: path
required: true
description: The unique identifier for the email message.
schema:
type: string
accountId:
name: accountId
in: path
required: true
description: The unique identifier for the email account.
schema:
type: string
folderId:
name: folderId
in: path
required: true
description: The unique identifier for the folder.
schema:
type: string
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://accounts.zoho.com/oauth/v2/auth
tokenUrl: https://accounts.zoho.com/oauth/v2/token
refreshUrl: https://accounts.zoho.com/oauth/v2/token
scopes:
ZohoMail.messages: Access email messages
ZohoMail.accounts: Access account settings
ZohoMail.accounts.READ: Read account details
ZohoMail.folders: Access folders
ZohoMail.labels: Access labels
ZohoMail.signatures: Access signatures
ZohoMail.tasks: Access tasks
ZohoMail.bookmarks: Access bookmarks
ZohoMail.notes: Access notes
ZohoMail.organization: Access organization settings
ZohoMail.organization.accounts: Admin access to user accounts
externalDocs:
description: Zoho Mail API Documentation
url: https://www.zoho.com/mail/help/api/overview.html