Get inbox contact messages
curl --request GET \
--url https://openapi.enginy.ai/v1/inboxes/:contactId/messages \
--header 'x-api-key: <api-key>'import requests
url = "https://openapi.enginy.ai/v1/inboxes/:contactId/messages"
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://openapi.enginy.ai/v1/inboxes/:contactId/messages', 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://openapi.enginy.ai/v1/inboxes/:contactId/messages",
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://openapi.enginy.ai/v1/inboxes/:contactId/messages"
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://openapi.enginy.ai/v1/inboxes/:contactId/messages")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/inboxes/:contactId/messages")
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{
"status": "success",
"message": "Inbox messages retrieved successfully",
"data": {
"contactId": 123,
"messages": [
{
"id": 9001,
"conversationId": 456,
"senderIdentityId": 14,
"providerMessageId": null,
"content": "Thanks, this looks interesting. Can you send pricing?",
"subject": "Re: Intro from Enginy",
"type": "EMAIL",
"isContactSender": true,
"isAutosent": false,
"isAudio": false,
"isBounced": false,
"url": null,
"attachment": null,
"attachmentName": null,
"contentType": "TEXT",
"createdAt": "2026-03-20T09:41:12.000Z",
"updatedAt": "2026-03-20T09:41:12.000Z",
"viewCount": 0,
"clickCount": 0
},
{
"id": 9002,
"conversationId": 456,
"senderIdentityId": 14,
"providerMessageId": null,
"content": "Yes, let me know what team size you are targeting and I will tailor the pricing recommendation.",
"subject": "Re: Intro from Enginy",
"type": "EMAIL",
"isContactSender": false,
"isAutosent": false,
"isAudio": false,
"isBounced": false,
"url": null,
"attachment": null,
"attachmentName": null,
"contentType": "TEXT",
"createdAt": "2026-03-20T10:03:40.000Z",
"updatedAt": "2026-03-20T10:03:40.000Z",
"viewCount": 0,
"clickCount": 0
}
]
}
}Inbox
Get inbox contact messages
Return the flattened inbox message history for a contact.
Required parameters:
- contactId: contact ID path parameter for the thread you want to inspect.
Optional query parameters:
- senderIdentityId: limit the returned history to conversations owned by one sender identity
- archived: set to true to read an archived thread instead of an active one. Defaults to false
LinkedIn messages shared by multiple campaign conversations appear once, using their provider message ID. Each LinkedIn message includes providerMessageId so clients can identify it across syncs.
Required scope:
MESSAGING_READRate limit: 100 requests per minute
GET
/
v1
/
inboxes
/
:contactId
/
messages
Get inbox contact messages
curl --request GET \
--url https://openapi.enginy.ai/v1/inboxes/:contactId/messages \
--header 'x-api-key: <api-key>'import requests
url = "https://openapi.enginy.ai/v1/inboxes/:contactId/messages"
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://openapi.enginy.ai/v1/inboxes/:contactId/messages', 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://openapi.enginy.ai/v1/inboxes/:contactId/messages",
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://openapi.enginy.ai/v1/inboxes/:contactId/messages"
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://openapi.enginy.ai/v1/inboxes/:contactId/messages")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/inboxes/:contactId/messages")
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{
"status": "success",
"message": "Inbox messages retrieved successfully",
"data": {
"contactId": 123,
"messages": [
{
"id": 9001,
"conversationId": 456,
"senderIdentityId": 14,
"providerMessageId": null,
"content": "Thanks, this looks interesting. Can you send pricing?",
"subject": "Re: Intro from Enginy",
"type": "EMAIL",
"isContactSender": true,
"isAutosent": false,
"isAudio": false,
"isBounced": false,
"url": null,
"attachment": null,
"attachmentName": null,
"contentType": "TEXT",
"createdAt": "2026-03-20T09:41:12.000Z",
"updatedAt": "2026-03-20T09:41:12.000Z",
"viewCount": 0,
"clickCount": 0
},
{
"id": 9002,
"conversationId": 456,
"senderIdentityId": 14,
"providerMessageId": null,
"content": "Yes, let me know what team size you are targeting and I will tailor the pricing recommendation.",
"subject": "Re: Intro from Enginy",
"type": "EMAIL",
"isContactSender": false,
"isAutosent": false,
"isAudio": false,
"isBounced": false,
"url": null,
"attachment": null,
"attachmentName": null,
"contentType": "TEXT",
"createdAt": "2026-03-20T10:03:40.000Z",
"updatedAt": "2026-03-20T10:03:40.000Z",
"viewCount": 0,
"clickCount": 0
}
]
}
}Authorizations
Path Parameters
Contact ID for the thread you want to inspect
Example:
"123"
Query Parameters
Return only the message history visible for one sender identity.
Example:
14
Return archived threads instead of active ones. Defaults to false.
Example:
false