Campaign compliance
The Campaign compliance endpoints of the Kenso API.
Read the campaign's consent-first countries and their acknowledgements
/v1/campaigns/{campaignId}/compliancecampaign-compliance.getNeeds the multilingual_outreach feature on your workspace. Until it is on, calls answer 404.
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
400 workspace_required).Response 200
data is a CampaignComplianceModel.
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"
{
"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
/v1/campaigns/{campaignId}/compliance/acknowledgementscampaign-compliance.acknowledgeNeeds the multilingual_outreach feature on your workspace. Until it is on, calls answer 404.
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
400 workspace_required).Request body
application/json, optional.
ES (any casing).Response 200
data is a CampaignComplianceModel.
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"
]
}'{
"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
}
]
}
}