curl --request POST \
--url https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"confirmTrash": true
}
'import requests
url = "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move"
payload = { "confirmTrash": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({confirmTrash: true})
};
fetch('https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'confirmTrash' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move"
payload := strings.NewReader("{\n \"confirmTrash\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"confirmTrash\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"confirmTrash\": true\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"message": {
"id": "<string>",
"conversationId": "<string>",
"subject": "<string>",
"receivedDateTime": "<string>",
"preview": "<string>",
"from": {
"name": "<string>",
"address": "<string>"
},
"to": [
{
"name": "<string>",
"address": "<string>"
}
],
"webLink": "<string>",
"hasAttachments": true,
"isDraft": true,
"isRead": true,
"categories": [
"<string>"
],
"parentFolderId": "<string>",
"cc": [
{
"name": "<string>",
"address": "<string>"
}
],
"body": "<string>",
"bodyContentType": "<string>",
"bodyTruncated": true
}
}{
"error": "unauthorized"
}{
"error": "needs_connection",
"message": "<string>"
}{
"error": "invalid_request",
"message": "<string>"
}{
"error": "microsoft_graph_error",
"message": "<string>",
"outcome": "unknown",
"retryable": false
}Move an Outlook message to archive, deleted items, or inbox
Requires Mail.ReadWrite and mailManage. Moves one message to a fixed named folder, never permanently deletes it. Moving to deleteditems also requires confirmTrash: true. Use the returned message id after moving, since Graph can change it. Uses only the calling member’s delegated Microsoft 365 connection. Never automatically retry a mutation after a timeout, cancellation, or ambiguous response; inspect current state first.
curl --request POST \
--url https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"confirmTrash": true
}
'import requests
url = "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move"
payload = { "confirmTrash": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({confirmTrash: true})
};
fetch('https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'confirmTrash' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move"
payload := strings.NewReader("{\n \"confirmTrash\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"confirmTrash\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"confirmTrash\": true\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"message": {
"id": "<string>",
"conversationId": "<string>",
"subject": "<string>",
"receivedDateTime": "<string>",
"preview": "<string>",
"from": {
"name": "<string>",
"address": "<string>"
},
"to": [
{
"name": "<string>",
"address": "<string>"
}
],
"webLink": "<string>",
"hasAttachments": true,
"isDraft": true,
"isRead": true,
"categories": [
"<string>"
],
"parentFolderId": "<string>",
"cc": [
{
"name": "<string>",
"address": "<string>"
}
],
"body": "<string>",
"bodyContentType": "<string>",
"bodyTruncated": true
}
}{
"error": "unauthorized"
}{
"error": "needs_connection",
"message": "<string>"
}{
"error": "invalid_request",
"message": "<string>"
}{
"error": "microsoft_graph_error",
"message": "<string>",
"outcome": "unknown",
"retryable": false
}Authorizations
Session token passed as Authorization: Bearer <session-token> for user-authenticated Den routes.
Path Parameters
Microsoft Graph message id.
1 - 512Body
Named folder in the caller's mailbox. deleteditems moves to trash, never permanently deletes.
archive, deleteditems, inbox Required when destination is deleteditems. Set true only when the user explicitly requested moving this message to trash.
Was this page helpful?