sourceType + sourceIdentifier already exists).sourceType. For LinkedIn social listening, use the examples below.linkedinInbound, linkedinOutbound): pass sourceIdentifier as a LinkedIn/in/) or company/page (/company/, /showcase/, /school/) URL.linkedinPost): pass a LinkedIn post or activity URL as sourceIdentifier.linkedinKeywordSearch): omit sourceIdentifier; put search options in sourceMetakeyword required, min 3 chars; optional postedTime, authorTitle, sourceName).linkedinJobPosting): omit sourceIdentifier; put job search options in sourceMetajobTitle, jobLocation, postedTime, jobType, optional sourceName / field mapping).importFromWebhook): create a source that you can push selected rows into (for example after POST /discovery-search/find-verified-contacts). Find does not auto-save to a segment.sourceMeta.config.fieldMapping — each { sourceFieldName, hpFieldName } maps a key in contactsData to a Highperformr field from GET /schema/contact (writeAccessPath, e.g. contact.linkedIn).segmentId (top-level) attaches this source to an existing segment. You can also pass segmentId on bulk upsert.fieldMapping on that call.curl --location 'https://app.highperformr.ai/api/sources' \
--header 'x-api-key: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"sourceType": "linkedinInbound",
"sourceIdentifier": "https://www.linkedin.com/in/jamie-rivera-example"
}'{
"data": {
"id": "src_li_inbound_01",
"type": "sources",
"attributes": {
"sourceType": "linkedinInbound",
"sourceIdentifier": "https://www.linkedin.com/in/jamie-rivera-example",
"sourceMeta": {
"socialName": "Jamie Rivera",
"socialHandle": "jamie-rivera-example",
"platformName": "linkedin",
"interactionType": "inbound",
"profileImageUrl": "https://media.licdn.com/example.jpg"
},
"refreshStatus": null,
"createdAt": "2025-04-08T09:01:44.000Z"
}
}
}