Skip to main content
Version: 2025-05-27

How to get feasibility estimates for a launched target group

During the fielding of a survey, conditions (like respondent availability or supplier performance) can change. A feasibility request on an already launched or active target group allows you to check current audience availability and estimated costs based on your defined criteria, helping you to refine your project plan and budget in real-time.

note

This guide applies only to target groups in a non-draft status (e.g., launched, active, paused, completed). If you need to create a target group in draft status, you can refer to our guide on how to create a target group in draft status.

Information is based on the current state of the target group. The request properties are all optional. They serve as a way of performing what-if analysis.

Before you can get the feasibility for an existing target group, you'll need to have:

  • Your unique account ID: {account_id} path parameter
  • Your project ID: {project_id} path parameter
  • Your target group ID: {target_group_id} path parameter
  • Your API authentication token (JWT): <YOUR_JWT_TOKEN>

For a deeper understanding of how our feasibility calculations work, you can refer to our guide on how Cint's feasibility works.

See the feasibility API reference documentation for further references.

Fields passed in the request body override the existing target group settings for the purpose of the feasibility calculation only. The actual target group settings will remain unchanged.


Step 1: Prepare your feasibility request body

First, you'll construct the JSON payload that defines the parameters for your feasibility query. This includes details like your desired locale, expected incidence rate, defined profile, and completes goal, along with pricing information.

For the direct cURL examples, skip to Step 2: Make the feasibility request.

Fields to consider:

  • business_unit_id (string, required): This is your unique business unit identifier.
  • locale (string, required): The target locale (e.g., "eng_us"). See our list of supported locales for all valid codes.
  • collects_pii (boolean, required): You should set this to true if your survey collects personally identifiable information, and false otherwise.
  • incidence_rate (number, required): Your expected survey incidence rate (IR) as a decimal (e.g., 0.5 for 50%).
  • length_of_interview (number, required): Your estimated length of interview (LOI) in minutes (e.g., 20).
  • filling_goal (number, required): Your desired number of completes (e.g., 40).
  • start_date (string, required): The start date and time of fieldwork in RFC3339 UTC format.
  • end_date (string, required): The end date and time of fieldwork in RFC3339 UTC format.
  • price (object, conditionally required): The proposed cost per interview. This is specific to business units associated with the dynamic pricing model. Find out more about feasibility for dynamic pricing here. Parameter is ignored if using rate card pricing model.
  • value (string, required): The monetary value.
  • currency_code (string, required): The ISO 4217 currency code (e.g., "USD").
  • rate_card_price_boost (object, conditionally optional): An optional amount to add to your rate card price. This is specific to business units associated with rate card pricing model. Find out more about feasibility for rate card pricing here. Parameter is ignored if using dynamic pricing model.
  • value (string, required): The monetary value.
  • currency_code (string, required): The ISO 4217 currency code.
  • profiles (array of objects, required): An array of profile objects defining your targeting criteria.
  • object (string, required): The profile object type (e.g., "regular").
  • quotas_enabled (boolean, required): Set to true if quotas are enabled for this profile, otherwise false.
  • targets (array of objects, required): An array of target objects defining specific targeting conditions and quotas.
  • conditions (array of objects, required): An array of condition objects that specify the targeting criteria.
  • quota (object, required): The quota settings for this target.
  • quota_percentage (number, required): The percentage of the total filling goal allocated to this target (e.g., 50 for 50%).
  • allocations (object, optional): Allows you to specify allocations for different supplier sources. If omitted, the system will use default allocation settings.
    • open_exchange_allocations (object, required): Defines allocations for the open exchange supply source.
    • private_exchange_allocations (object, optional): Defines allocations for the private exchange supply source.

Step 2: Make the feasibility request

Next, you'll send your prepared request body to the feasibility endpoint.

  • API endpoint: POST https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/calculate-feasibility

Reminder, you will need the following to make the request:

  • Your unique account ID: {account_id} path parameter
  • Your project ID: {project_id} path parameter
  • Your target group ID: {target_group_id} path parameter
  • Your API authentication token (JWT): <YOUR_JWT_TOKEN>
  • Cint API Version: 2025-05-27

Example cURL request

You want to see the feasibility impact if you were to increase the CPI by $2.00 USD.

Scenario: The target group (target_group_id) has no rate_card_price_boost (rate_card_price_boost = $0.00). This feasibility request will show the impact of adding a $2.00 USD boost to the current CPI.

  curl -L 'https://api.cint.com/v1/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/calculate-feasibility' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <YOUR_JWT_TOKEN>' \
-H 'Cint-API-Version: 2025-05-27' \
-d '{
"rate_card_price_boost": {
"value": "2.00",
"currency_code": "USD"
}
}'
note

Remember to replace all bracketed placeholders (e.g., <YOUR_JWT_TOKEN>) with your actual values.

Step 3: Interpret the feasibility response

A successful request will return an HTTP 200 OK status code and a JSON object containing the feasibility estimate.

Example successful response

note

Response values will depend on your target group settings and any overrides you provided in the request body.

  {
"suggested_price": {
"value": "3.2500",
"currency_code": "USD",
"currency_scale": 2
},
"suggested_filling_goal_range": {
"min": 25,
"max": 30
},
"profiles": [
{
"question_id": 42,
"quotas": {
"ungrouped": [
{
"min_completes": {
"percentage": 0,
"nominal": 0
},
"max_completes": {
"percentage": 0,
"nominal": 0
}
}
],
"grouped": [
{
"min_completes": {
"percentage": 0,
"nominal": 0
},
"max_completes": {
"percentage": 0,
"nominal": 0
}
}
]
}
}
]
"allocations": {
"open_exchange_allocations": {
"min_completes": 55,
"max_completes": 85,
}
}
}

Response field descriptions:

  • suggested_price (object): The recommended cost per interview (CPI) based on your query.
    • value (string): The monetary value.
    • currency_code (string): The ISO 4217 currency code.
    • currency_scale (integer): The number of decimal places for the currency.
  • suggested_completes_goal_range (object): A range that indicates the minimum and maximum number of completes you can achieve.
    • min (integer): The minimum achievable completes.
    • max (integer): The maximum achievable completes.
  • profiles (array of objects): An array reflecting the profile targets and their respective quotas as defined in your request.
    • object (string): The profile object type.
    • targets (array of objects): An array of target objects defining specific targeting conditions and quotas.
      • conditions (array of objects): An array of condition objects that specify the targeting criteria.
      • quota (object): The quota settings for this target.
        • min_completes (object): The minimum completes achievable for this target.
          • projected_completes_goal (integer): The projected minimum completes goal.
        • max_completes (object): The maximum completes achievable for this target.
          • projected_completes_goal (integer): The projected maximum completes goal.
  • allocations (array of objects, nullable): A detailed breakdown of feasibility across different panel sources, if available. This will be null if it's not applicable or not provided.

Troubleshooting common issues

  • HTTP 400 Bad Request:
    • Check that all required fields in the request body are present and correctly formatted (e.g., dates are RFC3339 UTC).
    • Make sure your expected_incidence_rate is between 0.01 and 1.00.
    • Verify that the locale is valid and supported.
  • HTTP 401 Unauthorized: Your JWT token is missing or invalid. You can refer to our authentication guide for more information.
  • HTTP 403 Forbidden: Your JWT token is valid, but it doesn’t have the necessary permissions for this operation.
  • HTTP 404 Not Found: The account_id in the URL path is incorrect or doesn’t exist.
  • Unrealistic feasibility results (e.g., 0 completes):
    • Review your profiles array. Are the question IDs and options valid? Are the quotas realistic for the target demographic?
    • Check your expected_incidence_rate and expected_length_of_interview_minutes. Very low IRs or very long LOIs can severely impact feasibility.
    • Make sure your start_at and end_at dates define a sufficient fielding window.
  • Placeholders: Make sure you've replaced all placeholder values (e.g., {accountId}) with your actual data before making the request.