Mark a chat read or unread, mute it
direct.lempile.com/api/v1/chats/{chat_id}setReadStatus (value: true marks it read) or setMuteStatus. The chat is read first (unknown answers 404). Unipile's WhatsApp and Telegram actions answer 422 errors/not_supported_by_provider.
Authentication
X-API-KEY header·A Lempile Direct key, one per workspace, made in Lempile's dashboard.Path parameters
chat_idstringrequiredLinkedIn's thread id (
2-…, as Direct answers it).
Query parameters
account_idstringThe account that writes, when the body doesn't name it.
dry_runbooleantrue: answer the write's plan (DryRun, 200) and send nothing to LinkedIn.Defaultfalse
Headers
Idempotency-KeystringThe same key (per account) never writes twice: a repeat answers the first answer for 7 days; a repeat while the first runs answers 409.
≥ 1 chars · ≤ 200 chars
Request body
account_idstringactionstringrequiredLinkedIn has
setReadStatusandsetMuteStatus; the others (WhatsApp's and Telegram's) answer 422errors/not_supported_by_provider.One ofsetReadStatussetMuteStatussetArchiveStatussetPinnedStatusaddParticipantremoveParticipantsetLabelgetInviteLinkvaluebooleanrequired
Responses
200Done, or with ?dry_run=true the plan.
›
?dry_run=true the plan.application/json
ChatPatchedChatPatched›Show fieldsHide fields
objectstringrequiredAlwaysChatPatched
DryRunDryRunA write's plan, answered with
?dry_run=true: every call it would send. Nothing is sent to a LinkedIn write endpoint. Reads made to plan it (a profile, a compose option, the post) do happen and count in the account's calls.›Show fieldsHide fields
objectstringrequiredAlwaysDryRunroutestringrequiredDirect's name for the write, e.g.
chats.message,posts.create,chats.start.inmail.methodstringrequiredThe HTTP method of LinkedIn's call.
pathstringrequiredLinkedIn's own endpoint the write would call (
/voyager/api/...).bodyobject | nullrequiredThe exact body LinkedIn would get. Files appear as
$upload:Nuntil uploaded; an invitation's shared secret is masked.statusintegerrequiredThe status the real write answers (200, 201 or 204).
uploadsarray of objectEach file's registration with LinkedIn's uploader, in order.
›Show fieldsHide fields
methodstringpathstringbodyobjectthenstringcontent_typestringfileobjectA voice note: its length (
duration_ms), what it came as (from, container/codec) and whether its AAC audio was kept or encoded (audio).
multiphotoobjectSeveral images on one post: the call that groups them.
›Show fieldsHide fields
methodstringpathstringbodyobject
checkedarray of stringWhat Direct read to plan it (e.g.
profile relationship,compose option,post author).
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.
403LinkedIn refused it for this account (errors/resource_access_restricted, errors/account_restricted, errors/action_required), or the account doesn't write through Direct (errors/insufficient_permissions), or it needs Sales Navigator or Recruiter (errors/feature_not_subscribed).
›
errors/resource_access_restricted, errors/account_restricted, errors/action_required), or the account doesn't write through Direct (errors/insufficient_permissions), or it needs Sales Navigator or Recruiter (errors/feature_not_subscribed).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.
409errors/conflict: a write with this Idempotency-Key is still running.
›
errors/conflict: a write with this Idempotency-Key is still running.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.
422A write LinkedIn refuses, or that the checks before it refuse: errors/already_connected, errors/already_invited_recently, errors/cannot_invite_attendee, errors/invalid_recipient, errors/cannot_resend_yet, errors/limit_exceeded, errors/connection_limit_reached, errors/no_connection_with_recipient, errors/not_allowed_inmail, errors/insufficient_credits, errors/invalid_post, errors/unprocessable_entity, errors/invalid_parameters, errors/invalid_message (a voice note over 60 seconds), errors/action_already_performed (a message already deleted), errors/not_supported_by_provider.
›
errors/already_connected, errors/already_invited_recently, errors/cannot_invite_attendee, errors/invalid_recipient, errors/cannot_resend_yet, errors/limit_exceeded, errors/connection_limit_reached, errors/no_connection_with_recipient, errors/not_allowed_inmail, errors/insufficient_credits, errors/invalid_post, errors/unprocessable_entity, errors/invalid_parameters, errors/invalid_message (a voice note over 60 seconds), errors/action_already_performed (a message already deleted), errors/not_supported_by_provider.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.
501errors/feature_not_implemented: Direct doesn't do this (yet). A Unipile client can fall back to Unipile.
›
errors/feature_not_implemented: Direct doesn't do this (yet). A Unipile client can fall back to Unipile.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?