Download an Outlook attachment's bytes as the calling member
curl --request GET \
--url https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}', 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-attachment/{messageId}/{attachmentId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"ok": true,
"attachment": {
"id": "<string>",
"name": "<string>",
"contentType": "<string>",
"size": 123,
"isInline": true,
"kind": "file",
"contentBase64": "<string>",
"contentUnavailableReason": "not_a_file"
}
}{
"error": "unauthorized"
}{
"error": "needs_connection",
"message": "<string>"
}{
"error": "microsoft_graph_error",
"message": "<string>",
"outcome": "unknown",
"retryable": false
}Capability Sources
Download an Outlook attachment's bytes as the calling member
Downloads one file attachment from an Outlook message as base64, up to 10 MiB, using the attachment id from the mail-attachments capability. Decode contentBase64 locally to reconstruct the file, e.g. a PDF or spreadsheet. Attached Outlook items, cloud links and larger files return contentUnavailableReason instead.
GET
/
v1
/
capabilities
/
microsoft-365
/
mail-attachment
/
{messageId}
/
{attachmentId}
Download an Outlook attachment's bytes as the calling member
curl --request GET \
--url https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}', 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-attachment/{messageId}/{attachmentId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/capabilities/microsoft-365/mail-attachment/{messageId}/{attachmentId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"ok": true,
"attachment": {
"id": "<string>",
"name": "<string>",
"contentType": "<string>",
"size": 123,
"isInline": true,
"kind": "file",
"contentBase64": "<string>",
"contentUnavailableReason": "not_a_file"
}
}{
"error": "unauthorized"
}{
"error": "needs_connection",
"message": "<string>"
}{
"error": "microsoft_graph_error",
"message": "<string>",
"outcome": "unknown",
"retryable": false
}Authorizations
denApiKeybearerAuth
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.
Required string length:
1 - 512Attachment id from the mail-attachments capability.
Required string length:
1 - 512Was this page helpful?