curl --request GET \
--url https://public-api.frictio.ai/v2/messages/{messageId} \
--header 'X-Api-Key: <api-key>' \
--header 'X-Workspace-Id: <x-workspace-id>'import requests
url = "https://public-api.frictio.ai/v2/messages/{messageId}"
headers = {
"X-Workspace-Id": "<x-workspace-id>",
"X-Api-Key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Workspace-Id': '<x-workspace-id>', 'X-Api-Key': '<api-key>'}
};
fetch('https://public-api.frictio.ai/v2/messages/{messageId}', 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://public-api.frictio.ai/v2/messages/{messageId}",
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>",
"X-Workspace-Id: <x-workspace-id>"
],
]);
$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://public-api.frictio.ai/v2/messages/{messageId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Workspace-Id", "<x-workspace-id>")
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://public-api.frictio.ai/v2/messages/{messageId}")
.header("X-Workspace-Id", "<x-workspace-id>")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.frictio.ai/v2/messages/{messageId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Workspace-Id"] = '<x-workspace-id>'
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "0d2f1b7c-3a44-4c8e-9f10-6b5e2d8a4c31",
"header_message_id": "<CAF=abc123@mail.gmail.com>",
"thread_id": "19821a3c9f0b1d2e",
"subject": "Re: 見積のご確認",
"received_at": "2026-08-27T04:12:33.000Z",
"is_internal": false,
"is_group_email": false,
"participants": [
{
"handle": "sato@example.com",
"display_name": "佐藤 花子",
"role": "FROM",
"contact_id": "7a9c4e51-8b26-4d03-9f18-2e6b5c47d90a"
},
{
"handle": "eigyo@syslea.co.jp",
"display_name": null,
"role": "TO",
"contact_id": null
}
]
}Get message
メッセージ1件を ID 指定で取得します。
ワークスペースに公開されているメッセージが対象です。 次のいずれかに当てはまる場合は、存在の有無を明かさずすべて 404 を返します。
- 指定 ID のメッセージが存在しない、または別ワークスペースのものである
- メッセージが削除済みである
- ワークスペースの共有設定でメッセージが公開されていない
- 通常のメッセージではない(バウンス・自動返信など)
メールを取り込んだメンバーが退職したり、メール連携を解除したりしても、 取り込み済みのメッセージは引き続き取得できます。
公開されていない項目は null になります。詳細は subject / text の説明を
参照してください。
participants は常に完全な配列を返します(件数による打ち切りやページングは
ありません)。1 件もない場合は空配列を返し、フィールド自体を省略することはありません。
紐づく CRM レコード(Company / Deal)はこのレスポンスには含まれません。
GET /v2/activities/{activityId} の links を参照してください
(GET /v2/activities の source_type=MESSAGE の項目で source_id が
メッセージIDと一致します)。
添付ファイルの本体は返しません。
curl --request GET \
--url https://public-api.frictio.ai/v2/messages/{messageId} \
--header 'X-Api-Key: <api-key>' \
--header 'X-Workspace-Id: <x-workspace-id>'import requests
url = "https://public-api.frictio.ai/v2/messages/{messageId}"
headers = {
"X-Workspace-Id": "<x-workspace-id>",
"X-Api-Key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Workspace-Id': '<x-workspace-id>', 'X-Api-Key': '<api-key>'}
};
fetch('https://public-api.frictio.ai/v2/messages/{messageId}', 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://public-api.frictio.ai/v2/messages/{messageId}",
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>",
"X-Workspace-Id: <x-workspace-id>"
],
]);
$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://public-api.frictio.ai/v2/messages/{messageId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Workspace-Id", "<x-workspace-id>")
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://public-api.frictio.ai/v2/messages/{messageId}")
.header("X-Workspace-Id", "<x-workspace-id>")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.frictio.ai/v2/messages/{messageId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Workspace-Id"] = '<x-workspace-id>'
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "0d2f1b7c-3a44-4c8e-9f10-6b5e2d8a4c31",
"header_message_id": "<CAF=abc123@mail.gmail.com>",
"thread_id": "19821a3c9f0b1d2e",
"subject": "Re: 見積のご確認",
"received_at": "2026-08-27T04:12:33.000Z",
"is_internal": false,
"is_group_email": false,
"participants": [
{
"handle": "sato@example.com",
"display_name": "佐藤 花子",
"role": "FROM",
"contact_id": "7a9c4e51-8b26-4d03-9f18-2e6b5c47d90a"
},
{
"handle": "eigyo@syslea.co.jp",
"display_name": null,
"role": "TO",
"contact_id": null
}
]
}Authorizations
Headers
ワークスペースID
Path Parameters
メッセージID
Response
成功
メッセージID。GET /v2/activities の source_type が MESSAGE の項目では
source_id と一致します。
UUID 形式でない値を指定した場合は 400 になります。
"0d2f1b7c-3a44-4c8e-9f10-6b5e2d8a4c31"
RFC 5322 の Message-ID ヘッダ。メール送信元が付与する識別子で、
プロバイダに依存しない重複排除キーとして使えます。
"<CAF=abc123@mail.gmail.com>"
スレッドID。同一スレッドの判定に使えます。
GET /v2/messages の thread_id に渡すとスレッド内のメッセージを取得できます。
取得できない場合は null です。
"19821a3c9f0b1d2e"
件名。ワークスペースの共有設定で件名が公開されていない場合は null です。
件名が元から空のメッセージも null です。この2つは区別できません。
送受信日時(UTC)。
"2026-08-27T04:12:33.000Z"
参加者(From / To / Cc)が全員社内メンバーのメッセージかどうか。 現在のAPIでは社内メッセージを公開対象に含めません。
メーリングリスト等のグループ宛メッセージかどうか。
参加者の全件。FROM → TO → CC → BCC の順、同一 role 内は handle の昇順で返します。
Show child attributes
Show child attributes
本文(プレーンテキスト、全文)。ワークスペースの共有設定で本文が
公開されていない場合は null です。本文が元から空のメッセージも null です。
この2つは区別できません。
一覧(GET /v2/messages)にはこの項目は含まれません。