Skip to main content
Version: 2025-05-27

How to manage quota status for a launched target group

This guide explains how to enable, disable, and manage interlocked quotas for target group profiles that are already launched (in a non-draft status). These capabilities allow you to dynamically adjust your fieldwork strategy.

During fieldwork, you may need to modify your quota strategy. For instance, you might open up certain criteria if fieldwork is slow, or remove complex interlocks to speed up completion. Cint's API offers robust capabilities to update and manage your quotas and conditions on the fly.

Key concepts:

  • Enabled quota: Respondents are counted against this profile's set quota target.
  • Disabled quota: Respondents are not counted against this profile, and its quota target is inactive. They are no longer screened or allocated based on this specific quota.
  • Interlocked quotas: These combine multiple profile conditions (e.g., age and gender) to create specific, intersecting quota cells (e.g., "Males 25-34"). They are powerful but can sometimes slow down fieldwork if too restrictive.

Part 1: Managing non-interlocked quotas

This section covers how to enable or disable individual (non-interlocked) profile quotas for a live target group.

How to enable a non-interlocked quota

If you want a specific profile to actively count respondents against its quota, you need to enable it.

Steps:

  1. Retrieve profiles and IDs:
    • Action: Make a GET call to the get profiles endpoint for your target group.
      • GET https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles
    • Purpose: This will return a list of all profiles associated with your target group, along with their unique ids and current quotas_enabled status.
    • Outcome: Cache the id of the profile(s) you wish to enable.

Example response snippet (GET /profiles showing a disabled profile):

{
"data": [
{
"id": "01JN3WYAXKN1DCHX9WF5617505",
"legacy_id": "244536971",
"question_id": 200842,
"name": "Cardinal regions",
"quotas_enabled": false, // Currently disabled
"description": "Regions of the world.",
"conditions": { /* ... */ },
"quotas": { /* ... */ }
},
// ... other profiles
]
}
  1. Enable quota for profile:
    • Action: Make a POST request to the Enable quotas for a profile endpoint.
      • POST https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/enable-quotas
    • Path parameter: Include the specific profile_id you want to enable in the URL.
    • Headers: Include Authorization and Cint-API-Version.
    • Request body: This endpoint typically has no request body.
    • Purpose: To activate the quota for the specified profile.
  2. Verify quota status:
    • Action: Make another GET call to the Get Profiles endpoint (as in Step 1).
    • Purpose: Check if the quotas_enabled parameter for your desired profile is now set to true. This confirms the change.

Example response snippet (after enabling, quotas_enabled will be true):

{
"data": [
{
"id": "01JN3WYAXKN1DCHX9WF5617505",
"legacy_id": "244536971",
"question_id": 200842,
"name": "Cardinal regions",
"quotas_enabled": true, // Now enabled
"description": "Regions of the world.",
"conditions": { /* ... */ },
"quotas": { /* ... */ }
},
// ...
]
}

How to disable a non-interlocked quota

Sometimes, you might need to open up targeting criteria, especially if fieldwork is slow. Disabling a profile removes it from being an active quota, meaning respondents will no longer be screened or allocated based on it.

caution

Disabling a profile removes it from being an active quota. Respondents will no longer be screened or allocated based on this profile's criteria.

Steps:

  1. Retrieve profiles and IDs:
    • Action: Make a GET call to the get profiles endpoint (same as Step 1 in "How to Enable").
    • Purpose: Obtain the id of the profile(s) you wish to disable.
    • Outcome: Cache the id of the profile(s).
  2. Disable quota for profile:
    • Action: Make a POST request to the Disable quotas for a profile endpoint.
      • POST https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/disable-quotas
    • Path parameter: Include the specific profile_id you want to disable in the URL.
    • Headers: Include Authorization and Cint-API-Version.
    • Request body: This endpoint typically has no request body.
    • Purpose: To deactivate the quota for the specified profile.
  3. Verify quota status:
    • Action: Make another GET call to the get profiles endpoint.
    • Purpose: Check if the quotas_enabled parameter for the desired profile is now set to false. This confirms the change.

Example response snippet (after disabling, quotas_enabled will be false):

{
"data": [
{
"id": "01JN3WYAXKN1DCHX9WF5617505",
"legacy_id": "244536971",
"question_id": 200842,
"name": "Cardinal regions",
"quotas_enabled": false, // Now disabled
"description": "Regions of the world.",
"conditions": { /* ... */ },
"quotas": { /* ... */ }
}
// ...
]
}

Part 2: Managing interlocked quotas

Interlocked quotas are powerful for precise audience distribution but can sometimes hinder fieldwork if too complex. This section explains how to remove existing interlocks or create new ones for live target groups.

How to remove interlock conditions from quotas

Removing interlocks can help ease complexity and potentially speed up fieldwork. When you remove an interlock, the individual profile quotas (e.g., age and gender) will remain, but they will no longer be linked in a combined quota.

Example: You have age and gender profiles interlocked, and you want to remove the interlocking between them.

Steps:

  1. Retrieve profile ID:
    • Action: Make a GET call to the get profiles endpoint (as in Part 1, Step 1).
    • Purpose: This provides you with a list of profiles. You need to identify the id of the interlocked profile itself, which is the profile_id you'll use in the next step.
    • Outcome: Cache the id of the interlocked profile you intend to remove.

Example response snippet (GET /profiles showing interlocked profile):

{
"data": [],
"interlocked_profile": {
"id": "01JP2K4BKAAVS6RFRZ8NXMR3CA", // This is the profile ID you need
"name": "AGE, GENDER",
"quotas_enabled": true,
"depends_on_questions": [42, 43],
// ... (rest of interlocked profile details)
},
"profiles": [
{
"id": "01JP2JKW9ZC2VHR9WKYP9SD4KV", // Individual Age profile
"interlock_id": "01JP2K4BKAAVS6RFRZ8NXMR3CA", // Points to the interlocked ID
// ...
},
{
"id": "01JP2JKW9ZC2VHR9WKYP9SD4KZ", // Individual Gender profile
"interlock_id": "01JP2K4BKAAVS6RFRZ8NXMR3CA", // Points to the interlocked ID
// ...
}
]
}
  1. Remove interlocks:
    • Action: Make a POST request to the Remove interlocks endpoint.
      • POST https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/remove-interlocks
    • Path parameters: Include your account_id, project_id, target_group_id, and the profile_id of the interlocked profile in the URL.
    • Request headers: Include Authorization and Cint-API-Version.
    • Request body: This endpoint has no request body.
    • Purpose: This action dissolves the interlocking relationship between the specified profiles. The API will respond with an updated structure of profiling for the target group, reflecting the removal of the interlock and showing the individual profile quotas. Example cURL request for Remove interlocks:
curl -X POST \
'https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/remove-interlocks' \
-H 'Authorization: Bearer <YOUR_JWT_TOKEN>' \
-H 'Cint-API-Version: 2025-05-27'
  • Outcome: A successful POST request will return an HTTP 200 OK status code. The response body will contain the updated target group profile structure.
  1. Example response from Remove interlocks: The response will show the individual profiles (e.g., age and gender) now present in the data array, each with is_interlocked: false, and the interlocked_profile object will no longer be present or will be null. Their quotas_enabled will remain true unless explicitly disabled.
{
"data": [
{
"id": "01JP2JKW9ZC2VHR9WKYP9SD4KV", // Individual Age profile
"legacy_id": "246353061",
"question_id": 42,
"name": "AGE",
"quotas_enabled": true, // Quotas remain enabled
"description": "What is your age?",
"conditions": { /* ... */ },
"quotas": { /* ... */ },
"is_interlocked": false // Now a non-interlocked profile
},
{
"id": "01JP2JKW9ZC2VHR9WKYP9SD4KZ", // Individual Gender profile
"legacy_id": "246353063",
"question_id": 43,
"name": "GENDER",
"quotas_enabled": true, // Quotas remain enabled
"description": "Are you...?",
"conditions": { /* ... */ },
"quotas": { /* ... */ },
"is_interlocked": false // Now a non-interlocked profile
}
]
}
  1. Result: Your live target group will now contain multiple non-interlocked profiles for each question that was previously part of the interlocked section. Each of these individual profiles will have its quotas enabled by default.

Next step (optional): Disable individual quotas

If your goal was not just to remove the interlock but also to completely disable the quotas for these individual profiles, you would then follow the steps in "How to Disable a Non-Interlocked Quota" (Part 1, Steps 2-3) for each of the now-unlocked individual profiles (e.g., for the age profile and the gender profile separately).

How to enable (create) interlocked quotas

If you launched your target group without interlocked quotas or previously removed them, you can add them back in. This will create a new, combined quota structure.

Steps:

  1. Retrieve profile IDs:

    • Action: If you don't have them cached, make a GET call to the get profiles endpoint to retrieve the ids of the non-interlocked profiles you want to combine.
    • Purpose: Gather the specific profile ids (e.g., for "Age" and "Gender") that you intend to interlock.
  2. Create an interlocked profile:

    • Action: Make a POST call to the create interlocked profile 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, and target_group_id in the URL.
    • Request headers: Include Authorization, Cint-API-Version, and Content-Type: application/json.
    • Request body:
{
"target_group_filling_goal": 5, // Total filling goal for the target group
"profiles": [
"01JN1FRXKDTQBG6WE3FC4AN8CX", // ID of Age profile
"01JN1FRXKERTZ3DYJKRC02M2ND" // ID of 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.
  • Purpose: This generates a new interlocked profile from the specified non-interlocked profiles.
  1. Example request body for Create an interlocked profile:
{
"target_group_filling_goal": 50,
"profiles": [
"01JP2JKW9ZC2VHR9WKYP9SD4KV",
"01JP2JKW9ZC2VHR9WKYP9SD4KZ"
]
}
  1. 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"
]
}'
  • Outcome: A successful response will return a new structure of profiling for the target group, now including the newly generated interlocked_profile object. The individual profiles (age and gender in this example) will now have an interlock_id pointing to the new combined interlock.
  1. Example response from Create an interlocked profile: The response shows the interlocked_profile with its own id, name, and derived quotas for each segment (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",
"text": "18-24, Male",
"quota_percentage": 0, // These will be calculated when used in target group
"filling_goal": 0,
"quota_nominal": 0,
"condition": { /* ... */ }
},
// ... other interlocked segments (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: The account_id, project_id, or target_group_id in your URL, or the profile_id/interlock_id in the request body, is incorrect or does not exist.
  • HTTP 400 Bad Request:
    • For Create an interlocked profile, ensure target_group_filling_goal is provided as an integer and the profiles array contains valid profile IDs from your target group.
    • For Remove interlocks, ensure the interlock_id in the request body is valid and corresponds to an active interlocked profile.
    • Verify that the target group is in a non-draft (live) status for these operations.
    • Check for any other validation messages in the error response (e.g., if one of the profiles you're trying to interlock is already part of another interlock).
  • Quota not changing:
    • Confirm the profile id and/or interlock_id used in the call is correct.
  • Interlock complexity/feasibility: Be aware that highly complex or restrictive interlocked quotas might limit respondent availability, potentially increasing costs and extending fieldwork time. Monitor your target group Statistics and utilize the Feasibility System to assess impact.