Cint Profiling Library API
List all profiling questions including account specific questions with translations and categories. Profiling questions allow you to target and filter respondents based on their characteristics.
List all profiling questions including account specific questions with translations and categories. Profiling questions allow you to target and filter respondents based on their characteristics.
openapi: 3.0.3
info:
title: Demand Accounts Profiling Library 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: Profiling Library
description: List all profiling questions including account specific questions with translations and categories. Profiling questions allow you to target and filter respondents based on their characteristics.
paths:
/demand/accounts/{account_id}/questions-translation:
parameters:
- $ref: '#/components/parameters/AccountID'
- $ref: '#/components/parameters/QuestionsTranslationIDs'
- $ref: '#/components/parameters/QuestionsTranslationLocale'
- $ref: '#/components/parameters/QuestionsTranslationTranslationLanguage'
- $ref: '#/components/parameters/QuestionsTranslationQuery'
- $ref: '#/components/parameters/QuestionsTranslationAllowCustomQuals'
- $ref: '#/components/parameters/QuestionsTranslationAllowOnlyCustomQuals'
- $ref: '#/components/parameters/EndBefore'
- $ref: '#/components/parameters/StartAfter'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
get:
summary: Lists all available questions, answers, and conditions.
description: 'Lists the available standard and account-specific profiling questions you can use to define your target audience. This endpoint provides the `question_id` and `option` IDs required for building the `profiling` object in other API calls, such as when creating a target group or calculating feasibility.
Key behaviors:
* **Filtering:** You can filter the list by providing a comma-separated list of question `id`s, or perform a text search across questions and answers using the `query` parameter. **If no question IDs are provided, all questions and answers/conditions will be returned.**
* **Custom Qualifications:** By default, only standard Cint questions are returned. Use the `allow_custom_quals` parameter to include your account-specific questions, or `only_custom_quals` to retrieve **only** those questions.
* **Translation:** The `description` and `text` fields are translated based on the `locale` and `translation_language` parameters. The `..._translated` fields provide a consistent English-language fallback.
* **Pagination:** The response is paginated. Use the `page_size` parameter to control the number of results per page and the `start_after` or `end_before` cursors to navigate between pages.
* **Defaults:** If you don''t provide a `locale`, the default is `eng_us`. If `translation_language` is omitted, the default is English.
'
operationId: account_questions_translation
responses:
'200':
description: A list of profiling questions and translations were retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/QuestionsTranslationResponse'
example:
total: 5
profiles:
- object: regular
name: AGE
description: Por favor, indique su edad.
description_translated: What is your age?
quotas_enabled: false
targets:
- text: ''
text_translated: ''
conditions:
- object: range
question_id: 42
option: null
option_mask: XX
standard: true
profile_condition_type: Numeric - Open-end
classification_id: 32
classification_code: DEM
- object: regular
name: GENDER
description: ¿Es usted…?
description_translated: What is your gender?
quotas_enabled: false
targets:
- text: Hombre
text_translated: Male
conditions:
- object: selection
question_id: 43
option: '1'
- text: Mujer
text_translated: Female
conditions:
- object: selection
question_id: 43
option: '2'
- text: Ninguno de los anteriores
text_translated: None of the above
conditions:
- object: selection
question_id: 43
option: '-3105'
option_mask: TestingJohnnyZ
standard: true
profile_condition_type: Single Punch
classification_id: 32
classification_code: DEM
- object: regular
name: ZIP
description: ¿Cuál es su código postal?
description_translated: What is your zip code?
quotas_enabled: false
targets:
- text: ''
text_translated: ''
conditions:
- object: open_ended
question_id: 45
option: null
allow_all_values: true
option_mask: XXXXX
standard: true
profile_condition_type: Numeric - Open-end
classification_id: 32
classification_code: DEM
- object: regular
name: HISPANIC
description: ¿Es usted Hispano, Latino o del origen Español?
description_translated: Are you of Hispanic, Latino, or Spanish origin?
quotas_enabled: false
targets:
- text: Argentina
text_translated: Argentina
conditions:
- object: selection
question_id: 47
option: '4'
- text: Colombia
text_translated: Colombia
conditions:
- object: selection
question_id: 47
option: '5'
- text: Ecuador
text_translated: Ecuador
conditions:
- object: selection
question_id: 47
option: '6'
- text: El Salvador
text_translated: El Salvador
conditions:
- object: selection
question_id: 47
option: '7'
- text: España
text_translated: Spain
conditions:
- object: selection
question_id: 47
option: '12'
- text: Guatemala
text_translated: Guatemala
conditions:
- object: selection
question_id: 47
option: '8'
- text: Nicaragua
text_translated: Nicaragua
conditions:
- object: selection
question_id: 47
option: '9'
- text: No, no soy ni Hispano ni Latino ni de Origen Español
text_translated: No , not of Hispanic, Latino, or Spanish origin
conditions:
- object: selection
question_id: 47
option: '1'
- text: Otro
text_translated: Other
conditions:
- object: selection
question_id: 47
option: '14'
- text: Panama
text_translated: Panama
conditions:
- object: selection
question_id: 47
option: '10'
- text: Peru
text_translated: Peru
conditions:
- object: selection
question_id: 47
option: '11'
- text: Prefiero no responder
text_translated: Prefer not to answer
conditions:
- object: selection
question_id: 47
option: '15'
- text: Si, Puerto Rico
text_translated: Yes, Puerto Rican
conditions:
- object: selection
question_id: 47
option: '16'
- text: Si, soy Mexicano, México-Americano o Chicano
text_translated: Yes, Mexican, Mexican American, Chicano
conditions:
- object: selection
question_id: 47
option: '2'
- text: Sí, Cubano
text_translated: Yes, Cuban
conditions:
- object: selection
question_id: 47
option: '3'
- text: Venezuela
text_translated: Venezuela
conditions:
- object: selection
question_id: 47
option: '13'
option_mask: ''
standard: true
profile_condition_type: Single Punch
classification_id: 32
classification_code: DEM
- object: regular
name: STORES 1
description: Thinking about grocery shopping for your household, about how often do you shop at each of the following stores for groceries?
description_translated: Thinking about grocery shopping for your household, about how often do you shop at each of the following stores for groceries?
quotas_enabled: false
targets:
- text: Wal- Mart
text_translated: Wal- Mart
conditions:
- object: selection
question_id: 63
option: '1'
- text: Target
text_translated: Target
conditions:
- object: selection
question_id: 63
option: '2'
- text: Whole Foods
text_translated: Whole Foods
conditions:
- object: selection
question_id: 63
option: '3'
- text: Trader Joe's
text_translated: Trader Joe's
conditions:
- object: selection
question_id: 63
option: '4'
- text: 7-11
text_translated: 7-11
conditions:
- object: selection
question_id: 63
option: '5'
- text: Walgreen's
text_translated: Walgreen's
conditions:
- object: selection
question_id: 63
option: '6'
- text: CVS
text_translated: CVS
conditions:
- object: selection
question_id: 63
option: '7'
- text: Kroger
text_translated: Kroger
conditions:
- object: selection
question_id: 63
option: '8'
- text: Randalls
text_translated: Randalls
conditions:
- object: selection
question_id: 63
option: '9'
- text: CostCo
text_translated: CostCo
conditions:
- object: selection
question_id: 63
option: '10'
- text: Sam's Club
text_translated: Sam's Club
conditions:
- object: selection
question_id: 63
option: '11'
- text: None of the above
text_translated: None of the above
conditions:
- object: selection
question_id: 63
option: '-3105'
option_mask: ''
standard: false
profile_condition_type: Multi Punch
classification_id: -1
classification_code: ''
has_more: true
next_cursor: 00000000-0000-0000-0000-00000000003f
'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'
tags:
- Profiling Library
/demand/questions/categories:
parameters:
- $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
get:
operationId: list_all_question_categories
summary: Lists all available question categories
description: Lists all available categories for profiling questions. You can use these categories to help organize and discover relevant questions when building a target group.
tags:
- Profiling Library
responses:
'200':
description: A list of question categories was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/ListQuestionCategories'
example:
categories:
- id: 23
code: AIR
name: Airlines/Travel
- id: 25
code: AUT
name: Automotive
- id: 28
code: B2B
name: Business to Business
'400':
$ref: '#/components/responses/Error_BadRequest'
'401':
$ref: '#/components/responses/Error_Unauthorized'
'403':
$ref: '#/components/responses/Error_Forbidden'
'500':
$ref: '#/components/responses/Error_Internal'
components:
parameters:
QuestionsTranslationAllowOnlyCustomQuals:
name: only_custom_quals
in: query
description: If `true`, the response will only include your account's custom qualifications.
schema:
type: boolean
example: true
QuestionsTranslationTranslationLanguage:
name: translation_language
in: query
description: The ISO 639-2 (3-letter) code for the language to use for the `description_translated` and `text_translated` fields.
schema:
type: string
example: spa
QuestionsTranslationQuery:
name: query
in: query
description: Text filter on the results set.
schema:
type: string
example: automotive
QuestionsTranslationLocale:
name: locale
in: query
description: Locale of target group in <language 1st 3 chars>_<country 2 char abbreviation> format.
required: true
schema:
type: string
example: eng_us
CintAPIVersion-2025-12-18:
name: Cint-API-Version
in: header
required: true
schema:
type: string
example: 2025-12-18
description: 'This header is MANDATORY for all API requests. The API version format is `YYYY-MM-DD`.
'
EndBefore:
name: end_before
in: query
description: Returns a list of objects that come before the provided pagination cursor. This is used for navigating to a previous page.
schema:
type: string
example: 7daa40ad-303b-40a2-89df-a9760400cde7
QuestionsTranslationAllowCustomQuals:
name: allow_custom_quals
in: query
description: If `true`, the response will include your account's custom qualifications in addition to the standard ones.
schema:
type: boolean
example: true
PageSize:
name: page_size
in: query
description: A limit on the number of objects to be returned, between 1 and 100.
schema:
type: integer
default: 10
example: 15
StartAfter:
name: start_after
in: query
description: Returns a list of objects after the provided pagination cursor, using the next_cursor from the previous response.
schema:
type: string
example: bff6a669-a469-409d-8c94-dcf92258043a
QuestionsTranslationIDs:
name: id
in: query
description: List of comma separated question IDs.
schema:
type: string
example: 42,43,97
AccountID:
name: account_id
description: The account's unique identifier.
in: path
required: true
schema:
$ref: '#/components/schemas/AccountID'
responses:
Error_NotFound:
description: A requested resource isn't found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
id: 7a5972ba-0825-4360-b852-fa2430e47034
object: not_found_error
detail: resource not found
Error_Internal:
description: A request failed due to an internal error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
id: d94b8bb2-a540-4a91-9c05-2aa3ae9a5e1e
object: unexpected_internal_error
detail: an internal error has led to the failure of this operation
Error_Forbidden:
description: A requested is forbidden.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
id: fe68cdd2-ee87-4dbf-8950-63c5cbca94c7
object: authorization_error
detail: you don't have the right permissions to perform this operation
Error_Unauthorized:
description: A request is unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
id: 1dcf0f40-f0d1-4cf6-8c00-c3d019d32faf
object: authorization_error
detail: no valid authorization provided for this operation
Error_BadRequest:
description: A request is not valid and can't be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
id: 9e278238-d011-4e05-8327-1ce1d5d26254
object: bad_request_error
detail: Expected field 'foo' is missing.
schemas:
QuestionCategoryID:
type: integer
description: The unique identifier for a question category.
example: 43
InvalidParam:
type: object
description: Describes a single invalid parameter in a request.
properties:
name:
type: string
description: The name of the parameter that failed validation.
reason:
type: string
description: A short explanation of why the parameter was invalid.
required:
- name
- reason
QuestionID:
type: integer
description: The unique identifier for a profiling question.
example: 12413
QuestionQuotaDetailsV3:
type: object
description: Quota for conditions.
required:
- text
- conditions
properties:
name:
type: string
description: The name of the target.
example: Target-Condition
text:
type: string
description: The display text for the answer option, in the requested locale.
example: Condition Text
text_translated:
type: string
description: Translated text of the condition used for display purpose.
example: Condition Text
conditions:
type: array
description: List of conditions for the quota.
minItems: 1
items:
$ref: '#/components/schemas/InterlockProfileConditionsV3'
ListQuestionCategories:
type: object
description: Lists all available question categories.
properties:
categories:
type: array
description: List of question categories.
items:
$ref: '#/components/schemas/QuestionCategory'
example:
categories:
- id: 23
code: AIR
name: Airlines/Travel
QuestionQuotaV3:
description: A polymorphic array containing conditions for a question. For question types like `range` or `open_ended` that do not have predefined conditions, this may be an empty array.
oneOf:
- title: Targets with conditions
type: array
minItems: 1
items:
$ref: '#/components/schemas/QuestionQuotaDetailsV3'
- title: No conditions
type: array
nullable: true
minItems: 0
items:
$ref: '#/components/schemas/RequestDraftNoQuotaV3'
QuestionCategory:
type: object
description: Indicates the question's category.
properties:
id:
$ref: '#/components/schemas/QuestionCategoryID'
code:
$ref: '#/components/schemas/QuestionCategoryCode'
name:
type: string
description: The name of the question category.
example:
id: 23
code: AIR
name: Airlines/Travel
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'
Error:
type: object
description: The standard error object returned for all failed API requests.
required:
- object
- detail
properties:
id:
type: string
format: uuid
description: A unique identifier for this specific error instance.
object:
type: string
description: A short informative string identifying the type of the error
pattern: ^([a-z]*_)*([a-z]*)$
detail:
type: string
description: An error message provides a concise overview of the cause of the error.
invalid_params:
type: array
nullable: true
description: An optional field containing a list of invalid parameters may be presented in validation errors for additional information.
items:
$ref: '#/components/schemas/InvalidParam'
ProfileTargetsRangeConditionsV3:
title: Range condition
type: object
description: A profiling condition that targets a numeric range (e.g. age).
required:
- object
- question_id
- min
- max
properties:
object:
type: string
description: The type of profiling condition. For this object, the value is always 'range'.
enum:
- range
example: range
question_id:
$ref: '#/components/schemas/QuestionID'
min:
type: integer
format: int32
minimum: 1
maximum: 99
description: The minimum numeric value (inclusive).
example: 18
max:
type: integer
format: int32
minimum: 1
maximum: 99
description: The maximum numeric value (inclusive).
example: 24
QuestionResponseProfileFormat:
type: object
description: Contains the details for a single profiling question, including its answer options and translations.
required:
- object
- name
- description
- quotas_enabled
- targets
- standard
- profile_condition_type
properties:
object:
type: string
description: Object field to distinguish the operation.
enum:
- regular
example: regular
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?
quotas_enabled:
type: boolean
description: Flag indicating if quotas are enabled.
example: false
targets:
$ref: '#/components/schemas/QuestionQuotaV3'
option_mask:
type: string
description: The question option mask.
example: XX
standard:
type: boolean
description: A flag that indicates if this is a standard Cint question (true) or a custom, account-specific question (false).
example: true
profile_condition_type:
type: string
description: The type of the profile.
enum:
- Single Punch
- Multi Punch
- Dummy
- Text - Open-end
- Numeric - Open-end
example: Single Punch
classification_id:
type: integer
description: ID associated with the question classification.
classification_code:
type: string
description: The code representing the classification of the question (e.g. AUT = Automotive, BAN = Banking/Finance, AIR = Airlines/Travel).
example: BAN
QuestionsTranslationResponse:
type: object
description: The paginated response object for a profiling question query.
required:
- total
- profiles
- has_more
properties:
total:
type: integer
description: Total number of questions available in the search results (not necessarily the count of records in the immediate response).
example: 29
profiles:
description: Array of questions and question options for the request.
type: array
nullable: true
items:
$ref: '#/components/schemas/QuestionResponseProfileFormat'
has_more:
type: boolean
description: A flag that's true if there are more results to retrieve in a subsequent request.
next_cursor:
$ref: '#/components/schemas/NextCursor'
InterlockProfileConditionsV3:
description: A polymorphic object representing a single profiling condition, which can be a `selection`, `range`, or `open_ended` type.
oneOf:
- $ref: '#/components/schemas/ProfileTargetsSelectionConditionsV3'
- $ref: '#/components/schemas/ProfileTargetsRangeConditionsV3'
- $ref: '#/components/schemas/ProfileTargetsOpenEndedConditionsV3'
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'
QuestionCategoryCode:
description: Code that uniquely identifies the question category.
type: string
enum:
- AIR
- ART
- AUT
- B2B
- BAN
- BEA
- BEV
- DEM
- DEV
- EDU
- ELE
- FAS
- FOO
- HOB
- HOM
- IT
- MED
- PER
- POL
- REC
- SUP
- TOB
- OTH
AccountID:
description: The account's unique identifier.
type: integer
format: int32
example: 101
NextCursor:
description: 'An identifier for pagination that indicates there are more items available.
When present, use this value to retrieve the next page of results.
'
type: string
nullable: true
example: bff6a669-a469-409d-8c94-dcf92258043a
ProfileTargetsOpenEndedConditionsV3:
title: Open-ended condition
description: A profiling condition that targets open-ended text values.
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: The type of profiling condition. For this object, the value is always '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
minItems: 0
maxItems: 0
items:
type: string
nullable: true
description: Must be null when `allow_all_values` is true.
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:
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cint/refs/heads/main/openapi/cint-profiling-library-api-openapi.yml