API documentation

Import counterparties and link customer screening records

Save customer or vendor details, link them to screenings, and keep each record's history. Use explicit references to avoid merging similar names.

Updated

250 free live screenings. One lifetime allowance. No credit card required.
Link
External reference

A matching name does not merge saved records.

Intake
Up to 100 rows

Choose create, link, or create-or-link explicitly.

History
Cursor pagination

Expired evidence remains clearly labeled.

Choose how imported rows should be linked

Counterparties are saved records for customers, vendors, or other business relationships. Use a stable external reference to connect a saved record with your own system. Two records with the same name are not merged automatically.

During a dashboard import, choose screening only, create saved records, link existing records, or create or link by external reference. Preview the rows and resolve conflicting references before starting the import.

Read saved records and link a screening

Use results:read for GET /counterparties and GET /counterparties/{id}. The list accepts query, status=active or archived, limit, and cursor. The limit defaults to 25 and can be at most 100. Read the records from data.items and follow nextCursor for more.

A detail response contains data.counterparty and arrays for screenings, monitors, and cases. These arrays preview up to 100 rows each. Use the history endpoint below when you need all the records.

To screen a saved record, send its exact current subject and counterpartyId to POST /screenings, along with coverage and any policy. Use reference for your own operation ID. counterpartyId links the saved relationship; it does not replace subject or allow links across environments.

Only an authorized human reviewer can create, edit, or import counterparties. API clients can read and link them; adding cases:write does not permit edits. If the record is archived or the identity has changed, resolve the conflict in the dashboard before screening or monitoring it.

Terminal · curl
curl --fail-with-body "https://www.sanctionskit.com/api/v1/counterparties?status=active&limit=100" \
  -H "Authorization: Bearer $SANCTIONSKIT_API_KEY"

Read the complete history one category at a time

Call /counterparties/{id}/history with results:read. Choose kind=screenings, cases, or monitors. Set limit from 1 to 100 and pass each returned cursor until nextCursor is null. Repeat for the other categories if needed. The response shape is {data:{items,total,nextCursor}}. total counts the whole category, not just the current page. All reads stay within your organization and environment.

Keep expired screening states visible. The saved counterparty's current details cannot stand in for earlier evidence. Edits and corrected screenings have their own revisions. If an identity edit pauses a linked monitor, check and update its saved request before resuming it.

Terminal · curl
curl --fail-with-body "https://www.sanctionskit.com/api/v1/counterparties/$COUNTERPARTY_ID/history?kind=screenings&limit=100" \
  -H "Authorization: Bearer $SANCTIONSKIT_API_KEY"

Create or link records through human intake

POST /api/v1/counterparties/intake requires an authorized human reviewer. API keys cannot call it. Send action as create_only, link_existing, or create_or_link, with up to 100 rows. Each row has externalId and subject, with optional label, relationship, and expectedRevision. The idempotent receipt returns its ID and each row's externalId, counterpartyId, and revision. Conflicting identities and archived or changed saved records are rejected.

Keep useful identity details

Quick screening, counterparties, monitoring and bulk intake accept the supported subject fields: name, subject type, country, partial birth date and typed identifiers with optional issuers. The API subject object does not accept an aliases property. Do not invent a day for an uncertain date. Vessel IMO numbers, organization LEIs and aircraft registrations have different formats and comparison rules.

Updating a saved subject does not rewrite historical evidence. Linked monitors pause so their saved request can be reconciled. Match the saved subject and current revision when linking future screens; inspect the original retained request when reviewing an earlier result.

Request and response reference

Frequently asked questions

What is a counterparty in SanctionsKit?

It is a saved record for a customer, vendor, or other business relationship. You can link screenings, cases, and monitors to it. An explicit external reference connects it to your system; a similar name alone does not merge two records.

Can my API key create or update a counterparty?

No. Creation, intake, and edits require an authorized human reviewer. API keys can read saved records and link screenings to them. The cases:write scope does not add permission to create or edit a counterparty.

Why must I send subject when I already have a counterpartyId?

The screening request must contain the exact current identity it will check. counterpartyId links the business relationship; it does not replace the subject. If the saved record and request differ, resolve the conflict before submitting new work.

Does a counterparty detail response include its whole history?

No. Its screening, monitor, and case arrays are previews of up to 100 rows each. Use the history endpoint for the category you need and follow nextCursor until it is null. Keep expired screening states visible instead of recreating old evidence from the current profile.

KEEP BUILDING

Where to go next