Skip to main content
Version: 2025-12-18

Manage quota status for a launched target group

This guide explains how to enable, disable, and manage blended quotas for target group profiles that are already launched (in a non-draft status).


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.
  • Blended profile 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.

Manage non-interlocked quotas

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

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): JSON
{
"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, Cint-API-Version, and the If-Match ETag of the target group.
    • 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): JSON
{
"data": [
{
"id": "01JN3WYAXKN1DCHX9WF5617505",
"legacy_id": "244536971",
"question_id": 200842,
"name": "Cardinal regions",
"quotas_enabled": true, // Now enabled
"description": "Regions of the world.",
"conditions": { /* ... */ },
"quotas": { /* ... */ }
},
// ...
]
}

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.

Important: Disabling a profile removes it from being an active quota. Respondents will no longer be screened and 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 "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, Cint-API-Version, and the If-Match ETag of the target group.
    • 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): JSON
{
"data": [
{
"id": "01JN3WYAXKN1DCHX9WF5617505",
"legacy_id": "244536971",
"question_id": 200842,
"name": "Cardinal regions",
"quotas_enabled": false, // Now disabled
"description": "Regions of the world.",
"conditions": { /* ... */ },
"quotas": { /* ... */ }
}
// ...
]
}

Manage 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.

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 Interlocked 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, including their ids and the interlock_ids (if they are part of an interlock). You need to identify the id of the interlocked profile itself, not just the individual profiles within it.
    • Outcome: Cache the id of the interlocked profile you intend to remove.
    • Example Response Snippet (GET /profiles showing interlocked ID): JSON
{
"data": [],
"interlocked_profile": {
"id": "01JP2K4BKAAVS6RFRZ8NXMR3CA", // This is the interlocked profiler 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}/interlocked-profiles/remove
    • Path Parameters: Include your account_id, project_id, and target_group_id in the URL.
    • Request Headers: Include Authorization, Cint-API-Version, and the If-Match ETag of the target group.
    • Request Body:
      • Content-Type: application/json
      • Structure: JSON
{
"interlocked_profile_id": "01JP2K4BKAAVS6RFRZ8NXMR3CA"
}
  • interlocked_profile_id (string, required): The unique ID of the interlocked profile you obtained in Step 1.
  • 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.
  1. Example cURL Request for Remove interlocks: Bash
curl -X POST \
'https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/interlocked-profiles/remove' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <YOUR_JWT_TOKEN>' \
-H 'Cint-API-Version: 2025-12-18' \
-H 'If-Match: W/"<YOUR_CURRENT_ETAG>"' \
-d '{
"interlocked_profile_id": "01JP2K4BKAAVS6RFRZ8NXMR3CA"
}'
  • 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. JSON
{
"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 "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).

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 an interlocked profile endpoint.
      • POST https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/interlocked-profiles/create
    • Path Parameters: Include your account_id, project_id, and target_group_id in the URL.
    • Request Headers: Include Authorization, Cint-API-Version, Content-Type: application/json, and the If-Match ETag of the target group.
    • Request Body: JSON
{
"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: JSON
{
"target_group_filling_goal": 50,
"profiles": [
"01JP2JKW9ZC2VHR9WKYP9SD4KV",
"01JP2JKW9ZC2VHR9WKYP9SD4KZ"
]
}
  1. Example cURL Request for Create an interlocked profile: Bash
curl -X POST \
'https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/interlocked-profiles/create' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <YOUR_JWT_TOKEN>' \
-H 'Cint-API-Version: 2025-12-18' \
-H 'If-Match: W/"<YOUR_CURRENT_ETAG>"' \
-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. JSON
{
"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 412 Precondition failed: This error occurs if the If-Match ETag header you sent with your POST request is outdated. Always perform a GET call to retrieve the latest ETag immediately before making an update request to a live target group.
  • HTTP 404 Not found: The account_id, project_id, or target_group_id in your URL, or the profile_id/interlocked_profile_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 interlocked_profile_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 interlocked_profile_id used in the call is correct.
    • Verify the target group's ETag was up-to-date.
  • 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.