Skip to content
Signal
Dashboard

Discovery

Start discovery now or configure recurring discovery for a campaign.

Discovery finds new accounts and their people for the campaign. There are two ways to start it:

  • Start one run now with start_discovery. Read Runs.
  • Set a schedule with update_campaign and discovery.frequency.
FieldTypeDescription
frequencyenumNullable. daily, weekly or monthly. Null when the discovery has no schedule.
countintegerNumber of accounts that one scheduled run looks for. Minimum 1. Default 25.
contacts_per_accountintegerNumber of people that a run looks for at each account. Minimum 1. Default 1.
statusenumactive or paused. A paused schedule starts no run. A discovery with no schedule reads paused.
next_run_attimestampNullable. Time of the next scheduled run. Null when no schedule exists or the schedule is paused.
  • discovery is null until the first discovery write: start_discovery, or update_campaign with discovery.
  • The first frequency value creates the schedule. The schedule time is the time of the request in UTC.
  • A change to count or status needs a schedule. Send frequency too when the discovery has no schedule.
  • update_campaign starts no run. Use start_discovery to start a run now.
  • Every update_campaign needs campaign.write. Changing frequency, count or status also needs schedule.write. Enabling the schedule or changing its spend while active needs run.write. contacts_per_account alone needs no schedule permission. See Permissions.
  • count and contacts_per_account on start_discovery apply to that run only. Use update_campaign with discovery to change saved settings.
  • A discovery run uses credits. A scheduled run that cannot start for lack of credits gets the status skipped.

Start one run

Send start_discovery with campaign_id, count and contacts_per_account. count is 1 to 1,000; omit it to use the stored campaign count (25 by default). contacts_per_account is at least 1; omit it to use the saved campaign value. Both overrides apply only to this run. They leave the saved targets, settings and schedule unchanged, including when the start fails. The request has no criteria override parameter. Change saved criteria through update_campaign. A concurrent change to discovery setup gives 409. See Retry safely.

curl --fail-with-body --request POST "$LINKT_API_URL/v2/runs/discovery" \
  --header "x-api-key: $LINKT_API_KEY" \
  --header "Content-Type: application/json" \
  --data "$(jq -cn --arg CAMPAIGN_ID "$CAMPAIGN_ID" '{"campaign_id":"0190a4e2-0000-7000-8000-000000000001","contacts_per_account":2,"count":10} | walk(if . == "0190a4e2-0000-7000-8000-000000000001" then $CAMPAIGN_ID else . end)')"

API reference: start_discovery

Schedules

Diagram

discovery: null means no discovery settings. A non-null discovery with frequency: null and status: paused has settings but no schedule. A non-null frequency and status: paused means an existing schedule is paused. The API cannot remove a schedule; pause it.

A monthly schedule made on day 29, 30 or 31 skips months without that day. Read next_run_at for the real time.

curl --fail-with-body --request PATCH "$LINKT_API_URL/v2/campaigns/$CAMPAIGN_ID" \
  --header "x-api-key: $LINKT_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"discovery":{"count":3,"frequency":"weekly","status":"active"}}'

API reference: update_campaign

curl --fail-with-body --request PATCH "$LINKT_API_URL/v2/campaigns/$CAMPAIGN_ID" \
  --header "x-api-key: $LINKT_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"discovery":{"frequency":"weekly","status":"paused"}}'

API reference: update_campaign

Results

result.completed counts accounts added by the run. It excludes people. result.discarded counts rejected candidates. A candidate can be rejected when it fails the campaign criteria or is already in the campaign. The result has no per-candidate reason or list of added IDs. See Run progress.

On this page