curl --request POST \
--url https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"confirmTrash": true
}
'import requests
url = "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move"
payload = { "confirmTrash": True }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', '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 => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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("x-api-key", "<api-key>")
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("x-api-key", "<api-key>")
.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["x-api-key"] = '<api-key>'
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 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"confirmTrash": true
}
'import requests
url = "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-message/{messageId}/move"
payload = { "confirmTrash": True }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', '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 => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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("x-api-key", "<api-key>")
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("x-api-key", "<api-key>")
.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["x-api-key"] = '<api-key>'
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
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
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?