Skip to main content
Version: 2025-05-27

How to implement interlocked profiles in a draft target group

This guide explains how to define and implement interlocked (nested) quotas for a draft target group, allowing you to precisely control respondent distribution across multiple demographic or behavioral characteristics, like age and gender.

Interlocked quotas are essential for breaking down your target respondents into smaller, specific groups, ensuring a balanced distribution across all desired characteristics in your overall sample. This helps prevent undesirable skews towards more dominant or readily available respondent segments. While powerful, an incorrect setup can negatively impact feasibility, increase costs, and extend fieldwork time.

For more information on understanding interlocked quotas, check out our guide: Understanding interlocked quotas.

Steps to implement interlocked quotas in a draft target group

The Cint Exchange provides a dedicated endpoint (Generate interlocked profile from provided profiles) to help you construct the complex JSON structure required for interlocked quotas in a draft target group. This simplifies the process and reduces the potential for manual errors when writing lengthy code blocks.

Step 1: Identify questions and options for interlocking

Before generating the interlocked profile, you need to know the specific profile questions and their corresponding answer options (or ranges) that you intend to combine.

  • Action: Use the List all available questions API endpoints to identify the question_ids and option IDs (or range details) for the characteristics you want to interlock (e.g., age and gender).
  • Purpose: To gather the necessary data points for building your interlocked profile request.

Step 2: Generate the interlocked profile payload

Use the Generate interlocked profile from provided profiles endpoint to automatically create the complex interlocked profile structure that will be embedded into your draft target group.

  • API endpoint: POST https://api.cint.com/v1/demand/profiles/generate-interlocked-profile
  • Request headers: Include Authorization, Cint-API-Version, and Content-Type: application/json.
  • Request body: Pass the details of the individual profiles (questions, conditions, and their desired quota percentages) that you want to interlock within the profiles array. Include the overall filling_goal, locale, and fieldwork dates for an accurate calculation.

Example request body for Generate interlocked profile from provided profiles that interlocks age and gender: This example targets 100 completes, interlocking gender (Question ID 43) and age (Question ID 42) into specific segments (e.g., "15-19 Male").

{
"filling_goal": 100,
"locale": "eng_us",
"start_at": "2025-01-02T12:00:00.000Z",
"end_at": "2025-01-02T12:00:00.000Z",
"collects_pii": false,
"profiles": [
{
"question_id": 43, // Gender
"quotas_enabled": true,
"conditions": {
"object": "selection_conditions_details_template",
"data": [
{ "text": "Male", "option": "1" }, // Option for Male
{ "text": "Female", "option": "2" } // Option for Female
]
},
"quotas": {
"ungrouped": [
{ "index": 0, "quota_percentage": 49, "quota_nominal": 0 }, // 49% Male
{ "index": 1, "quota_percentage": 51, "quota_nominal": 0 } // 51% Female
],
"grouped": []
}
},
{
"question_id": 42, // Age
"quotas_enabled": true,
"conditions": {
"object": "range_conditions_details_template",
"data": [
{ "text": "15-19", "min": 15, "max": 19 },
{ "text": "20-29", "min": 20, "max": 29 },
{ "text": "35-39", "min": 35, "max": 39 },
{ "text": "40-49", "min": 40, "max": 49 }
]
},
"quotas": {
"ungrouped": [
{ "index": 0, "quota_percentage": 20, "quota_nominal": 0 }, // 20% 15-19
{ "index": 1, "quota_percentage": 20, "quota_nominal": 0 }, // 20% 20-29
{ "index": 2, "quota_percentage": 30, "quota_nominal": 0 }, // 30% 35-39
{ "index": 3, "quota_percentage": 30, "quota_nominal": 0 } // 30% 40-49
],
"grouped": []
}
}
]
}
  • Outcome: The API will return a JSON response containing the generated interlocked_profile object, along with the individual profiles, now reflecting their interlocked nature. This response effectively provides the exact payload needed for the interlocked_profiles array in your target group.

Example response from Generate interlocked profile from provided profiles:

[
{
"id": "01JP0M57XAWSMNPSW5M62A035H", // This is the ID of the generated interlocked profile
"name": "GENDER, AGE", // Auto-generated name for the interlocked profile
"quotas_enabled": true,
"depends_on_questions": [43, 42],
"quotas": {
"ungrouped": [
{
"id": "01JP0M57XAWSMNPSW5M62A035J",
"condition": {
"text": "15-19, Male", // Example combined segment
"related_condition": [ /* ... breakdown of original conditions ... */ ]
},
"quota_percentage": 0, // These will be calculated when used in target group
"filling_goal": 0,
"quota_nominal": 0
},
// ... all other interlocked segments (15-19 Female, 20-29 Male, etc.)
],
"grouped": []
},
// The individual profiles (Age, Gender) will also be included here,
// with an "interlock_id" field pointing to this new interlocked profile.
"profiles": [ /* ... original Age and Gender profiles, now with interlock_id ... */ ]
}
]

Step 3: Embed and submit the interlocked profile in your target group

Take the generated interlocked profile data and include it in your target group's configuration.

  • Action:
    • For a new draft target group: Copy the interlocked_profile object (the full object with the generated id, name, quotas, etc.) from the response of Step 2. Then, paste this object into the interlocked_profiles array when calling the Create a target group in draft status endpoint.
    • For updating an existing draft target group: If your target group is already in draft status, use the Update target group in draft status endpoint. Replace its existing interlocked_profiles array with the new data generated in Step 2.
  • Purpose: To define the precise, combined quota structure for your target audience within the draft target group.

Once these operations are complete, you'll have a target group in draft status with interlocked quotas.