Skip to content
Docs

Delete a post

DELETEdirect.lempile.com/api/v1/posts/{post_id}

Reads the post first (it must be the account's own, or a page's), then deletes it. The account's own plain repost (its repost_id) is undone as LinkedIn's "Delete repost" does; the reposted post stays. Answers 204 with an empty body.

Authentication

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

Path parameters

  • post_idstringrequired

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

Query parameters

  • account_idstringrequired

    The account that writes.

  • 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

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

204

Deleted (empty body).

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?