List a chat's messages
direct.lempile.com/api/v1/chats/{chat_id}/messagesNewest first, back to the first message (100 a LinkedIn call).
Authentication
X-API-KEY header·A Lempile Direct key, one per workspace, made in Lempile's dashboard.Path parameters
chat_idstringrequiredThe chat's id as Direct answers it (LinkedIn's own
2-…form, URL-encoded, works too).
Query parameters
account_idstringrequiredThe account that reads: a Lempile LinkedIn account id (
GET /accountslists them).limitintegerItems per page: 1 to 250 (default 20).
Default20≥ 1 · ≤ 250cursorstringA cursor a previous page gave.
beforestringOnly messages before this time (ISO 8601 UTC).
afterstringOnly messages after this time (ISO 8601 UTC).
sender_idstringOnly this sender's messages (a provider id).
Responses
200OK
›
application/json
objectstringrequiredAlwaysMessageListitemsarray of Messagerequired›Show fieldsHide fields
objectstringrequiredAlwaysMessageidstringrequiredLinkedIn's own message id (
2-…), URL-safe and unpadded.provider_idstringrequiredSame as
id.account_idstringrequiredchat_idstringrequiredLinkedIn's own thread id (
2-…), URL-safe and unpadded.chat_provider_idstringrequiredSame as
chat_id.sender_idstringrequiredThe sender's provider id.
sender_attendee_idstringrequiredSame as
sender_id.sender_urnstringrequiredtextstring | nullrequiredattachmentsarray of MessageAttachmentrequired›Show fieldsHide fields
idstringrequiredtypestringrequiredOne ofimgfileaudiourlstring | nullLinkedIn's signed link to the file (a voice note: its AAC .m4a,
audio/mp4). It expires.unavailablebooleanrequiredsizeobject›Show fieldsHide fields
widthintegerrequiredheightintegerrequired
stickerbooleanfile_namestringfile_sizeintegermimetypestring | nullvoice_notebooleanaudioonly: always true (a LinkedIn voice note).durationintegeraudioonly: its length in milliseconds, as LinkedIn gives it.
timestampstringrequiredUTC time, ISO 8601 with milliseconds:
2026-10-28T21:15:03.123Z.is_senderintegerrequired1 when the account sent it.
One of01reactionsarray of objectrequiredThe account's own reactions only.
›Show fieldsHide fields
valuestringrequiredsender_idstringrequiredis_senderbooleanrequired
seenintegerrequiredAlways 0 (not read).
One of01seen_byobjectrequiredAlways
{}.hiddenintegerrequiredAlways 0.
One of01deletedintegerrequired1 when its sender took it back.
One of01deleted_forstringAlwayseveryoneeditedintegerrequired1 when edited.
One of01is_eventintegerrequired1 for a conversation event LinkedIn writes itself.
One of01deliveredintegerrequiredAlways 1.
One of01behaviornullrequiredoriginalstringrequiredAlwaysmessage_typestringrequiredAlwaysMESSAGEattendee_typestringrequiredOne ofMEMBERORGANIZATIONattendee_distanceintegerThe sender's distance: 1 to 3, 4 out of network.
One of1234subjectstringAn InMail's subject.
account_typestringOnly on
GET /messages/{message_id}.AlwaysLINKEDIN
cursorstring | nullrequiredThe next page's cursor, or
nullon the last page. Opaque: send it back ascursor.
400A required parameter missing (errors/missing_parameters), or one that isn't valid (errors/invalid_parameters, errors/invalid_url, errors/content_too_large).
›
errors/missing_parameters), or one that isn't valid (errors/invalid_parameters, errors/invalid_url, errors/content_too_large).application/json
titlestringrequiredA short title, e.g.
Too many requests.detailstringrequiredWhat happened, in plain words. Never an account's data.
typestringrequiredUnipile's error type:
errors/<kind>. Branch on this, not ondetail.statusintegerrequiredThe HTTP status again.
retry_afterintegerSeconds to wait before trying this account again. Only on 429; the
Retry-Afterheader carries the same value.
401errors/missing_credentials: the X-API-KEY header is missing, wrong or revoked. errors/disconnected_account: LinkedIn signed the account out (or asks it for a security check); reconnect it.
›
errors/missing_credentials: the X-API-KEY header is missing, wrong or revoked. errors/disconnected_account: LinkedIn signed the account out (or asks it for a security check); reconnect it.application/json
titlestringrequiredA short title, e.g.
Too many requests.detailstringrequiredWhat happened, in plain words. Never an account's data.
typestringrequiredUnipile's error type:
errors/<kind>. Branch on this, not ondetail.statusintegerrequiredThe HTTP status again.
retry_afterintegerSeconds to wait before trying this account again. Only on 429; the
Retry-Afterheader carries the same value.
404errors/resource_not_found: an unknown or removed account, an account of another workspace (answered exactly the same), or nothing on LinkedIn with this id.
›
errors/resource_not_found: an unknown or removed account, an account of another workspace (answered exactly the same), or nothing on LinkedIn with this id.application/json
titlestringrequiredA short title, e.g.
Too many requests.detailstringrequiredWhat happened, in plain words. Never an account's data.
typestringrequiredUnipile's error type:
errors/<kind>. Branch on this, not ondetail.statusintegerrequiredThe HTTP status again.
retry_afterintegerSeconds to wait before trying this account again. Only on 429; the
Retry-Afterheader carries the same value.
429errors/too_many_requests: LinkedIn asked the account to slow down (it rests 15 minutes), its daily calls or writes are used up, or it's busy with other calls. Wait retry_after seconds.
›
errors/too_many_requests: LinkedIn asked the account to slow down (it rests 15 minutes), its daily calls or writes are used up, or it's busy with other calls. Wait retry_after seconds.application/json
titlestringrequiredA short title, e.g.
Too many requests.detailstringrequiredWhat happened, in plain words. Never an account's data.
typestringrequiredUnipile's error type:
errors/<kind>. Branch on this, not ondetail.statusintegerrequiredThe HTTP status again.
retry_afterintegerSeconds to wait before trying this account again. Only on 429; the
Retry-Afterheader carries the same value.
500errors/provider_error: LinkedIn answered something Direct couldn't read (nothing was written). errors/unexpected_error: Direct failed.
›
errors/provider_error: LinkedIn answered something Direct couldn't read (nothing was written). errors/unexpected_error: Direct failed.application/json
titlestringrequiredA short title, e.g.
Too many requests.detailstringrequiredWhat happened, in plain words. Never an account's data.
typestringrequiredUnipile's error type:
errors/<kind>. Branch on this, not ondetail.statusintegerrequiredThe HTTP status again.
retry_afterintegerSeconds to wait before trying this account again. Only on 429; the
Retry-Afterheader carries the same value.
503errors/network_down: the account's proxy or browser server didn't answer. Nothing was sent.
›
errors/network_down: the account's proxy or browser server didn't answer. Nothing was sent.application/json
titlestringrequiredA short title, e.g.
Too many requests.detailstringrequiredWhat happened, in plain words. Never an account's data.
typestringrequiredUnipile's error type:
errors/<kind>. Branch on this, not ondetail.statusintegerrequiredThe HTTP status again.
retry_afterintegerSeconds to wait before trying this account again. Only on 429; the
Retry-Afterheader carries the same value.
504errors/request_timeout: LinkedIn didn't answer in time. On a write: an unknown outcome (it may have been sent); it's never retried and its Idempotency-Key never writes again.
›
errors/request_timeout: LinkedIn didn't answer in time. On a write: an unknown outcome (it may have been sent); it's never retried and its Idempotency-Key never writes again.application/json
titlestringrequiredA short title, e.g.
Too many requests.detailstringrequiredWhat happened, in plain words. Never an account's data.
typestringrequiredUnipile's error type:
errors/<kind>. Branch on this, not ondetail.statusintegerrequiredThe HTTP status again.
retry_afterintegerSeconds to wait before trying this account again. Only on 429; the
Retry-Afterheader carries the same value.
Was this page helpful?