Cint Manage Profiles for Launched Target Groups API
Management of Target Group profiles after launch—including creating, updating, retrieving, and deleting profile configurations, along with their conditions, quotas, and interlock settings.
Management of Target Group profiles after launch—including creating, updating, retrieving, and deleting profile configurations, along with their conditions, quotas, and interlock settings.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cint-manage-profiles-for-launched-target-groups-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Demand Accounts Manage Profiles for Launched Target Groups API
description: 'Cint''s demand ordering API is REST oriented. It has predictable resource based URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs. Error responses are also JSON-encoded and follow a standard format, providing a unique error ID and detailed information about what went wrong.
Authentication is handled via bearer tokens passed in the `Authorization` header. All requests must also include a `Cint-API-Version` header with a date in `YYYY-MM-DD` format to specify the desired API version. Depending on the version you use, endpoint behavior may differ as we improve our API with every version release.
While many operations work on a single object per request, the demand ordering API also provides asynchronous batch endpoints for performing bulk updates efficiently on certain resources. For safety, `POST` requests support an `Idempotency-Key` header to allow for safe retries without accidentally performing the same operation twice.
'
version: '2025-12-18'
servers:
- description: Production server
url: https://api.cint.com/v1
security:
- BearerAuth: []
tags:
- name: Manage Profiles for Launched Target Groups
description: Management of Target Group profiles after launch—including creating, updating, retrieving, and deleting profile configurations, along with their conditions, quotas, and interlock settings.
paths:
/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles:
parameters:
- $ref: '#/components/parameters/AccountID'
- $ref: '#/components/parameters/ProjectID'
- $ref: '#/components/parameters/TargetGroupID'
- $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
get:
operationId: list_profiles
summary: List profiles for a target group
tags:
- Manage Profiles for Launched Target Groups
description: Returns a list of all non-control, blended and regular profiles for the target group after launch.
responses:
'200':
description: Successfully return list of profiles.
content:
application/json:
schema:
$ref: '#/components/schemas/ProfilesResponseV3'
'400':
$ref: '#/components/responses/Error_BadRequest'
'401':
$ref: '#/components/responses/Error_Unauthorized'
'403':
$ref: '#/components/responses/Error_Forbidden'
'404':
$ref: '#/components/responses/Error_NotFound'
'500':
$ref: '#/components/responses/Error_Internal'
/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}:
parameters:
- $ref: '#/components/parameters/AccountID'
- $ref: '#/components/parameters/ProjectID'
- $ref: '#/components/parameters/TargetGroupID'
- $ref: '#/components/parameters/ProfileIDV2'
- $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
get:
operationId: get_profile
summary: Retrieve a profile
tags:
- Manage Profiles for Launched Target Groups
description: Returns a regular profile detail or blended profile detail by profile ID.
responses:
'200':
description: Successfully return the profile.
content:
application/json:
schema:
$ref: '#/components/schemas/RegularProfileV3'
'401':
$ref: '#/components/responses/Error_Unauthorized'
'403':
$ref: '#/components/responses/Error_Forbidden'
'404':
$ref: '#/components/responses/Error_NotFound'
'500':
$ref: '#/components/responses/Error_Internal'
/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/completes-goal:
parameters:
- $ref: '#/components/parameters/AccountID'
- $ref: '#/components/parameters/ProjectID'
- $ref: '#/components/parameters/TargetGroupID'
- $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
put:
operationId: update_profile_filling_goal
summary: Update completes goal on a target group and its profiles
tags:
- Manage Profiles for Launched Target Groups
description: 'Updates the completes goal for a target group, both at the root target group level level and for individual quotas.
Key behaviors:
* You can update the target group `completes_goal`, individual quota goals within `profiles`, or both in a single request.
* If you only update the total `completes_goal`, the goals for individual quotas will be recalculated based on supplier distribution data.
* To get the necessary `profile_id` and `id` (for the quota), you must first call the `GET /.../profiles` endpoint.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FillingGoalUpdateRequestV3'
responses:
'200':
description: Successfully updated the filling goal.
content:
application/json:
schema:
$ref: '#/components/schemas/ProfilesResponseV3'
'400':
$ref: '#/components/responses/Error_BadRequest'
'401':
$ref: '#/components/responses/Error_Unauthorized'
'403':
$ref: '#/components/responses/Error_Forbidden'
'404':
$ref: '#/components/responses/Error_NotFound'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationStructureErrorResponseDemographics'
'500':
$ref: '#/components/responses/Error_Internal'
/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/delete-profiles:
parameters:
- $ref: '#/components/parameters/ProjectID'
- $ref: '#/components/parameters/AccountID'
- $ref: '#/components/parameters/TargetGroupID'
- $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
post:
operationId: batch_delete_profiles
summary: Delete profiles
tags:
- Manage Profiles for Launched Target Groups
description: Allows the user to delete multiple profiles and quotas associated to the profile on a target group.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BatchProfileDeletionRequestV3'
responses:
'204':
description: Successfully deleted profiles
'400':
$ref: '#/components/responses/Error_BadRequest'
'401':
$ref: '#/components/responses/Error_Unauthorized'
'403':
$ref: '#/components/responses/Error_Forbidden'
'404':
$ref: '#/components/responses/Error_NotFound'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationStructureErrorResponseDemographics'
'500':
$ref: '#/components/responses/Error_Internal'
/demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/manage-profiles:
parameters:
- $ref: '#/components/parameters/AccountID'
- $ref: '#/components/parameters/ProjectID'
- $ref: '#/components/parameters/TargetGroupID'
- $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
post:
operationId: manage_target_group_profiles
summary: Manage a target group's profiles
tags:
- Manage Profiles for Launched Target Groups
description: "Replaces all profiles on a launched target group with the set of profiles provided in the request.\n\n:::warning \nThis is a destructive \"all or nothing\" operation. Any existing profiles on the target group that are not included in this request will be deleted.\n:::\n\nThe request is fully validated before any changes are applied. If any profile in the request is invalid, the entire operation is halted, and no changes are made to the target group.\n\nThe API automatically removes duplicate open-ended values in this request before validation and saving, but rejects duplicates in selection or range conditions.\n"
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ManageProfilesRequestV3'
responses:
'201':
description: Successfully applied profiles to the target group.
content:
application/json:
schema:
$ref: '#/components/schemas/ProfilesResponseV3'
'400':
$ref: '#/components/responses/Error_BadRequest_DemandAPI'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorResponseDemographics'
'500':
$ref: '#/components/responses/Error_Internal_DemandAPI'
components:
schemas:
RequestDraftNoQuotaV3:
type: object
description: No quotas specified. The request will proceed without applying any quotas.
required:
- object
- conditions
properties:
object:
type: string
description: Object field to distinguish the operation.
enum:
- nominal
example: nominal
conditions:
type: array
description: List of conditions.
minItems: 1
items:
$ref: '#/components/schemas/InterlockProfileConditionsV3'
ProfileTargetsResponseOpenEndedConditionsV3:
oneOf:
- title: Allow All Values
description: If `allow_all_values` is true, `open_ended_values` must be null.
type: object
properties:
object:
type: string
description: Object field to distinguish between different types of control selections. Always is `open_ended`.
enum:
- open_ended
example: open_ended
question_id:
$ref: '#/components/schemas/QuestionID'
allow_all_values:
type: boolean
enum:
- true
description: Flag to allow all values.
open_ended_values:
type:
- array
- 'null'
minItems: 0
maxItems: 0
items:
type: string
description: Must be null when `allow_all_values` is true.
condition_name:
type: string
description: The name of the condition. This field will be present if the condition is part of a blended or grouped target.
example: Open Ended 1
condition_name_translated:
type: string
description: The name of the condition translated (when appropriate and available). This field will be present if the condition is part of a blended or grouped target.
example: Open Ended 1
required:
- object
- question_id
- allow_all_values
- open_ended_values
- title: Specific Open End Values
description: If `allow_all_values` is false, `open_ended_values` must contain at least one open end value.
type: object
properties:
object:
type: string
description: Object field to distinguish between different types of control selections. Always is `open_ended`.
enum:
- open_ended
example: open_ended
question_id:
$ref: '#/components/schemas/QuestionID'
allow_all_values:
type: boolean
enum:
- false
description: Flag to allow only specific open end values.
open_ended_values:
type: array
items:
type: string
minItems: 1
maxItems: 10000
description: List of applicable open end values. Required when `allow_all_values` is false. Note that only 10,000 values may be provided. For more than 10,000, please reach out to your integration consultant.
condition_name:
type: string
description: The name of the condition. This field will be present if the condition is part of a blended or grouped target.
example: Open Ended 1
condition_name_translated:
type: string
description: The name of the condition translated (when appropriate and available). This field will be present if the condition is part of a blended or grouped target.
example: Open Ended 1
required:
- object
- question_id
- allow_all_values
- open_ended_values
example:
object: open_ended
question_id: 45
open_ended_values: []
allow_all_values: true
condition_name: Open Ended Values
condition_name_translated: Open Ended Values Translated
RegularProfileV3:
oneOf:
- title: Regular Profile
type: object
required:
- object
- id
- quotas_enabled
- name
- description
- targets
properties:
object:
type: string
description: Object field to distinguish the operation.
enum:
- regular
example: regular
id:
type: string
description: The unique identifier for the profile.
format: ULID
example: 01JQM2QN1FDN1WZA3JZX639MAR
quotas_enabled:
type: boolean
description: Flag indicating if quotas are enabled.
example: true
name:
type: string
description: The name of the profile.
example: HISPANIC
description:
type: string
description: A short summary of the profile. Summary language will be based on the target group's locale.
example: Are you of Hispanic, Latino, or Spanish origin?
description_translated:
type: string
description: A short summary of the profile by default english language.
example: Are you of Hispanic, Latino, or Spanish origin?
targets:
$ref: '#/components/schemas/QuotaV3'
- title: Blended Profile
type: object
required:
- object
- id
- quotas_enabled
- name
- description
- targets
properties:
object:
type: string
description: Object field to distinguish the operation.
enum:
- blended
example: blended
blended_type:
type: string
description: The blended_type field defines the functional behavior of the blended profile as either interlock or control. If omitted, the system defaults to interlock. This field distinguishes between profiles requiring a full matrix expansion (interlock) and those used for isolating specific demographic segments (control).
enum:
- interlock
- control
example: interlock
id:
type: string
description: The unique identifier for the profile.
format: ULID
example: 01JQM2QN1FDN1WZA3JZX639MAR
quotas_enabled:
type: boolean
description: Flag indicating if quotas are enabled.
example: true
name:
type: string
description: The name of the profile.
example: HISPANIC
description:
type: string
description: A short summary of the profile. Summary language will be based on the target group's locale.
example: Are you of Hispanic, Latino, or Spanish origin?
description_translated:
type: string
description: A short summary of the profile by default english language.
example: Are you of Hispanic, Latino, or Spanish origin?
targets:
$ref: '#/components/schemas/QuotaV3'
ValidationErrorResponseDemographics:
type: object
properties:
object:
type: string
default: unprocessable_entity_error
title:
type: string
default: profile request validation
detail:
type: string
pattern: ^Validation error.*?$
invalid_params:
type: array
items:
oneOf:
- $ref: '#/components/schemas/InvalidParamData'
- $ref: '#/components/schemas/InvalidParamStructure'
discriminator:
propertyName: error_type
mapping:
data_validation_error: '#/components/schemas/InvalidParamData'
structural_error: '#/components/schemas/InvalidParamStructure'
QuestionID:
type: integer
description: The unique identifier for a profiling question.
example: 12413
ProfileTargetsSelectionConditionsV3:
title: Selection condition
type: object
description: A profiling condition that targets a specific answer option (e.g. gender).
required:
- object
- question_id
- option
properties:
object:
type: string
description: The type of profiling condition. For this object, the value is always 'selection'.
enum:
- selection
example: selection
question_id:
$ref: '#/components/schemas/QuestionID'
option:
type: string
description: The unique identifier for the selected answer option.
example: '1'
ManageProfilesRequestV3:
oneOf:
- title: Only template ID
type: object
required:
- completes_goal
- profiling
properties:
completes_goal:
$ref: '#/components/schemas/CompletesGoal'
profiling:
type: object
required:
- template_id
- profile_adjustment_type
properties:
template_id:
type: string
format: UUID
description: The ID of the profile template. If the template is available then all the profiles associated to the template will be applied to targe group.
example: e198c976-ce22-436d-acc1-95aa318cc54d
profile_adjustment_type:
type: string
description: Type of profile adjustment. Only percentage is allowed when template ID is provided.
enum:
- percentage
- title: Template ID along with profiles
type: object
required:
- completes_goal
- profiling
properties:
completes_goal:
$ref: '#/components/schemas/CompletesGoal'
profiling:
type: object
required:
- template_id
- profile_adjustment_type
- profiles
properties:
template_id:
type: string
format: UUID
description: The ID of the profile template. If the template is available then all the profiles associated to the template will be applied to targe group.
example: e198c976-ce22-436d-acc1-95aa318cc54d
profile_adjustment_type:
type: string
description: Type of profile adjustment. Only percentage is allowed when template ID is provided.
enum:
- percentage
profiles:
type: array
minItems: 1
items:
$ref: '#/components/schemas/RequestDraftRegularProfileV3'
- title: Only profiles populated with percentage as profile adjustment type
type: object
required:
- completes_goal
- profiling
properties:
completes_goal:
$ref: '#/components/schemas/CompletesGoal'
profiling:
type: object
required:
- profile_adjustment_type
- profiles
properties:
profile_adjustment_type:
type: string
description: Type of profile adjustment.
enum:
- percentage
example: percentage
profiles:
type: array
minItems: 1
items:
$ref: '#/components/schemas/RequestDraftRegularProfileV3'
- title: Only profiles populated with nominal as profile adjustment type
type: object
required:
- completes_goal
- profiling
properties:
completes_goal:
$ref: '#/components/schemas/CompletesGoal'
profiling:
type: object
required:
- profile_adjustment_type
- profiles
properties:
profile_adjustment_type:
type: string
description: Type of profile adjustment.
enum:
- nominal
example: nominal
profiles:
type: array
minItems: 1
items:
$ref: '#/components/schemas/RequestDraftRegularProfileV3'
example:
completes_goal: 1000
profiling:
template_id: e198c976-ce22-436d-acc1-95aa318cc54d
profile_adjustment_type: percentage
profiles:
- object: regular
name: birth gender
quotas_enabled: true
targets:
- conditions:
- object: selection
question_id: 43
option: '1'
quota:
name: SF-BirthGender-Quota-1
completes_goal_percentage: 49.21
- conditions:
- object: selection
question_id: 43
option: '2'
quota:
name: SF-BirthGender-Quota-2
completes_goal_percentage: 50.79
- object: regular
quotas_enabled: true
targets:
- conditions:
- object: range
question_id: 42
min: 15
max: 19
quota:
completes_goal_percentage: 28.21
- conditions:
- object: range
question_id: 42
min: 20
max: 29
quota:
completes_goal_percentage: 30.79
- conditions:
- object: range
question_id: 42
min: 30
max: 39
quota:
completes_goal_percentage: 21.4
- conditions:
- object: range
question_id: 42
min: 40
max: 99
quota:
completes_goal_percentage: 19.6
- object: regular
quotas_enabled: true
targets:
- conditions:
- object: open_ended
question_id: 45
allow_all_values: false
open_ended_values:
- '98001'
- '98007'
- '98125'
- '98258'
quota:
completes_goal_percentage: 50
- conditions:
- object: open_ended
question_id: 45
allow_all_values: false
open_ended_values:
- '78001'
- '78007'
- '78125'
- '78258'
quota:
completes_goal_percentage: 50
- object: blended
name: Number of movies watched near grocery
quotas_enabled: true
targets:
- conditions:
- object: selection
question_id: 157
option: '1'
- object: selection
question_id: 63
option: '1'
quota:
name: SF-Walmart-1
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '2'
- object: selection
question_id: 63
option: '1'
quota:
name: SF-Walmart-2
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '3'
- object: selection
question_id: 63
option: '1'
quota:
name: SF-Walmart-3
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '4'
- object: selection
question_id: 63
option: '1'
quota:
name: SF-Walmart-4
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '5'
- object: selection
question_id: 63
option: '1'
quota:
name: SF-Walmart-5
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '6'
- object: selection
question_id: 63
option: '1'
quota:
name: SF-Walmart-6
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '7'
- object: selection
question_id: 63
option: '1'
quota:
name: SF-Walmart-7
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '1'
- object: selection
question_id: 63
option: '2'
quota:
name: SF-Target-1
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '2'
- object: selection
question_id: 63
option: '2'
quota:
name: SF-Target-2
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '3'
- object: selection
question_id: 63
option: '2'
quota:
name: SF-Target-3
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '4'
- object: selection
question_id: 63
option: '2'
quota:
name: SF-Target-4
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '5'
- object: selection
question_id: 63
option: '2'
quota:
name: SF-Target-5
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '6'
- object: selection
question_id: 63
option: '2'
quota:
name: SF-Target-6
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '7'
- object: selection
question_id: 63
option: '2'
quota:
name: SF-Target-7
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '1'
- object: selection
question_id: 63
option: '7'
quota:
name: SF-CVS-1
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '2'
- object: selection
question_id: 63
option: '7'
quota:
name: SF-CVS-2
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '3'
- object: selection
question_id: 63
option: '7'
quota:
name: SF-CVS-3
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '4'
- object: selection
question_id: 63
option: '7'
quota:
name: SF-CVS-4
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '5'
- object: selection
question_id: 63
option: '7'
quota:
name: SF-CVS-5
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '6'
- object: selection
question_id: 63
option: '7'
quota:
name: SF-CVS-6
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '7'
- object: selection
question_id: 63
option: '7'
quota:
name: SF-CVS-7
completes_goal_percentage: 2
- conditions:
- object: selection
question_id: 157
option: '1'
- object: selection
question_id: 157
option: '2'
- object: selection
question_id: 157
option: '3'
- object: selection
question_id: 157
option: '4'
- object: selection
question_id: 63
option: '8'
quota:
name: SF-KROGER
completes_goal_percentage: 2
- object: regular
quotas_enabled: true
targets:
- conditions:
- object: selection
question_id: 47
option: '4'
- object: selection
question_id: 47
option: '5'
- object: selection
question_id: 47
option: '6'
- object: selection
question_id: 47
option: '7'
quota:
name: Group-1
completes_goal_percentage: 49.21
- conditions:
- object: selection
question_id: 47
option: '8'
quota:
completes_goal_percentage: 50.79
- object: regular
quotas_enabled: false
targets:
- conditions:
- object: selection
question_id: 113
option: '5'
- conditions:
- object: selection
question_id: 113
option: '8'
- con
# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cint/refs/heads/main/openapi/cint-manage-profiles-for-launched-target-groups-api-openapi.yml