conversations

Resolve conversation counterpart

Turn what a user pasted (a linkedin.com/in/ link, a Sales Navigator or Recruiter link, a bare slug or a raw URN) into the identity a thread can be born on: the canonical member id plus the other axes the answer carried, and the playtables person it links to. Call it before send_message when you only have a link.

The ladder runs cheapest first and stops at the first rung that answers: the normalizer names the one axis in the target; a URN decodes to the member id with no wire call; a slug is looked up against the team's playtables people, the sender profile's first-degree connections and the data corpus, and only then against a lite profile read, which spends one enrichment slot and can answer 429 with retry_after. result.resolution.source names the rung (free or paid).

People are never created here: a null person_sid is a normal answer, the thread stays unlinked. What a wire rung learned is written onto an existing person fill-if-empty, so the next resolve is free. No LinkedIn URL is returned or stored: the axes travel, a screen rebuilds a link from ln_nickname. 422 when the target is not a profile target, the URN will not decode, the profile stays unresolvable, or the sender profile has no LinkedIn account. A rung nobody could answer is a pause, never a verdict, and no rung behind it runs: 429 gtm_busy, 403 gtm_access_lost or gtm_scope_missing, 503 gtm_unavailable, gtm_bridge_unavailable or playtables_unavailable: try again later.

Contract:

  • MCP tool resolve_conversation_counterpart, registry package mcp.unibox/conversations, mount unibox.inbox.
  • Operation action, response envelope action.
  • Flags: none.
post/api/conversations/resolve-counterpart

Request

  • Base URL
    https://beta.getsales.io/unibox/v1
  • Auth
    HTTP bearer and API key in header Team-SID

Request body

sender_profile_sidstring required

The sender profile that would speak. It must have a LinkedIn account attached, else 422 sender_profile_has_no_linkedin_account; its connections and its enrichment slots are what the ladder spends.

targetstring required

What the user pasted: a linkedin.com/in/ link, a Sales Navigator or Recruiter profile link, a bare vanity slug, or a raw URN. Anything the normalizer cannot read as ONE profile axis answers 422 not_a_linkedin_profile.

Response

action success envelope.

successtrue required
operation'action' required
actionstring required

kebab-case verb; matches the route segment.

itemunknown required

Changes

No recorded changes to this operation across all 1 revision of this API.