Kenso

Campaign compliance

The Campaign compliance endpoints of the Kenso API.

Campaigns and sequences2 endpointsKen-Version: 2026-11-02AuthenticationWorkspacesErrors

Read the campaign's consent-first countries and their acknowledgements

GET/v1/campaigns/{campaignId}/compliancecampaign-compliance.get

Needs the multilingual_outreach feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

countries lists each country the campaign's live contacts sit in whose cold email rules launch asks someone to acknowledge, most contacts first: iso2, name, regime (opt_out, consent or unresolved), note, sources, contactCount, and acknowledgedAt and acknowledgedByUserId once someone acknowledged it. acknowledgementRequired is true while any country has no acknowledgement: launch then answers 409 acknowledgement_required and launch readiness lists acknowledgement_required. Requires the Campaigns page.

Parameters

Name
In
Type
Required
Description
campaignId
In: path
integer (int64)
required
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
required
The API version: a dated version (YYYY-MM-DD), or 1.1, another name for the first dated version. Without it the request uses your API key's pinned version; an unpinned key reaches the legacy shape of the same path. 1.0 selects the legacy shape explicitly.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
Workspace to act in. Required when your credential can reach more than one workspace (otherwise 400 workspace_required).

Response 200

data is a CampaignComplianceModel.

Field
Type
Description
acknowledgementRequired
boolean
countries
array of CampaignComplianceCountryModel
Request
curl -X GET "https://api.ken.so/v1/campaigns/812/compliance" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 200
{
  "success": true,
  "data": {
    "acknowledgementRequired": true,
    "countries": [
      {
        "iso2": "string",
        "name": "string",
        "regime": "string",
        "note": "string",
        "sources": [
          "string"
        ],
        "contactCount": 1,
        "acknowledgedAt": "2026-09-23T15:02:11Z",
        "acknowledgedByUserId": 812
      }
    ]
  }
}

Acknowledge the cold email rules of the campaign's consent-first countries

POST/v1/campaigns/{campaignId}/compliance/acknowledgementscampaign-compliance.acknowledge

Needs the multilingual_outreach feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

Body { "countries": ["ES"] }: ISO-2 codes of countries the read lists. Records the caller and the time for each, which lets launch proceed for that country. A country already acknowledged keeps its first acknowledgement, so a repeat is harmless. Answers 200 with the campaign's compliance, as the read does. An empty list (required), an unknown code (unknown_country), and a country the read does not list (not_required) are 400 validation_failed, and nothing is recorded. Requires Campaigns edit.

Parameters

Name
In
Type
Required
Description
campaignId
In: path
integer (int64)
required
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
required
The API version: a dated version (YYYY-MM-DD), or 1.1, another name for the first dated version. Without it the request uses your API key's pinned version; an unpinned key reaches the legacy shape of the same path. 1.0 selects the legacy shape explicitly.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
Workspace to act in. Required when your credential can reach more than one workspace (otherwise 400 workspace_required).

Request body

application/json, optional.

Field
Type
Required
Description
countries
array of string
optional
ISO-2 codes of countries the compliance read lists, such as ES (any casing).

Response 200

data is a CampaignComplianceModel.

Field
Type
Description
acknowledgementRequired
boolean
countries
array of CampaignComplianceCountryModel
Request
curl -X POST "https://api.ken.so/v1/campaigns/812/compliance/acknowledgements" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "countries": [
    "string"
  ]
}'
Response 200
{
  "success": true,
  "data": {
    "acknowledgementRequired": true,
    "countries": [
      {
        "iso2": "string",
        "name": "string",
        "regime": "string",
        "note": "string",
        "sources": [
          "string"
        ],
        "contactCount": 1,
        "acknowledgedAt": "2026-09-23T15:02:11Z",
        "acknowledgedByUserId": 812
      }
    ]
  }
}