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 andoptionIDs (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, andContent-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
profilesarray. Include the overallfilling_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_profileobject, along with the individual profiles, now reflecting their interlocked nature. This response effectively provides the exact payload needed for theinterlocked_profilesarray 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_profileobject (the full object with the generatedid,name,quotas, etc.) from the response of Step 2. Then, paste this object into theinterlocked_profilesarray 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_profilesarray with the new data generated in Step 2.
- For a new draft target group: Copy the
- 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.