Gmail API release notes
Stay organized with collections
Save and categorize content based on your preferences.
To get the latest product updates delivered to you, add the URL of this page to your
feed
reader, or add the feed URL directly: https://developers.google.com/feeds/gmail-release-notes.xml
.
This page contains release notes for features and updates to the
Gmail API. We recommend that
Gmail API developers periodically check this list for any new
announcements.
May 20, 2025
For Google Workspace organizations that use hardware key encryption, the Gmail API supports using smart cards for client-side encryption (CSE). For details, see the reference documentation for CseIdentity
and CseKeyPair
resources.
November 12, 2019
The messages.import
method uses a more performant backend implementation. The new version is API-compatible with the previous implementation and all clients automatically started using the new behavior as of a few weeks ago. The new backend supports parallel message.import
calls efficiently and clients can now import messages in parallel for a user to achieve higher migration throughput. The quota cost of the message.import
method has been decreased to reflect the new performance.
May 05, 2017
February 07, 2017
November 30, 2016
November 01, 2016
The Gmail API supports a gmail.metadata
scope. This scope gives developers access to a user's mailbox including history records, labels, and email headers, but not email body's or attachments.
July 01, 2016
New endpoints for managing mail settings:
The q
request parameter for the drafts.list
method restricts results to the messages matching the specified query.
February 25, 2016
January 13, 2016
The drafts.list
method has an includeSpamTrash
option, which determines if the response should include drafts with the SPAM
or TRASH
label applied. The default is currently set to true
for this option.
June 22, 2015
To determine the full state of an email before and after a change, the history.list
method returns all current Message.labelIds
as part of the response in messagesAdded
, messagesDeleted
, labelsAdded
, and labelsRemoved
.
June 18, 2015
May 29, 2015
You can now send push notifications on mailbox updates, providing real-time server notification without the need for constant polling. With Cloud Pub/Sub, you can now use webhooks—for example, to receive callbacks when updates happen. Additionally, you can filter these notifications to specific Gmail labels.
March 31, 2015
New scopes for labels and inserting messages to better protect users and accommodate apps that don't need full mailbox data access:
March 18, 2015
February 25, 2015
The history.list
method now provides details of the change type in each history record. For example, using the messagesAdded
, messagesDeleted
, labelsAdded
, or labelsDeleted
enums, it's possible to easily tell how a message was changed and typically avoids the need for additional calls to synchronize your client.
February 11, 2015
The messages.import
method now supports the following parameters to better support Email Migration
use cases:
neverMarkSpam
processForCalendar
deleted
January 23, 2015
You can now specify message.labelIds
on messages.import
requests to automatically apply the given labels to the message.
The default behavior no longer automatically adds INBOX
and UNREAD
labels to messages.import
emails. When message.labelIds
isn't specified, imported mail is only visible in All Mail. If you want INBOX
or UNREAD
labels applied, specify them in the message.labelIds
field.
January 15, 2015
Increased the default per-user quotas from 25 units/user/second to 250 units/user/second and adjusted some method costs slightly.
October 22, 2014
You can now specify the return format for the threads.get
method. The available formats are full
, metadata
, and minimal
, similar to the messages.get
method. The raw format isn't allowed for the threads.get
to avoid unexpectedly large amounts of data being returned.
October 16, 2014
The getProfile
method provides mailbox-wide information like current history ID and total message and thread counts.
October 06, 2014
Added new fields to the Labels
resource to simplify counting how many messages have a given label applied:
messagesTotal
messagesUnread
threadsTotal
threadsUnread
September 25, 2014
The messages.insert
method defaults to using receivedTime
and the messages.import
method defaults to using dateHeader
.
September 08, 2014
When you use the messages.get
method, you can request the metadata return format to return only the email headers and metadata such as identifiers and labels.
September 02, 2014
July 11, 2014
Quota costs for all methods in the API have been reduced by a factor of 10. For example, if a method previously cost 150 quota units, it now costs 15. For a complete list of API method costs, see the per-method quota usage chart.
June 25, 2014
The Gmail API is publicly available!
October 28, 2013
The Review Action is out of preview, and now available to all users.
October 03, 2013
July 23, 2013
July 11, 2013
The RSVP Action is now enabled for all emails sent by Google Calendar.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-28 UTC.
[null,null,["Last updated 2025-08-28 UTC."],[],[],null,["# Gmail API release notes\n\nTo get the latest product updates delivered to you, add the URL of this page to your\n[feed\nreader](https://wikipedia.org/wiki/Comparison_of_feed_aggregators), or add the feed URL directly: `https://developers.google.com/feeds/gmail-release-notes.xml`.\nThis page contains release notes for features and updates to the\nGmail API. We recommend that\nGmail API developers periodically check this list for any new\nannouncements.\n\nMay 20, 2025\n------------\n\nFor Google Workspace organizations that use hardware key encryption, the Gmail API supports using smart cards for client-side encryption (CSE). For details, see the reference documentation for [`CseIdentity`](/gmail/api/reference/rest/v1/users.settings.cse.identities) and [`CseKeyPair`](/workspace/gmail/api/reference/rest/v1/users.settings.cse.keypairs) resources.\n\nNovember 12, 2019\n-----------------\n\nThe `messages.import` method uses a more performant backend implementation. The new version is API-compatible with the previous implementation and all clients automatically started using the new behavior as of a few weeks ago. The new backend supports parallel `message.import` calls efficiently and clients can now import messages in parallel for a user to achieve higher migration throughput. The quota cost of the `message.import` method has been decreased to reflect the new performance.\n\nMay 05, 2017\n------------\n\nDeprecated [Review Action](https://developers.google.com/gmail/markup/reference/review-action), which sunsets on July 15th, 2017.\n\nFebruary 07, 2017\n-----------------\n\nThe [`history.list` method](https://developers.google.com/gmail/api/v1/reference/users/history/list) supports filtering history records by type.\n\nNovember 30, 2016\n-----------------\n\nThe [`messages.batchModify` method](https://developers.google.com/gmail/api/v1/reference/users/messages/batchModify) lets you modify labels on multiple messages by message IDs, in a single batch operation.\n\nNovember 01, 2016\n-----------------\n\nThe Gmail API supports a `gmail.metadata` scope. This scope gives developers access to a user's mailbox including history records, labels, and email headers, but not email body's or attachments.\n\nJuly 01, 2016\n-------------\n\nNew endpoints for managing mail settings:\n\n- [Send-as aliases and Signatures](https://developers.google.com/gmail/api/guides/alias_and_signature_settings)\n- [Forwarding](https://developers.google.com/gmail/api/guides/forwarding_settings)\n- [Filters](https://developers.google.com/gmail/api/guides/filter_settings)\n- [Vacation Responder](https://developers.google.com/gmail/api/guides/vacation_settings)\n- [POP and IMAP](https://developers.google.com/gmail/api/guides/pop_imap_settings) \nThe `q` request parameter for the [`drafts.list` method](https://developers.google.com/gmail/api/v1/reference/users/drafts/list) restricts results to the messages matching the specified query.\n\nFebruary 25, 2016\n-----------------\n\nThe [`messages.batchDelete` method](https://developers.google.com/gmail/api/v1/reference/users/messages/batchDelete) lets you delete multiple messages, by message IDs, in a single batch operation.\n\nJanuary 13, 2016\n----------------\n\nThe [`drafts.list` method](https://developers.google.com/gmail/api/v1/reference/users/drafts/list) has an `includeSpamTrash` option, which determines if the response should include drafts with the `SPAM` or `TRASH`label applied. The default is currently set to `true` for this option.\n\nJune 22, 2015\n-------------\n\nTo determine the full state of an email before and after a change, the [`history.list` method](https://developers.google.com/gmail/api/v1/reference/users/history/list) returns all current `Message.labelIds` as part of the response in `messagesAdded`, `messagesDeleted`, `labelsAdded`, and `labelsRemoved`.\n\nJune 18, 2015\n-------------\n\nAdded a [`Message.internalDate` field](https://developers.google.com/gmail/api/v1/reference/users/messages) that exposes the message's creation timestamp in the mailbox.\n\nMay 29, 2015\n------------\n\nYou can now send [push notifications](https://developers.google.com/gmail/api/guides/push) on mailbox updates, providing real-time server notification without the need for constant polling. With [Cloud Pub/Sub](https://cloud.google.com/pubsub/overview), you can now use webhooks---for example, to receive callbacks when updates happen. Additionally, you can filter these notifications to specific Gmail labels.\n\nMarch 31, 2015\n--------------\n\nNew scopes for labels and inserting messages to better protect users and accommodate apps that don't need full mailbox data access:\n\n- `https://www.googleapis.com/auth/gmail.insert`: Allows the [`messages.insert`](https://developers.google.com/gmail/api/v1/reference/users/messages/insert) and [`messages.import`](https://developers.google.com/gmail/api/v1/reference/users/messages/import) methods only.\n- `https://www.googleapis.com/auth/gmail.labels`: Allows all [label operations](https://developers.google.com/gmail/api/v1/reference/users/labels).\n\nMarch 18, 2015\n--------------\n\nThe [`messages.insert` method](https://developers.google.com/gmail/api/v1/reference/users/messages/insert) now supports the `deleted` request parameter and lets you set `SENT` and `DRAFT` labels.\n\nFebruary 25, 2015\n-----------------\n\nThe [`history.list` method](https://developers.google.com/gmail/api/reference/rest/v1/users.history/list) now provides details of the change type in each history record. For example, using the `messagesAdded`, `messagesDeleted`, `labelsAdded`, or `labelsDeleted` enums, it's possible to easily tell how a message was changed and typically avoids the need for additional calls to synchronize your client.\n\nFebruary 11, 2015\n-----------------\n\nThe [`messages.import` method](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/import) now supports the following parameters to better support `Email Migration` use cases:\n\n- `neverMarkSpam`\n- `processForCalendar`\n- `deleted`\n\nJanuary 23, 2015\n----------------\n\nYou can now specify `message.labelIds` on [`messages.import` requests](https://developers.google.com/gmail/api/v1/reference/users/messages/import) to automatically apply the given labels to the message. \nThe default behavior no longer automatically adds `INBOX` and `UNREAD` labels to [`messages.import` emails](https://developers.google.com/gmail/api/v1/reference/users/messages/import). When `message.labelIds` isn't specified, imported mail is only visible in All Mail. If you want `INBOX` or `UNREAD` labels applied, specify them in the `message.labelIds` field.\n\nJanuary 15, 2015\n----------------\n\nIncreased the default [per-user quotas](https://developers.google.com/gmail/api/v1/reference/quota) from 25 units/user/second to 250 units/user/second and adjusted some method costs slightly.\n\nOctober 22, 2014\n----------------\n\nYou can now specify the return format for the [`threads.get` method](https://developers.google.com/gmail/api/v1/reference/users/threads/get). The available formats are `full`, `metadata`, and `minimal`, similar to the `messages.get` method. The raw format isn't allowed for the `threads.get` to avoid unexpectedly large amounts of data being returned.\n\nOctober 16, 2014\n----------------\n\nThe [`getProfile` method](https://developers.google.com/gmail/api/v1/reference/users/getProfile) provides mailbox-wide information like current history ID and total message and thread counts.\n\nOctober 06, 2014\n----------------\n\nAdded a new [`IMPORTANT` label](https://developers.google.com/gmail/api/guides/labels) to match functionality with the Gmail UI. \nAdded new fields to the `Labels` resource to simplify counting how many messages have a given label applied:\n\n- `messagesTotal`\n- `messagesUnread`\n- `threadsTotal`\n- `threadsUnread`\n\nSeptember 25, 2014\n------------------\n\nThe `messages.insert` method defaults to using `receivedTime` and the `messages.import` method defaults to using `dateHeader`.\n\nSeptember 08, 2014\n------------------\n\nWhen you use the [`messages.get` method](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/get), you can request the metadata return format to return only the email headers and metadata such as identifiers and labels.\n\nSeptember 02, 2014\n------------------\n\nYou can specify the `internalDateSource` for both the [`messages.insert`](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/insert) and [`messages.import`](https://developers.google.com/gmail/api/reference/rest/v1/users.messages/import) methods.\n\nJuly 11, 2014\n-------------\n\nQuota costs for all methods in the API have been reduced by a factor of 10. For example, if a method previously cost 150 quota units, it now costs 15. For a complete list of API method costs, see the [per-method quota usage chart](https://developers.google.com/gmail/api/reference/quota#per-method_quota_usage).\n\nJune 25, 2014\n-------------\n\nThe Gmail API is publicly available!\n\nOctober 28, 2013\n----------------\n\nThe [Review Action](https://developers.google.com/gmail/markup/reference/review-action) is out of preview, and now available to all users.\n\nOctober 03, 2013\n----------------\n\nThe Schema Validator tool in [Testing Your Schemas](https://developers.google.com/gmail/markup/testing-your-schema) has been replaced with the new [Email Markup Tester](https://www.google.com/webmasters/markup-tester/).\n\nJuly 23, 2013\n-------------\n\nIt is now possible to use schemas to define [Orders](https://developers.google.com/gmail/markup/reference/order), [Parcel Deliveries](https://developers.google.com/gmail/markup/reference/parcel-delivery), and the [TrackAction](https://developers.google.com/gmail/markup/reference/go-to-action#track_action) to let users track packages being delivered.\n\nJuly 11, 2013\n-------------\n\nThe [RSVP Action](https://developers.google.com/gmail/markup/reference/rsvp-action) is now enabled for all emails sent by Google Calendar."]]