Kenso

Markets

Market packs: the language facts Kenso writes each locale with, and the cold email notes of the countries it covers.

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

Every tested and supported pack, ordered by locale: locale, language, name, status (tested passed the quality check, supported did not run it yet), and countries, the ISO-2 codes of the countries one of whose official languages the pack writes (the pack of that exact locale, else the language's primary pack). Static: no X-Ken-Workspace-Id. Any signed-in caller.

Parameters

Name
In
Type
Required
Description
Limit
In: query
integer (int32)
optional
1 to 200, default 50.
Cursor
In: query
string
optional
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.

Response 200

data is a list of MarketSummaryModel. Each item has these fields. The response also carries pagination.

Field
Type
Description
locale
string
BCP 47 locale (fr-FR).
language
string
ISO 639-1 code (fr).
name
string
The locale's name in its own language (Français (France)).
status
string, one of: draft, supported, tested
countries
array of string
ISO-2 codes of the countries one of whose official languages this pack writes, sorted.
Request
curl -X GET "https://api.ken.so/v1/markets" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02"
Response 200
{
  "success": true,
  "data": [
    {
      "locale": "string",
      "language": "string",
      "name": "string",
      "status": "draft",
      "countries": [
        "string"
      ]
    }
  ],
  "pagination": {
    "nextCursor": "eyJpZCI6ODE1fQ",
    "hasMore": true,
    "total": 1,
    "isTotalCapped": true
  }
}

locale is a pack locale such as fr-FR, in any case (FR-fr and fr_FR read as fr-FR). A bare language (fr), an unknown locale or a draft pack is 404 not_found. pack is the whole pack: formality, salutations, sign-offs, style, banned and spam phrases, examples. countries are the countries the pack writes for, each with its languages and coldEmail (regimeopt_out, consent or unresolved, note, sources, requiresAcknowledgement). Every note ends with "Not legal advice." Static: no X-Ken-Workspace-Id. Any signed-in caller.

Parameters

Name
In
Type
Required
Description
locale
In: path
string
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.

Response 200

data is a MarketModel.

Field
Type
Description
locale
string
language
string
name
string
status
string, one of: draft, supported, tested
pack
MarketPack
countries
array of MarketCountry
The countries of the pack, each with its languages and cold email notes. Every note ends with "Not legal advice."
Request
curl -X GET "https://api.ken.so/v1/markets/string" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 2026-11-02"
Response 200
{
  "success": true,
  "data": {
    "locale": "string",
    "language": "string",
    "name": "string",
    "status": "draft",
    "pack": {
      "locale": "string",
      "language": "string",
      "primary": true,
      "version": "string",
      "status": "draft",
      "name": "string",
      "direction": "string",
      "formality": {
        "default": "string",
        "pronouns": {
          "formal": [
            "string"
          ],
          "informal": [
            "string"
          ]
        }
      },
      "salutations": {
        "formal": [
          "string"
        ],
        "informal": [
          "string"
        ],
        "unknownGender": "string"
      },
      "signOffs": {
        "formal": [
          "string"
        ],
        "informal": [
          "string"
        ]
      },
      "nameOrder": "string",
      "style": [
        "string"
      ],
      "bannedPhrases": [
        "string"
      ],
      "spamPhrases": [
        "string"
      ],
      "stopwords": [
        "string"
      ],
      "text": {
        "quoteLine": "string",
        "quoteDate": "string",
        "unsubscribeLink": "string",
        "unsubscribePageTitle": "string",
        "unsubscribePage": {
          "confirmTitle": "string",
          "confirmBody": "string",
          "button": "string",
          "doneTitle": "string",
          "doneBody": "string"
        }
      },
      "oooPhrases": [
        "string"
      ],
      "optOutPhrases": [
        "string"
      ],
      "examples": [
        {
          "subject": "string",
          "body": "string"
        }
      ],
      "eval": {
        "writerModel": "string",
        "judgeModels": [
          "string"
        ],
        "judgeThreshold": 0.5,
        "testedAt": "string",
        "results": "string"
      }
    },
    "countries": [
      {
        "iso2": "string",
        "name": "string",
        "languages": [
          {
            "code": "string",
            "locale": "string",
            "share": 0.5,
            "official": true
          }
        ],
        "coldEmail": {
          "regime": "opt_out",
          "note": "string",
          "sources": [
            "string"
          ],
          "requiresAcknowledgement": true
        }
      }
    ]
  }
}