# Ids and links

> Actions hand things to each other: one action gives you an id, and you give that id to the next. There are different kinds, and they are not interchangeable.

- A post has two ids. The one in its link only works for reading the post. To comment or react, use the post's link or its `socialId`.
- A person has three ids: one on ordinary LinkedIn, another in Sales Navigator, another in Recruiter. Each only works in its own product. A profile link works wherever a profile link is asked for.

## connection id

One of your connected LinkedIn accounts. Optional everywhere it appears: left out, your first live account is used.

You get one from: `list_linkedin_accounts` (`accounts[].id`), `get_my_profile` (`accounts[].connectionId`), `list_connections` (`connections[].connectionId`), `list_connections` (`summary.accounts[].connectionId`), `list_sent_invitations` (`pendingInvitations[].connectionId`), `preview_withdraw_invitations` (`breakdown[].linkedinConnectionId`), `list_conversations` (`inbox[].linkedinConnectionId`), `get_conversation` (`connectionId`), `list_inmail` (`inmail[].connectionId`), `get_inmail_conversation` (`connectionId`), `get_inmail_credits` (`accounts[].connectionId`), `list_sales_navigator_contracts` (`accounts[].connectionId`), `who_is_waiting_on_me` (`waitingOnYou[].connectionId`), `who_went_cold` (`coldConversations[].connectionId`), `connections_never_messaged` (`summary.accounts[].connectionId`), `get_usage` (`connectionId`).

You give it to: `get_my_profile` (`connectionId`), `get_profile` (`connectionId`), `update_my_profile` (`connectionId`), `get_profile_details` (`connectionId`), `endorse_skill` (`connectionId`), `list_connections` (`connectionId`), `list_sent_invitations` (`connectionId`), `preview_withdraw_invitations` (`linkedinConnectionId`), `withdraw_invitations` (`linkedinConnectionId`), `send_invitation` (`connectionId`), `withdraw_invitation` (`connectionId`), `list_received_invitations` (`connectionId`), `respond_to_invitation` (`connectionId`), `list_followers` (`connectionId`), `get_conversation` (`connectionId`), `sync_inbox` (`linkedinConnectionId`), `send_message` (`connectionId`), `list_chats` (`connectionId`), `get_chat` (`connectionId`), `list_chat_messages` (`connectionId`), `list_chat_participants` (`connectionId`), `send_chat_message` (`connectionId`), `start_conversation` (`connectionId`), `set_chat_status` (`connectionId`), `resync_chat` (`connectionId`), `delete_chat` (`connectionId`), `list_messages` (`connectionId`), `get_message` (`connectionId`), `get_message_attachment` (`connectionId`), `edit_message` (`connectionId`), `delete_message` (`connectionId`), `react_to_message` (`connectionId`), `list_chat_attendees` (`connectionId`), `get_chat_attendee` (`connectionId`), `get_chat_attendee_picture` (`connectionId`), `list_attendee_chats` (`connectionId`), `list_attendee_messages` (`connectionId`), `resync_attendee_chats` (`connectionId`), `list_inmail` (`connectionId`), `get_inmail_conversation` (`connectionId`), `get_inmail_credits` (`connectionId`), `list_sales_navigator_contracts` (`connectionId`), `switch_sales_navigator_contract` (`connectionId`), `search_people` (`connectionId`), `search_linkedin` (`connectionId`), `lookup_search_ids` (`connectionId`), `get_company` (`connectionId`), `search_posts` (`connectionId`), `search_linkedin_people` (`connectionId`), `search_linkedin_companies` (`connectionId`), `search_linkedin_posts` (`connectionId`), `search_linkedin_jobs` (`connectionId`), `search_linkedin_sales_navigator_people` (`connectionId`), `search_linkedin_sales_navigator_companies` (`connectionId`), `search_linkedin_recruiter_people` (`connectionId`), `get_post_engagers` (`connectionId`), `create_post` (`connectionId`), `comment_on_post` (`connectionId`), `react_to_post` (`connectionId`), `get_post` (`connectionId`), `list_post_comments` (`connectionId`), `list_post_reactions` (`connectionId`), `list_posts_by_author` (`connectionId`), `list_comments_by_person` (`connectionId`), `list_reactions_by_person` (`connectionId`), `save_lead` (`connectionId`), `list_hiring_projects` (`connectionId`), `get_hiring_project` (`connectionId`), `move_recruiter_candidate` (`connectionId`), `reject_recruiter_applicant` (`connectionId`), `list_job_postings` (`connectionId`), `get_job_posting` (`connectionId`), `list_job_applicants` (`connectionId`), `get_job_applicant` (`connectionId`), `get_job_applicant_resume` (`connectionId`), `create_job_posting` (`connectionId`), `edit_job_posting` (`connectionId`), `publish_job_posting` (`connectionId`), `solve_job_posting_checkpoint` (`connectionId`), `close_job_posting` (`connectionId`), `who_is_waiting_on_me` (`connectionId`), `who_went_cold` (`connectionId`), `connections_never_messaged` (`connectionId`), `engagers_not_connected` (`connectionId`), `update_linkedin_connection` (`connectionId`), `get_usage` (`connectionId`).

## profile link

A link to a person: linkedin.com/in/<name>, linkedin.com/in/<member id>, or a Sales Navigator lead link.

You can copy it yourself. Open the person's profile on LinkedIn and copy the address from your browser. It looks like https://www.linkedin.com/in/their-name

You get one from: `search_people` (`people[].profileUrl`), `get_my_profile` (`accounts[].profileUrl`), `get_profile_details` (`publicProfileUrl`), `list_connections` (`connections[].profileUrl`), `list_sent_invitations` (`pendingInvitations[].profileUrl`), `list_received_invitations` (`invitations[].profileUrl`), `list_followers` (`followers[].profileUrl`), `list_conversations` (`inbox[].participantProfileUrl`), `get_conversation` (`participant.profileUrl`), `list_chat_participants` (`participants[].profileUrl`), `list_chat_attendees` (`attendees[].profileUrl`), `get_chat_attendee` (`profileUrl`), `list_inmail` (`inmail[].participant.profileUrl`), `get_inmail_conversation` (`participant.profileUrl`), `search_posts` (`posts[].author.profileUrl`), `search_people_sales_navigator` (`leads[].linkedinUrl`), `find_decision_makers` (`leads[].linkedinUrl`), `search_linkedin_people` (`results[].publicProfileUrl`), `search_linkedin_people` (`results[].profileUrl`), `search_linkedin_sales_navigator_people` (`results[].publicProfileUrl`), `get_post_engagers` (`reactors[].linkedinUrl`), `get_post_engagers` (`commenters[].linkedinUrl`), `list_post_comments` (`comments[].authorDetails.profileUrl`), `list_post_reactions` (`reactions[].author.profileUrl`), `list_job_applicants` (`applicants[].publicProfileUrl`), `get_job_applicant` (`publicProfileUrl`), `who_is_waiting_on_me` (`waitingOnYou[].profileUrl`), `who_went_cold` (`coldConversations[].profileUrl`), `connections_never_messaged` (`leads[].profileUrl`), `engagers_not_connected` (`leads[].profileUrl`).

You give it to: `get_profile` (`profileUrl`), `get_profile_details` (`person`), `send_invitation` (`profileUrl`), `get_conversation` (`conversationUrl`), `sync_inbox` (`conversationUrl`), `send_message` (`profileUrl`), `start_conversation` (`to`), `list_inmail` (`profileUrl`), `get_recent_posts` (`profileUrl`), `list_posts_by_author` (`author`), `list_comments_by_person` (`person`), `list_reactions_by_person` (`person`).

## public identifier

The name at the end of a person's public profile link (linkedin.com/in/<this>).

You can copy it yourself. It is the last part of the person's profile link: in https://www.linkedin.com/in/their-name it is their-name.

You get one from: `search_linkedin_people` (`results[].publicIdentifier`), `get_my_profile` (`accounts[].publicIdentifier`), `get_profile_details` (`publicIdentifier`), `list_sent_invitations` (`pendingInvitations[].publicIdentifier`), `search_people_sales_navigator` (`leads[].publicIdentifier`), `find_decision_makers` (`leads[].publicIdentifier`), `get_post` (`author.publicIdentifier`), `list_job_applicants` (`applicants[].publicIdentifier`).

You give it to: `get_profile` (`profileUrl`), `get_recent_posts` (`profileUrl`).

## member id

LinkedIn's internal id of a person on ordinary LinkedIn: starts with ACo or ADo. Sales Navigator and Recruiter use a different id for the same person.

You get one from: `get_profile_details` (`providerId`), `get_my_profile` (`accounts[].providerId`), `list_sent_invitations` (`pendingInvitations[].providerId`), `get_conversation` (`participant.providerId`), `list_chats` (`chats[].attendeeProviderId`), `get_chat` (`attendeeProviderId`), `list_chat_messages` (`messages[].senderId`), `list_chat_participants` (`participants[].providerId`), `list_messages` (`messages[].senderId`), `get_message` (`senderId`), `list_chat_attendees` (`attendees[].providerId`), `get_chat_attendee` (`providerId`), `list_attendee_chats` (`chats[].attendeeProviderId`), `list_attendee_messages` (`messages[].senderId`), `search_people` (`people[].providerId`), `search_posts` (`posts[].author.providerId`), `search_linkedin_people` (`results[].id`), `get_post_engagers` (`reactors[].providerId`), `get_post_engagers` (`commenters[].providerId`), `list_post_reactions` (`reactions[].author.id`).

You give it to: `get_profile_details` (`person`), `endorse_skill` (`profileId`), `list_followers` (`of`), `start_conversation` (`to`), `get_recent_posts` (`providerId`), `create_post` (`mentions.profileId`), `comment_on_post` (`mentions.profileId`), `list_posts_by_author` (`author`), `list_comments_by_person` (`person`), `list_reactions_by_person` (`person`).

## Sales Navigator id

A person's id in Sales Navigator: starts with ACw. Not accepted where a member id is asked for.

You get one from: `search_linkedin_sales_navigator_people` (`results[].id`), `search_people_sales_navigator` (`leads[].providerId`), `find_decision_makers` (`leads[].providerId`).

You give it to: `get_profile_details` (`person`), `start_conversation` (`to`), `get_recent_posts` (`providerId`), `save_lead` (`lead`).

## Sales Navigator lead link

A Sales Navigator lead link, linkedin.com/sales/lead/<Sales Navigator id>,….

You can copy it yourself. Open the lead in Sales Navigator and copy the address from your browser. It starts with https://www.linkedin.com/sales/lead/

You get one from: `search_people_sales_navigator` (`leads[].salesNavLeadUrl`), `find_decision_makers` (`leads[].salesNavLeadUrl`).

You give it to: `list_inmail` (`profileUrl`), `save_lead` (`lead`).

## Recruiter id

A person's id in Recruiter: starts with AE. Not accepted where a member id is asked for.

You get one from: `search_linkedin_recruiter_people` (`results[].id`).

You give it to: `get_profile_details` (`person`), `start_conversation` (`to`), `move_recruiter_candidate` (`candidateId`), `reject_recruiter_applicant` (`applicantId`).

## company id

LinkedIn's id of a company page: digits only.

You get one from: `search_linkedin_companies` (`results[].id`), `get_profile_details` (`workExperience[].companyId`), `get_company` (`id`), `search_companies` (`companies[].companyId`), `list_funding_signals` (`companies[].companyId`), `search_linkedin_sales_navigator_companies` (`results[].id`).

You give it to: `update_my_profile` (`experience.companyId`), `list_followers` (`of`), `get_company` (`company`), `search_people_sales_navigator` (`companyIds`), `count_people_sales_navigator` (`companyIds`), `create_post` (`mentions.profileId`), `comment_on_post` (`mentions.profileId`), `list_posts_by_author` (`author`).

## company link

A link to a company page (linkedin.com/company/<name>).

You can copy it yourself. Open the company's page on LinkedIn and copy the address from your browser. It looks like https://www.linkedin.com/company/their-name

You get one from: `search_linkedin_companies` (`results[].profileUrl`), `get_company` (`profileUrl`).

You give it to: `get_company` (`company`).

## company messaging id

The id a company page is written to at. Different from its company id.

You get one from: `get_company` (`messaging.id`).

You give it to: `start_conversation` (`to`).

## organization id

The id of a company page you administer, to act as that page.

You give it to: `create_post` (`asOrganization`), `comment_on_post` (`asOrganization`), `react_to_post` (`asOrganization`).

## post link

A link to a post.

You can copy it yourself. On LinkedIn, click the More icon (the three dots) at the top right of the post, then "Copy link to post".

You get one from: `search_posts` (`posts[].url`), `get_profile` (`recentPosts[].url`), `search_linkedin_posts` (`results[].shareUrl`), `get_recent_posts` (`posts[].url`), `get_post` (`shareUrl`), `list_posts_by_author` (`posts[].shareUrl`).

You give it to: `get_post_engagers` (`postUrl`), `create_post` (`repostOf`), `comment_on_post` (`postUrl`), `react_to_post` (`postUrl`), `get_post` (`post`), `list_post_comments` (`post`), `list_post_reactions` (`post`), `engagers_not_connected` (`postUrl`).

## post id

The id of a post as it appears in its link. Reading the post takes it; commenting and reacting need the post social id.

You get one from: `search_linkedin_posts` (`results[].id`), `create_post` (`postId`), `get_post` (`id`), `list_posts_by_author` (`posts[].id`).

You give it to: `get_post` (`post`), `list_post_comments` (`post`), `list_post_reactions` (`post`).

## post social id

The id LinkedIn files a post's comments and reactions under: urn:li:activity:<digits>, urn:li:ugcPost:<digits> or urn:li:share:<digits>.

You get one from: `search_posts` (`posts[].socialId`), `search_linkedin_posts` (`results[].socialId`), `get_post` (`socialId`), `list_posts_by_author` (`posts[].socialId`).

You give it to: `get_post_engagers` (`postUrl`), `create_post` (`repostOf`), `comment_on_post` (`postUrl`), `react_to_post` (`postUrl`), `get_post` (`post`), `list_post_comments` (`post`), `list_post_reactions` (`post`), `engagers_not_connected` (`postUrl`).

## comment id

One comment on a post.

You get one from: `list_post_comments` (`comments[].id`), `comment_on_post` (`commentId`), `list_comments_by_person` (`comments[].id`).

You give it to: `comment_on_post` (`replyToCommentId`), `react_to_post` (`commentId`), `list_post_comments` (`commentId`), `list_post_reactions` (`commentId`).

## chat id

One conversation.

You get one from: `list_chats` (`chats[].id`), `get_conversation` (`chatId`), `send_message` (`conversationId`), `get_chat` (`id`), `list_chat_messages` (`messages[].chatId`), `send_chat_message` (`chatId`), `start_conversation` (`chatId`), `list_messages` (`messages[].chatId`), `get_message` (`chatId`), `list_attendee_chats` (`chats[].id`), `list_attendee_messages` (`messages[].chatId`), `list_inmail` (`inmail[].chatId`), `get_inmail_conversation` (`chatId`).

You give it to: `send_message` (`conversationId`), `get_chat` (`chatId`), `list_chat_messages` (`chatId`), `list_chat_participants` (`chatId`), `send_chat_message` (`chatId`), `set_chat_status` (`chatId`), `resync_chat` (`chatId`), `delete_chat` (`chatId`), `get_inmail_conversation` (`chatId`).

## message id

One message.

You get one from: `list_chat_messages` (`messages[].id`), `send_message` (`messageId`), `get_chat` (`lastMessage.id`), `send_chat_message` (`messageId`), `start_conversation` (`messageId`), `list_messages` (`messages[].id`), `get_message` (`id`), `list_attendee_messages` (`messages[].id`).

You give it to: `send_chat_message` (`replyToMessageId`), `get_message` (`messageId`), `get_message_attachment` (`messageId`), `edit_message` (`messageId`), `delete_message` (`messageId`), `react_to_message` (`messageId`).

## attendee id

One participant of your conversations, as the inbox knows them. Not their member id.

You get one from: `list_chat_attendees` (`attendees[].id`), `list_chat_messages` (`messages[].senderAttendeeId`), `list_chat_participants` (`participants[].id`), `list_messages` (`messages[].senderAttendeeId`), `get_message` (`senderAttendeeId`), `get_chat_attendee` (`id`), `list_attendee_messages` (`messages[].senderAttendeeId`).

You give it to: `list_chat_messages` (`senderId`), `list_messages` (`senderId`), `get_chat_attendee` (`attendeeId`), `get_chat_attendee_picture` (`attendeeId`), `list_attendee_chats` (`attendeeId`), `list_attendee_messages` (`attendeeId`), `resync_attendee_chats` (`attendeeId`).

## attachment id

One file attached to a message.

You get one from: `list_chat_messages` (`messages[].attachments[].id`), `list_messages` (`messages[].attachments[].id`), `get_message` (`attachments[].id`), `list_attendee_messages` (`messages[].attachments[].id`).

You give it to: `get_message_attachment` (`attachmentId`).

## invitation id

One invitation you received and have not answered.

You get one from: `list_received_invitations` (`invitations[].invitationId`).

You give it to: `respond_to_invitation` (`invitationId`), `start_conversation` (`invitationId`).

## sent invitation id

One invitation you sent that is still unanswered. Not accepted where an invitation id is asked for.

You get one from: `list_sent_invitations` (`pendingInvitations[].invitationId`), `send_invitation` (`invitationId`).

You give it to: `withdraw_invitation` (`invitationId`).

## search filter id

LinkedIn's id for a place, company, school, industry and the like. Search filters take these, never the name. Each kind comes from lookup_search_ids with a different `type`.

You get one from: `lookup_search_ids` (`matches[].id`), `update_my_profile` (`locationOptions[].id`).

You give it to: `update_my_profile` (`locationId`), `search_linkedin_people` (`industry`), `search_linkedin_people` (`location`), `search_linkedin_people` (`company`), `search_linkedin_people` (`pastCompany`), `search_linkedin_people` (`school`), `search_linkedin_people` (`service`), `search_linkedin_people` (`connectionsOf`), `search_linkedin_people` (`followersOf`), `search_linkedin_companies` (`industry`), `search_linkedin_companies` (`location`), `search_linkedin_posts` (`postedBy`), `search_linkedin_posts` (`mentioning`), `search_linkedin_posts` (`author`), `search_linkedin_jobs` (`region`), `search_linkedin_jobs` (`location`), `search_linkedin_jobs` (`industry`), `search_linkedin_jobs` (`function`), `search_linkedin_jobs` (`role`), `search_linkedin_jobs` (`company`), `search_linkedin_sales_navigator_people` (`savedSearchId`), `search_linkedin_sales_navigator_people` (`recentSearchId`), `search_linkedin_sales_navigator_people` (`location`), `search_linkedin_sales_navigator_people` (`locationByPostalCode`), `search_linkedin_sales_navigator_people` (`industry`), `search_linkedin_sales_navigator_people` (`groups`), `search_linkedin_sales_navigator_people` (`school`), `search_linkedin_sales_navigator_people` (`company`), `search_linkedin_sales_navigator_people` (`companyLocation`), `search_linkedin_sales_navigator_people` (`pastCompany`), `search_linkedin_sales_navigator_people` (`function`), `search_linkedin_sales_navigator_people` (`role`), `search_linkedin_sales_navigator_people` (`pastRole`), `search_linkedin_sales_navigator_people` (`connectionsOf`), `search_linkedin_sales_navigator_people` (`persona`), `search_linkedin_sales_navigator_people` (`accountLists`), `search_linkedin_sales_navigator_people` (`leadLists`), `search_linkedin_sales_navigator_companies` (`savedSearchId`), `search_linkedin_sales_navigator_companies` (`recentSearchId`), `search_linkedin_sales_navigator_companies` (`industry`), `search_linkedin_sales_navigator_companies` (`location`), `search_linkedin_sales_navigator_companies` (`locationByPostalCode`), `search_linkedin_sales_navigator_companies` (`departmentHeadcount`), `search_linkedin_sales_navigator_companies` (`departmentHeadcountGrowth`), `search_linkedin_sales_navigator_companies` (`technologies`), `search_linkedin_sales_navigator_companies` (`savedAccounts`), `search_linkedin_sales_navigator_companies` (`accountLists`), `search_linkedin_recruiter_people` (`savedSearch`), `search_linkedin_recruiter_people` (`savedFilter`), `search_linkedin_recruiter_people` (`location`), `search_linkedin_recruiter_people` (`industry`), `search_linkedin_recruiter_people` (`role`), `search_linkedin_recruiter_people` (`skills`), `search_linkedin_recruiter_people` (`company`), `search_linkedin_recruiter_people` (`currentCompany`), `search_linkedin_recruiter_people` (`pastCompany`), `search_linkedin_recruiter_people` (`school`), `search_linkedin_recruiter_people` (`degree`), `search_linkedin_recruiter_people` (`groups`), `search_linkedin_recruiter_people` (`function`), `search_linkedin_recruiter_people` (`hiringProjects`), `create_post` (`audience`), `save_lead` (`listId`), `list_job_applicants` (`includeDegree`), `list_job_applicants` (`excludeDegree`), `create_job_posting` (`jobTitle.id`), `create_job_posting` (`company.id`), `create_job_posting` (`location`), `create_job_posting` (`recruiter.functions`), `create_job_posting` (`recruiter.industries`), `create_job_posting` (`recruiter.skills`), `edit_job_posting` (`jobTitle.id`), `edit_job_posting` (`company.id`), `edit_job_posting` (`location`), `edit_job_posting` (`recruiter.functions`), `edit_job_posting` (`recruiter.industries`), `edit_job_posting` (`recruiter.skills`).

## skill endorsement id

One skill on one person's profile. A number, not text.

You get one from: `get_profile_details` (`skills[].endorsementId`).

You give it to: `endorse_skill` (`skillEndorsementId`).

## job id

One of your job postings. A draft has one too.

You get one from: `list_job_postings` (`jobPostings[].id`), `list_hiring_projects` (`projects[].jobPosting.id`), `get_hiring_project` (`jobPosting.id`), `get_job_posting` (`id`), `create_job_posting` (`jobId`), `edit_job_posting` (`jobId`), `publish_job_posting` (`jobId`), `solve_job_posting_checkpoint` (`jobId`).

You give it to: `start_conversation` (`recruiter.jobPostingId`), `create_post` (`jobPostingId`), `get_job_posting` (`jobId`), `list_job_applicants` (`jobId`), `edit_job_posting` (`jobId`), `publish_job_posting` (`draftId`), `solve_job_posting_checkpoint` (`draftId`), `close_job_posting` (`jobId`).

## applicant id

One applicant to one of your job postings.

You get one from: `list_job_applicants` (`applicants[].id`), `get_job_applicant` (`id`).

You give it to: `start_conversation` (`applicantId`), `get_job_applicant` (`applicantId`), `get_job_applicant_resume` (`applicantId`).

## hiring project id

One Recruiter hiring project.

You get one from: `list_hiring_projects` (`projects[].id`), `get_hiring_project` (`id`), `create_job_posting` (`projectId`).

You give it to: `start_conversation` (`recruiter.hiringProjectId`), `get_hiring_project` (`projectId`), `move_recruiter_candidate` (`hiringProjectId`), `reject_recruiter_applicant` (`hiringProjectId`).

## contract id

One Sales Navigator contract your account can use.

You get one from: `list_sales_navigator_contracts` (`accounts[].contracts[].id`), `list_inmail` (`inmail[].sentFromContract`), `get_inmail_conversation` (`sentFromContract`), `get_inmail_credits` (`accounts[].salesNavigatorContracts.contracts[].id`), `list_sales_navigator_contracts` (`accounts[].activeContractId`).

You give it to: `switch_sales_navigator_contract` (`contractId`).

## conversation link

What the inbox tools address a conversation by: the other person's profile link, or a linkedin.com/messaging/thread/… link.

You get one from: `list_conversations` (`inbox[].conversationUrl`).

You give it to: `get_conversation` (`conversationUrl`), `sync_inbox` (`conversationUrl`).

## read key

What marks one inbox conversation read.

You get one from: `list_conversations` (`inbox[].readKey`).

You give it to: `mark_read` (`readKey`).

## task id

An inbox refresh that runs in the background.

You get one from: `sync_inbox` (`taskIds[]`), `sync_inbox` (`taskId`).

You give it to: `get_send_status` (`taskId`).

## campaign id

One outreach campaign.

You get one from: `preview_withdraw_invitations` (`breakdown[].campaignId`).

You give it to: `preview_withdraw_invitations` (`campaignId`), `withdraw_invitations` (`campaignId`).

## profile entry id

One experience or education entry on your own profile.

You get one from: `update_my_profile` (`experience[].id`), `update_my_profile` (`education[].id`).

You give it to: `update_my_profile` (`experience.id`), `update_my_profile` (`education.id`).

## cursor

Where the next page starts. Pass it back to the SAME action with the same other inputs; null means there is no next page.
