Retrieve a chat
GEThttps://api.postpress.ai/v1/chats/{chat_id}
Retrieve the details of a chat, including its last message.
Authorization
X-API-KEYstringrequired
API key from your postpress dashboard. Sent as a request header.
Path parameters
chat_idstringrequired
The postpress or provider id of the chat.
Query parameters
account_idstringoptional
Mandatory when `chat_id` is a provider id. The postpress account that should resolve the provider chat.
Response 200 OK
objectstringChatrequiredidstringlength ≥ 1requiredaccount_idstringlength ≥ 1requiredaccount_typestringrequiredWHATSAPPLINKEDINSLACKTWITTERMESSENGERINSTAGRAMTELEGRAMprovider_idstringrequiredattendee_provider_idstringProvider-native id of the other attendee, for 1:1 chats.
namestringrequiredChat or contact name. Nullable.
typenumberrequired0120 = 1:1, 1 = group, 2 = broadcast.
timestampstringrequiredLast activity timestamp. Nullable.
unread_countnumberrequiredarchivednumberrequired01muted_untilnumber or stringrequired-1 = muted indefinitely, ISO datetime = muted until that time, null = not muted.
read_onlynumberrequired012disabledFeaturesarray of stringsFeatures disabled by the provider for this chat.
disabledFeatures array
<feature>stringreactionsreplysubjectstringChat subject (when applicable).
organization_idstringLinkedIn-specific id for organization mailboxes.
mailbox_idstringLinkedIn-specific id for organization mailboxes.
content_typestringinmailsponsoredlinkedin_offerLinkedIn-specific content classifier.
folderarray of stringsFolders the chat belongs to.
folder array
<folder>stringINBOXINBOX_LINKEDIN_CLASSICINBOX_LINKEDIN_RECRUITERINBOX_LINKEDIN_SALES_NAVIGATORINBOX_LINKEDIN_ORGANIZATIONKnown folders, plus arbitrary custom folder names.
pinnednumberrequired01lastMessageobjectrequiredThe most recent message in the chat. Nullable for empty chats.
lastMessage object
idstringlength ≥ 1requiredpostpress message id.
provider_idstringrequiredProvider-native message id.
account_idstringlength ≥ 1requiredchat_idstringlength ≥ 1requiredchat_provider_idstringrequiredsender_idstringrequiredsender_attendee_idstringlength ≥ 1requiredtimestampstringrequiredtextstringrequiredNullable when the message has no text body.
is_sendernumberrequired011 if the connected account sent the message.
attachmentsarray of objectsrequiredEach attachment is one of the variants below.
attachments array
imgobjectImage attachment.
img object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumbersizeobjectrequiredsize object
widthnumberrequiredheightnumberrequiredstickerbooleanrequiredvideoobjectVideo attachment.
video object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumbersizeobjectrequiredsize object
widthnumberrequiredheightnumberrequiredgifbooleanrequiredaudioobjectAudio attachment.
audio object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumberdurationnumbervoice_notebooleanrequiredfileobjectGeneric file attachment.
file object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumberfile_namestringrequiredlinkedin_postobjectLinkedIn post attachment.
linkedin_post object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumbervideo_meetingobjectVideo meeting attachment.
video_meeting object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumberstarts_atnumberrequiredUnix epoch; nullable.
expires_atnumberrequiredUnix epoch; nullable.
time_rangenumberrequiredDuration in seconds; nullable.
quotedobjectThe message this one quotes, when applicable.
quoted object
provider_idstringrequiredsender_idstringrequiredtextstringrequiredNullable when the quoted message has no text.
attachmentsarray of objectsrequiredEach attachment is one of the variants below.
attachments array
imgobjectImage attachment.
img object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumbersizeobjectrequiredsize object
widthnumberrequiredheightnumberrequiredstickerbooleanrequiredvideoobjectVideo attachment.
video object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumbersizeobjectrequiredsize object
widthnumberrequiredheightnumberrequiredgifbooleanrequiredaudioobjectAudio attachment.
audio object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumberdurationnumbervoice_notebooleanrequiredfileobjectGeneric file attachment.
file object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumberfile_namestringrequiredlinkedin_postobjectLinkedIn post attachment.
linkedin_post object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumbervideo_meetingobjectVideo meeting attachment.
video_meeting object
idstringrequiredtypestringrequiredfile_sizenumberunavailablebooleanrequiredmimetypestringurlstringurl_expires_atnumberstarts_atnumberrequiredUnix epoch; nullable.
expires_atnumberrequiredUnix epoch; nullable.
time_rangenumberrequiredDuration in seconds; nullable.
message_idstringlength ≥ 1postpress message id.
reactionsarray of objectsrequiredReactions left on the message.
reactions array
valuestringrequiredUnicode emoji of the reaction.
sender_idstringrequiredis_senderbooleanrequiredseennumberrequired01seen_byobjectrequiredMap of attendee id -> seen timestamp (string) or boolean.
seen_by object
<attendee_id>string or booleanPer-attendee read receipt.
hiddennumberrequired01deletednumberrequired01editednumberrequired01is_eventnumberrequired01deliverednumberrequired01behaviornumberrequiredProvider-specific behavior code; nullable.
event_typenumber012345678910111213Provider event code when `is_event` is 1.
originalstringrequiredOriginal raw payload as returned by the provider.
is_forwardedbooleanTrue if the message was forwarded.
repliesnumberNumber of replies in a thread.
reply_byarray of stringsAttendee ids that have replied.
reply_by array
<attendee_id>stringparentstringlength ≥ 1Parent message id for threaded replies.
subjectstringMessage subject; nullable.
message_typestringMESSAGEINVITATIONINMAILINMAIL_DECLINEINMAIL_REPLYINMAIL_ACCEPTattendee_typestringMEMBERORGANIZATIONOTHERattendee_distancenumber1234-1LinkedIn-style connection distance.
sender_urnstringreply_toobjectThe message this one replies to, when applicable.
reply_to object
idstringlength ≥ 1requiredprovider_idstringrequiredtimestampstringrequiredsender_attendee_idstringlength ≥ 1requiredsender_idstringrequiredtextstringrequiredNullable.
Example request
curl --request GET \
--url 'https://api.postpress.ai/api/v1/chats/chat_01HXYZ4QK3WJ8FN3M6QH7TZ8GR' \
--header 'X-API-KEY: pp_live_...' \
--header 'accept: application/json'Example response
{
"object": "Chat",
"id": "chat_01HXYZ4QK3WJ8FN3M6QH7TZ8GR",
"account_id": "acc_01HXYZ4QK3WJ8FN3M6QH7TZ8GR",
"account_type": "LINKEDIN",
"provider_id": "2-NTRkZDA4M2QtZDcxZS00YzY5...",
"attendee_provider_id": "ACoAACr-1eYBl...",
"name": "Jordan Walke",
"type": 0,
"timestamp": "2026-05-17T09:42:11.000Z",
"unread_count": 2,
"archived": 0,
"muted_until": null,
"read_only": 0,
"folder": ["INBOX", "INBOX_LINKEDIN_CLASSIC"],
"pinned": 0,
"lastMessage": {
"object": "Message",
"id": "msg_01HXYZ4QK3WJ8FN3M6QH7TZ8GR",
"provider_id": "urn:li:msg:2-NTRkZDA4...",
"account_id": "acc_01HXYZ4QK3WJ8FN3M6QH7TZ8GR",
"chat_id": "chat_01HXYZ4QK3WJ8FN3M6QH7TZ8GR",
"chat_provider_id": "2-NTRkZDA4M2QtZDcxZS00YzY5...",
"sender_id": "ACoAACr-1eYBl...",
"sender_attendee_id": "att_01HXYZ4QK3WJ8FN3M6QH7TZ8GR",
"timestamp": "2026-05-17T09:42:11.000Z",
"text": "Sounds good - let's chat tomorrow.",
"is_sender": 0,
"attachments": [],
"reactions": [],
"seen": 1,
"seen_by": { "att_01HXYZ4QK3WJ8FN3M6QH7TZ8GR": true },
"hidden": 0,
"deleted": 0,
"edited": 0,
"is_event": 0,
"delivered": 1,
"behavior": 0,
"original": "{...raw provider payload...}"
}
}Errors
Every error response follows the same envelope:
titlestringrequired
Short error title.
detailstringoptional
Human-readable explanation.
instancestringoptional
Request identifier for support.
typestringrequired
Error type identifier.
statusnumberrequired
HTTP status code.
401 Unauthorized13 types
Credentials are missing, expired, or otherwise invalid.
errors/missing_credentials- Some credentials are necessary to perform the request.errors/multiple_sessions- LinkedIn limits multiple sessions on certain Recruiter accounts. Use the cookie connection method.errors/invalid_checkpoint_solution- The checkpoint resolution did not pass successfully. Retry.errors/invalid_proxy_credentials- The provided proxy credentials are invalid.errors/checkpoint_error- The checkpoint does not appear to be resolvable.errors/invalid_credentials- The provided credentials are invalid.errors/expired_credentials- Credentials have expired. Reconnect the account.errors/insufficient_privileges- This resource is out of your API-key scopes.errors/disconnected_account- The account is disconnected from the provider service.errors/disconnected_feature- The service you're trying to reach is disconnected.errors/invalid_credentials_but_valid_account_imap- IMAP/SMTP credentials are invalid but the account is otherwise valid.errors/expired_link- This link has expired. Generate a new one.errors/wrong_account- The provided credentials do not match the correct account.
403 Forbidden9 types
Authenticated but the account is restricted or the action is not allowed.
errors/account_restricted- The account has been restricted by the provider.errors/account_mismatch- This action cannot be done with your account.errors/insufficient_permissions- Valid authentication but insufficient permissions to perform the request.errors/session_mismatch- Token user id does not match client session id.errors/feature_not_subscribed- The requested feature has not been subscribed or authenticated properly.errors/subscription_required- A subscription is required to use this feature.errors/unknown_authentication_context- An additional step seems necessary to complete login.errors/action_required- An additional step is required.errors/resource_access_restricted- You don't have access to this resource.
404 Not Found2 types
The chat id does not match any chat visible to this API key.
errors/resource_not_found- The requested resource was not found.errors/invalid_resource_identifier- The provided identifier is not a valid chat id.
500 Internal Server Error3 types
Something went wrong on our side or with the upstream provider.
errors/unexpected_error- Something went wrong.errors/provider_error- The provider is experiencing operational problems. Retry later.errors/authentication_intent_error- The current authentication intent was killed after failure.
503 Service Unavailable5 types
postpress is temporarily unable to handle the request.
errors/no_client_session- No client session is currently running.errors/no_channel- No channel to client session.errors/no_handler- Handler missing for that request.errors/network_down- Network is down on the server side. Retry shortly.errors/service_unavailable- Service temporarily unavailable. Retry later.
504 Gateway Timeout1 types
The upstream provider did not respond in time.
errors/request_timeout- Request timed out. Retry, and contact support if it persists.
Updated May 2026