Skip to content
Signal
Dashboard

Import accounts or people

Research records from JSON rows or a CSV file.

Import researches the records from your list and adds the results to a campaign.

Paid research

Both import methods start research and use credits. Read Credits.

Before you start

  • Complete the HTTP quickstart. Set LINKT_API_URL and LINKT_API_KEY.
  • Create a campaign. Set CAMPAIGN_ID to the returned id.
  • Use an API key with effective permissions for the reads and changes in this guide. See Permissions.
  • This procedure uses credits. Check get_me before you start.

Steps

Start an import

Choose one method. The catalog uses account rows; set entity_type to person for a campaign with people.

curl --fail-with-body --request POST "$LINKT_API_URL/v2/runs/import" \
  --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","entity_type":"account","rows":[{"name":"Bluefin Analytics","website":"https://bluefin-analytics.example"},{"name":"Cedar Ridge Data","website":"https://cedar-ridge-data.example"}]} | walk(if . == "0190a4e2-0000-7000-8000-000000000001" then $CAMPAIGN_ID else . end)')"

API reference: start_import

The response has status 202. Set RUN_ID to its id. See Import rules and identity.

Follow the run

curl --fail-with-body --request GET "$LINKT_API_URL/v2/runs/$RUN_ID" \
  --header "x-api-key: $LINKT_API_KEY"

API reference: get_run

Use Polling. Read the completed and discarded counts when the run ends. When result.import_rows.availability is ready, read the row outcomes:

curl --fail-with-body --request GET "$LINKT_API_URL/v2/runs/$RUN_ID/rows?limit=5" \
  --header "x-api-key: $LINKT_API_KEY"

API reference: list_import_rows

Read the campaign records

curl --fail-with-body --request GET "$LINKT_API_URL/v2/accounts?campaign_id=$CAMPAIGN_ID&limit=5" \
  --header "x-api-key: $LINKT_API_KEY"

API reference: search_accounts

After a person import, read the people instead:

curl --fail-with-body --request GET "$LINKT_API_URL/v2/people?campaign_id=$CAMPAIGN_ID&limit=5" \
  --header "x-api-key: $LINKT_API_KEY"

API reference: search_people

The list can include records from earlier runs. Import has no per-run result filter. Follow next_cursor to read the entire list.

V2 row correlation

New integrations upload CSV through POST /v2/runs/import/upload with multipart fields campaign_id, entity_type, and file. V2 accepts CSV files. JSON imports have a 1,000-row limit; CSV imports retain the existing upload limits without a row-count cap.

name,email,external_id,account_id
Ada Lovelace,ada@example.com,001,01950000-0000-7000-8000-000000000002
Grace Hopper,grace@example.com,002,

Canonical external_id and person account_id columns use the same rules as JSON. Indexes count parsed data records from zero and exclude the header. A quoted multiline record has one index. UTF-8 and Latin-1 decoding follow the existing ingest parser. Empty or repeated external IDs remain valid. Custom columns remain research input. Read Runs for row outcomes, matching rules, rejection codes, account binding, pagination, and failed or canceled imports.

Next steps

On this page