Skip to main content
POST
Report an action's outcome

Authorizations

X-API-Key
string
header
required

Path Parameters

action_id
string<uuid>
required

Body

application/json
status
enum<string>
required

succeeded | failed | skipped — the terminal state the agent reached.

Available options:
queued,
claimed,
succeeded,
failed,
rejected,
skipped
duration_ms
integer | null
Required range: x >= 0
error_code
string | null
Maximum string length: 200
error_message
string | null
Maximum string length: 2000
outcome
Outcome · object | null

Response

Successful Response

account_id
string<uuid>
required
claimed_at
string<date-time> | null
required
duration_ms
integer | null
required
error_code
string | null
required
error_message
string | null
required
expires_at
string<date-time> | null
required
finished_at
string<date-time> | null
required
id
string<uuid>
required
kind
enum<string>
required

What the browser agent is being asked to do.

The three CHECK_*/READ_* kinds are housekeeping — they read our own outbound invitations and our own conversations to detect what the contact did — so they are free and deliberately excluded from the priced kinds below.

CHECK_INBOX scans the conversation list for threads with new inbound activity; READ_CONVERSATION opens one of them and reads it in full. The split keeps LinkedIn activity proportional to real replies: the cheap scan runs on every sweep, the expensive read only where the scan saw a change.

LIKE_LATEST_POST targets the contact's most recent post at the moment the browser runs it. A contact with no posts is not a failure: the driver reports the action SKIPPED, and the sequence advances either way.

A PROFILE_VIEW outcome MAY additionally carry open_profile: bool — whether the member's Premium "Open Profile" toggle is on, read off the page when the driver can see it. The open-profile condition resolves from that observation and never from a guess, so a driver that cannot tell simply omits the key.

Available options:
profile_view,
connection_request,
send_message,
inmail,
withdraw_connection_request,
follow_contact,
like_latest_post,
check_sent_invitations,
check_inbox,
read_conversation
outcome
Outcome · object | null
required
params
Params · object
required
priority
integer
required
queued_at
string<date-time>
required
source_enrolment_id
string<uuid> | null
required
source_step_id
string<uuid> | null
required
status
enum<string>
required

Where one queued action stands.

Governor-deferral is deliberately NOT a status: an action whose kind has hit its daily cap stays QUEUED and is simply not handed out, with the reason travelling on the hand-out response instead. A DEFERRED row would make the queue lie about what is still waiting to happen.

SKIPPED is "not applicable" (no LinkedIn URL, already connected); REJECTED is "a human refused it"; FAILED is "we tried and could not".

Available options:
queued,
claimed,
succeeded,
failed,
rejected,
skipped