How to implement interlocked profiles in a launched target group
This guide explains how to dynamically update a non-draft target group to incorporate interlocked (nested) quotas. This allows you to apply more granular control over your respondent distribution after a survey has been launched and fieldwork has begun.
After launching a survey, you might discover the need for more precise control over respondent demographics or behaviors to ensure a balanced sample. Interlocking profiles on a live target group allows you to apply this granular control without recreating it.
For more information on understanding interlocked quotas, check out our guide: Understanding interlocked quotas.
Steps to implement interlocked quotas in a live target group
Cint Exchange provides a dedicated endpoint, create an interlocked profile, to transition your non-interlocked profiles into an interlocked structure within an already launched target group.
Step 1: Retrieve profile IDs for your live target group
Before you can interlock profiles, you need their unique identifiers.
- Action: Make a
GETcall to the Get profiles endpoint for your live target group.GET https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles
- Purpose: This provides a list of all current profiles, including their IDs.
- Outcome: Cache the IDs of the specific non-interlocked profiles (e.g., your age profile ID and gender profile ID) that you want to interlock.
Step 2: Create the interlocked profile
- Action: Make a
POSTcall to the create interlocked profile endpoint. - API endpoint:
POST https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/create-interlocked-profile - Path parameters: Include your
account_id,project_id, andtarget_group_idin the URL. - Request headers: Include your JWT Token and the Cint API version.
- Request body: Provide the
target_group_filling_goaland the IDs of the profiles you wish to interlock.
Example request body for "Create an interlocked profile":
This example assumes you have two non-interlocked profiles with IDs 01JP2JKW9ZC2VHR9WKYP9SD4KV (age) and 01JP2JKW9ZC2VHR9WKYP9SD4KZ (gender), and a target group filling goal of 50.
{
"target_group_filling_goal": 50,
"profiles": [
"01JP2JKW9ZC2VHR9WKYP9SD4KV", // ID of your age profile
"01JP2JKW9ZC2VHR9WKYP9SD4KZ" // ID of your gender profile
]
}
target_group_filling_goal(integer, required): The overall desired number of completes for the target group. This value helps calculate the nominal quotas for the interlocked segments.profiles(array of strings, required): An array containing the IDs of the individual profiles you want to interlock.- Outcome: A successful
POSTrequest will return a response that includes the newly createdinterlocked_profileobject. As a result, an interlocked quota will be applied to your live target group. The previously non-interlocked individual profiles will automatically be removed from the non-interlocked section and linked to this new interlocked profile.
Example cURL request for Create an interlocked profile:
curl -X POST \
'https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/create-interlocked-profile' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <YOUR_JWT_TOKEN>' \
-H 'Cint-API-Version: 2025-05-27' \
-d '{
"target_group_filling_goal": 50,
"profiles": [
"01JP2JKW9ZC2VHR9WKYP9SD4KV",
"01JP2JKW9ZC2VHR9WKYP9SD4KZ"
]
}'
Example response from "Create an interlocked profile":
The response confirms the creation of the interlocked profile (ID 01JP2K4BKAAVS6RFRZ8NXMR3CA) and details all the newly created combined quota segments (e.g., "18-24, Male"). The profiles array within this response will show your original age and gender profiles, now updated with an interlock_id linking them to the new combined interlock.
{
"data": [],
"interlocked_profile": {
"id": "01JP2K4BKAAVS6RFRZ8NXMR3CA",
"name": "AGE, GENDER",
"quotas_enabled": true,
"depends_on_questions": [42, 43],
"quotas": {
"ungrouped": [
{
"id": "01JP2K4BKB35DE38AGEWT3F2GK",
"legacy_id": "303559998",
"quota_percentage": 0,
"quota": 0,
"filling_goal": 0,
"prescreens": 0,
"completes": 0,
"completes_goal": 0,
"condition": {
"id": "01JP2K4BKB35DE38AGEWT3F2GK",
"text": "18-24, Male",
"related_condition": { /* ... */ }
}
},
// ... other interlocked segments like "18-24, Female", "25-35, Male", etc.
],
"grouped": []
},
"profiles": [
{
"id": "01JP2JKW9ZC2VHR9WKYP9SD4KV", // Original Age profile
"question_id": 42,
"interlock_id": "01JP2K4BKAAVS6RFRZ8NXMR3CA", // Now linked to the new interlock
"quotas_enabled": true,
// ... other Age profile details
},
{
"id": "01JP2JKW9ZC2VHR9WKYP9SD4KZ", // Original Gender profile
"question_id": 43,
"interlock_id": "01JP2K4BKAAVS6RFRZ8NXMR3CA", // Now linked to the new interlock
"quotas_enabled": true,
// ... other Gender profile details
}
]
}
}
Troubleshooting
HTTP 404 Not Found: Theaccount_id,project_id, ortarget_group_idin your URL, or the profile IDs in the request body, are incorrect or don't exist.HTTP 400 Bad Request:- Ensure
target_group_filling_goalis provided as an integer. - Verify that the
profilesarray contains valid profile IDs from your target group. - Confirm that the target group is in a non-draft (live) status.
- Check for any other validation messages in the error response if the interlock can't be created (e.g., if one of the profiles is already part of another interlock).
- Ensure
- Feasibility or fieldwork slowdown: After implementing interlocks, closely monitor your target group's feasibility and fieldwork progress. Highly complex or restrictive interlocked quotas can limit respondent availability, potentially increasing costs and extending fieldwork time. Refer to your target group statistics and feasibility to assess the impact.