- [HTTP request](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/modify#body.HTTP_TEMPLATE)
- [Path parameters](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/modify#body.PATH_PARAMETERS)
- [Request body](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/modify#body.request_body)
  - [JSON representation](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/modify#body.request_body.SCHEMA_REPRESENTATION)
- [Response body](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/modify#body.response_body)
- [Authorization scopes](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/modify#body.aspect)
- [Try it!](https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages/modify#try-it)

Modifies the labels and the Classification Label values on the specified message. For administrators modifying message for users in their organization, requests require authorization with a [service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount) that has [domain-wide delegation authority](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority) to impersonate users with the `https://www.googleapis.com/auth/gmail.modify.restricted` scope.

### HTTP request

`POST https://gmail.googleapis.com/gmail/v1/users/{userId}/messages/{id}/modify`

The URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.

### Path parameters

| Parameters ||
|---|---|
| `userId` | `string` The user's email address. The special value `me` can be used to indicate the authenticated user. |
| `id` | `string` The ID of the message to modify. |

### Request body

The request body contains data with the following structure:

| JSON representation |
|---|
| ``` { "addLabelIds": [ string ], "removeLabelIds": [ string ], "addClassificationLabels": [ { object (`https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages#Message.ClassificationLabelValue`) } ], "removeClassificationLabelIds": [ string ] } ``` |

| Fields ||
|---|---|
| `addLabelIds[]` | `string` A list of IDs of labels to add to this message. You can add up to 100 labels with each update. |
| `removeLabelIds[]` | `string` A list IDs of labels to remove from this message. You can remove up to 100 labels with each update. |
| `addClassificationLabels[]` | ``object (`https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages#Message.ClassificationLabelValue`)`` A list of classification label values to add. If a Classification Label with the same label ID is already applied to the message, fields with existing field IDs will be updated and fields with new field IDs will be added. There's a limit of 20 Classification Label values per request. If the message is already classified and the final total number of Classification Label values exceeds the maximum allowed number of Classification Label values per message, the modification fails. |
| `removeClassificationLabelIds[]` | `string` A list of Classification Label values to remove from this message. |

### Response body

If successful, the response body contains an instance of `https://developers.google.com/workspace/gmail/api/reference/rest/v1/users.messages#Message`.

### Authorization scopes

Requires one of the following OAuth scopes:

- `https://mail.google.com/`
- `
  https://www.googleapis.com/auth/gmail.modify`
- `
  https://www.googleapis.com/auth/gmail.modify.restricted`

For more information, see the [Authorization guide](https://developers.google.com/workspace/guides/configure-oauth-consent).