Skip to main content
POST
Create data source

Authorizations

Authorization
string
header
required

Access token issued by gs.service.id. Its access_identity claim carries team_sid, actor_sid and actor_type, and that team scope is authoritative.

Team-SID
string
header
required

Team scope for tokens that do not carry one. Ignored when the token already names a team.

Body

application/json

Request body of create_data_source.

playtable_sid
string
required

Target table (pt_tb_…) receiving promoted objects. Required for every kind.

Required string length: 18
Pattern: ^pt_tb_
type
enum<string>
required

Required. ai_search | sender_search | post_engagement | find_people | webhook. csv is accepted by the shape rule and then refused with the way in: upload the file through upload-csv, then confirm it with import_data_source.

Available options:
ai_search,
sender_search,
post_engagement,
find_people,
csv,
webhook
url
string<uri>

LinkedIn link of an ai_search, sender_search or post_engagement: /search/results, /sales/search, /sales/lists, /talent/search?searchHistoryId=, /mynetwork, /messaging; post_engagement: /posts, /feed/update, lnkd.in, /in/{slug}, /company/{slug}.

Maximum string length: 2048
object_type
enum<string>

What the rows become: people | company. Required for a description-mode ai_search. Elsewhere optional and checked for agreement with the link (or with the kind: find_people and webhook always bring people).

Available options:
people,
company
name
string

Defaults from the kind and its link ("Sales Navigator saved search", "My network", "AI search: ").

Required string length: 1 - 255
sender_profile_sid
string

The sender profile whose own LinkedIn account collects (ub_sp_); required for sender_search and post_engagement, prohibited elsewhere. Must be live, hold a LinkedIn account and the licence the link needs (Sales Navigator, or an active Recruiter session).

Required string length: 18
Pattern: ^ub_sp_
payload
object

The kind's own keys: ai_search {prompt | filters}, sender_search {surface, repeat}, post_engagement {target, window, relevance, collect, repeat}, find_people {company_sids, company_filter, per_company_limit, prompt, filters}, webhook {records_path}.

field_mapping
object[]

Optional override for type=webhook (absent = attribute auto-detect at promotion); prohibited for the three search kinds, whose collector emits the canonical parser shape. A csv source gets its mapping at import.

tag_sids
string[]

Each tag must exist (cr_tg_…); applied to every promoted object.

Required string length: 18
Pattern: ^cr_tg_
on_duplicate
enum<string>

Default 'skip'.

Available options:
skip,
move
add_tags_to_duplicate
boolean

Default false - merge tag_sids onto matched duplicates.

qualify
object | null

The source gate, "Check on save": {on, criterion}. A closed object (an unknown key is 422 rule invalid_qualify); on with no words is refused.

Response

create success envelope.

success
enum<boolean>
required
Available options:
true
operation
enum<string>
required
Available options:
create
item
object
required
already_exists
boolean
required
meta
object
required
ingest_url
string

type=webhook only: {api_base}/external/ingest/{ingest_key} - the endpoint the customer CRM POSTs records to. The URL IS the credential: hand it to the user over a channel they trust, and rotate it to revoke.