How to generate reports
This guide explains how to generate reports for your account on the Cint Exchange. You can generate reports at the target group, project, business unit, or account level to get more insight into your data.
Prerequisites:
- You have access to the Cint API.
- You have the necessary roles assigned to your API client.
A variety of useful reports exist for you to generate. The report_type value is what you'll use in the API path:
| Report name | report_type value | Available level(s) |
|---|---|---|
| Completes | completes | account, business unit, project, target group |
| Reconciliation eligible RIDs | reconciliation_eligible_rids | project, target group |
| Reconciliation status | reconciliation_status | account, project, target group |
| Respondent analysis | respondent_analysis | project, target group |
| Sample bought | sample_bought | account, business unit, project, target group |
| Termination details | termination_details | project, target group |
Steps to generate and retrieve a report
1. Request a report
Call the generate report endpoint with a JSON request body that matches the report you want to generate. You'll need to replace the placeholder values in the example with your own.
-
Path Parameters:
account_id: Your unique account ID.report_type: The type of report you want to generate.
-
Body Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
filter | string | Yes | The scope of the report (e.g., project, account). A null value applies an account-level filter. |
filter_ids | array | No | A list of specific IDs to filter by. |
start_date | string | Yes | Start date in YYYY-MM-DD format. |
end_date | string | Yes | End date in YYYY-MM-DD format. |
report_options | object | No | Additional options for the report. |
email_recipients | array | Yes | A list of user UUIDs to receive the report. You can find these IDs in the Cint Exchange. |
Here are the available report_options:
| Option | Description |
|---|---|
include_respondent_answers | Set to true to include respondent answers in the report. |
link_type | Specifies the type of link to use in the report. |
Example request for a project-level report:
curl -L 'https://api.cint.com/v1/demand/accounts/{account_id}/reports/{report_type}' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <YOUR_JWT_TOKEN>' \
-H 'Cint-API-Version: 2025-12-18' \
-d '{
"filter": "project",
"filter_ids": [
"01K9YSDE9KER7ERBCRERG0H3KN",
"01K9RP8Z7V6YHJQ1JWH7YNGSQ1"
],
"start_date": "2025-11-03",
"end_date": "2025-12-03",
"report_options": {
"include_respondent_answers": false,
"link_type": null
},
"email_recipients": [
"e7d0974b-56f0-435a-9e04-2219b737ba88",
"ef7dc710-4e1d-4dd9-abb4-20f798314b9b"
]
}'
- A successful request returns a
202HTTP status code and a JSON response body with metadata about your report request:
{
"create_date": "2025-12-03T15:45:50Z",
"create_params": {
"end_date": "2025-12-03",
"filter": "project",
"filter_ids": [
"01K9YSDE9KER7ERBCRERG0H3KN",
"01K9RP8Z7V6YHJQ1JWH7YNGSQ1"
],
"report_options": {
"include_respondent_answers": false,
"link_type": null
},
"start_date": "2025-11-03"
},
"level": "project",
"message": "Report created",
"report_id": "01KBJE8BBG0558X25K9VJ4H4N9",
"report_type": "completes",
"report_url": "https://exchange.cint.com/download?file=13_completes_2025_12_03_15_45_50_utc_Demo_Acct.csv&download_url=%2Fdemand%2Faccounts%2F13%2Freports%2Fdownload%3Freport_type%3Dcompletes%26file%3D01KBJE8BBG0558X25K9VJ4H4N9%2F13_completes_2025_12_03_15_45_50_utc_Demo_Acct.csv&type=report",
"requestor": {
"email": "jon.doe@cint.com",
"id": "e7d0974b-56f0-435a-9e04-2219b737ba88",
"name": "Jon Doe"
},
"status": "processing"
}
The report generation endpoint is synchronous and queues your report for generation, but the report generation process itself is asynchronous. You can call the download endpoint or use the URL from the report_url field in the response to download the report when it's ready.
2. Check the report status
You can check the status of your report by calling the status endpoint:
- Path Parameters:
account_id: Your unique account ID.report_type: The type of report you want to generate.
The filter field's value is the level for which you're generating the report.
Example request to check the status of a report
curl -L 'https://api.cint.com/v1/demand/accounts/{account_id}/reports/{report_id}/status' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <YOUR_JWT_TOKEN>' \
-H 'Cint-API-Version: 2025-12-18'
The response will contain metadata and the status of the report:
{
"data_analysis": false,
"end_date": "2025-12-03T00:00:00Z",
"message": "Job successful",
"report_id": "01KBJE8BBG0558X25K9VJ4H4N9",
"report_url": "https://exchange.cint.com/download?file=13_completes_2025_12_03_15_45_50_utc_Demo_Acct.csv&download_url=%2Fdemand%2Faccounts%2F13%2Freports%2Fdownload%3Freport_type%3Dcompletes%26file%3D01KBJE8BBG0558X25K9VJ4H4N9%2F13_completes_2025_12_03_15_45_50_utc_Demo_Acct.csv&type=report",
"respondent_answer": false,
"start_date": "2025-11-03T00:00:00Z",
"status": "complete",
}
3. Download the report
When the status is complete, you can use the URL from the report_url field or call the download endpoint directly.
- Path Parameters:
account_id: Your unique account ID.report_id: The ID from the previous call.
Example request to download a report
curl -L 'https://api.cint.com/v1/demand/accounts/{account_id}/reports/{report_id}/download' \
-H 'Accept: text/csv' \
-H 'Authorization: Bearer <YOUR_JWT_TOKEN>' \
-H 'Cint-API-Version: 2025-12-18'
The response body's Content-Type will be text/csv and will contain the contents of the report you requested.
If you try to call the download endpoint before the report is ready, you will get an error.
Troubleshooting
- Report status isn't changing: Report generation time depends on the size of the data set. For large projects, this may take several minutes. We recommend a polling interval of 30 seconds to avoid hitting rate limits.
- "Cannot download report" error: You can only download a report once its status is
complete. Trying to download a pending report will produce an error. - Incorrect report level: Trying to generate a report on a level for which it's not available (e.g., a "Reconciliation Eligible ID" report at the "Account" level) will result in a validation error.
400 Bad Request: This may indicate that your request body is malformed or missing required fields.401 Unauthorized: Your JWT is either missing, invalid, or expired.403 Forbidden: You don't have the necessary permissions to generate this report.