Skip to content
Docs

React to a post or a comment

POSTdirect.lempile.com/api/v1/posts/reaction

Adds the account's reaction (or the page's, with as_organization). Reacting again with another type replaces it on LinkedIn.

Authentication

X-API-KEY header·A Lempile Direct key, one per workspace, made in Lempile's dashboard.

Query parameters

  • account_idstring

    The account that writes, when the body doesn't name it.

  • dry_runboolean

    true: answer the write's plan (DryRun, 200) and send nothing to LinkedIn.

    Defaultfalse

Headers

  • Idempotency-Keystring

    The 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_idstringrequired

    The account that writes (or ?account_id=). Required.

  • post_idstringrequired

    The post: its social_id (urn:li:activity:…, or a ugcPost/share urn), its id, or its URL.

  • comment_idstring

    React to this comment of the post instead (its id, digits).

  • reaction_typestring
    One oflikecelebratesupportloveinsightfulfunnyDefaultlike
  • as_organizationstring

    Write as this company page (its id, digits). The account must be an admin of the page.

Responses

200

With ?dry_run=true: the write's plan. Nothing is sent.

›

application/json

  • objectstringrequired
    AlwaysDryRun
  • routestringrequired

    Direct's name for the write, e.g. chats.message, posts.create, chats.start.inmail.

  • methodstringrequired

    The HTTP method of LinkedIn's call.

  • pathstringrequired

    LinkedIn's own endpoint the write would call (/voyager/api/...).

  • bodyobject | nullrequired

    The exact body LinkedIn would get. Files appear as $upload:N until uploaded; an invitation's shared secret is masked.

  • statusintegerrequired

    The status the real write answers (200, 201 or 204).

  • uploadsarray of object

    Each file's registration with LinkedIn's uploader, in order.

    ›Show fields
    • methodstring
    • pathstring
    • bodyobject
    • thenstring
    • content_typestring
    • fileobject

      A voice note: its length (duration_ms), what it came as (from, container/codec) and whether its AAC audio was kept or encoded (audio).

  • multiphotoobject

    Several images on one post: the call that groups them.

    ›Show fields
    • methodstring
    • pathstring
    • bodyobject
  • checkedarray of string

    What Direct read to plan it (e.g. profile relationship, compose option, post author).

201

Created

›

application/json

  • objectstringrequired
    AlwaysReactionAdded
400

A required parameter missing (errors/missing_parameters), or one that isn't valid (errors/invalid_parameters, errors/invalid_url, errors/content_too_large).

›

application/json

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

401

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

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

403

LinkedIn 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).

›

application/json

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

404

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

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

409

errors/conflict: a write with this Idempotency-Key is still running.

›

application/json

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

422

A 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.

›

application/json

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

429

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

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

500

errors/provider_error: LinkedIn answered something Direct couldn't read (nothing was written). errors/unexpected_error: Direct failed.

›

application/json

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

501

errors/feature_not_implemented: Direct doesn't do this (yet). A Unipile client can fall back to Unipile.

›

application/json

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

503

errors/network_down: the account's proxy or browser server didn't answer. Nothing was sent.

›

application/json

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

504

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

  • titlestringrequired

    A short title, e.g. Too many requests.

  • detailstringrequired

    What happened, in plain words. Never an account's data.

  • typestringrequired

    Unipile's error type: errors/<kind>. Branch on this, not on detail.

  • statusintegerrequired

    The HTTP status again.

  • retry_afterinteger

    Seconds to wait before trying this account again. Only on 429; the Retry-After header carries the same value.

Was this page helpful?