Stay organized with collectionsSave and categorize content based on your preferences.
To get the latest product updates delivered to you, add the URL of this page to yourfeed
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 forCseIdentityandCseKeyPairresources.
November 12, 2019
Themessages.importmethod 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 parallelmessage.importcalls efficiently and clients can now import messages in parallel for a user to achieve higher migration throughput. The quota cost of themessage.importmethod has been decreased to reflect the new performance.
May 05, 2017
DeprecatedReview Action, which sunsets on July 15th, 2017.
Themessages.batchModifymethodlets you modify labels on multiple messages by message IDs, in a single batch operation.
November 01, 2016
The Gmail API supports agmail.metadatascope. This scope gives developers access to a user's mailbox including history records, labels, and email headers, but not email body's or attachments.
Theqrequest parameter for thedrafts.listmethodrestricts results to the messages matching the specified query.
February 25, 2016
Themessages.batchDeletemethodlets you delete multiple messages, by message IDs, in a single batch operation.
January 13, 2016
Thedrafts.listmethodhas anincludeSpamTrashoption, which determines if the response should include drafts with theSPAMorTRASHlabel applied. The default is currently set totruefor this option.
June 22, 2015
To determine the full state of an email before and after a change, thehistory.listmethodreturns all currentMessage.labelIdsas part of the response inmessagesAdded,messagesDeleted,labelsAdded, andlabelsRemoved.
You can now sendpush notificationson mailbox updates, providing real-time server notification without the need for constant polling. WithCloud 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:
Themessages.insertmethodnow supports thedeletedrequest parameter and lets you setSENTandDRAFTlabels.
February 25, 2015
Thehistory.listmethodnow provides details of the change type in each history record. For example, using themessagesAdded,messagesDeleted,labelsAdded, orlabelsDeletedenums, 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
Themessages.importmethodnow supports the following parameters to better supportEmail Migrationuse cases:
neverMarkSpam
processForCalendar
deleted
January 23, 2015
You can now specifymessage.labelIdsonmessages.importrequeststo automatically apply the given labels to the message.
The default behavior no longer automatically addsINBOXandUNREADlabels tomessages.importemails. Whenmessage.labelIdsisn't specified, imported mail is only visible in All Mail. If you wantINBOXorUNREADlabels applied, specify them in themessage.labelIdsfield.
January 15, 2015
Increased the defaultper-user quotasfrom 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 thethreads.getmethod. The available formats arefull,metadata, andminimal, similar to themessages.getmethod. The raw format isn't allowed for thethreads.getto avoid unexpectedly large amounts of data being returned.
October 16, 2014
ThegetProfilemethodprovides mailbox-wide information like current history ID and total message and thread counts.
October 06, 2014
Added a newIMPORTANTlabelto match functionality with the Gmail UI.
Added new fields to theLabelsresource to simplify counting how many messages have a given label applied:
messagesTotal
messagesUnread
threadsTotal
threadsUnread
September 25, 2014
Themessages.insertmethod defaults to usingreceivedTimeand themessages.importmethod defaults to usingdateHeader.
September 08, 2014
When you use themessages.getmethod, you can request the metadata return format to return only the email headers and metadata such as identifiers and labels.
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 theper-method quota usage chart.
June 25, 2014
The Gmail API is publicly available!
October 28, 2013
TheReview Actionis out of preview, and now available to all users.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["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."]]