The official API for the QualRecruit platform, used to retrieve and manipulate projects, respondents, the panel, incentives and scheduling.
Production
Clients
Operations related to clients
Search clients
Returns the clients whose name contains the query, ordered by name.
Name filter and row window.
Matching clients for the requested page.
The row window is negative, inverted, or wider than 1000 rows.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Get a client
Returns a single client by identifier.
The requested client.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No client exists with this identifier.
Incentives
Operations related to incentives
Search incentives
Returns incentives across all projects, most recently initiated first. Every filter is optional and filters combine, so sending an empty body returns the entire history. Results are paged with StartRow and EndRow, and at most 1000 rows may be requested at a time.
Filters and row window.
Matching incentives for the requested page.
'date_range' when BeforeDate is later than AfterDate, 'end_row' when the row window is inverted or wider than 1000 rows.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Get an incentive
Returns a single incentive by identifier.
The requested incentive.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No incentive exists with this identifier.
List panel exports
Returns the 100 most recent panel export requests, newest first.
The most recent export requests.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Request a panel export
Queues an export of the panelists matching the filters. An identical request made within the last five minutes is returned as-is instead of queueing a second export.
Filters selecting the panelists to export.
The queued - or matching recent - export request.
A filter references a column that is not part of the panel.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Get a panel export
Returns the state of a panel export request.
The export request, with a download link when complete.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No export request exists with this identifier.
Get the panel schema
Returns the columns that describe the panel.
The current panel schema.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Get a panelist
Returns a single panelist by identifier.
The requested panelist.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No panelist exists with this identifier.
Delete a panelist
Permanently removes a panelist. Only panelists with no attachment to an existing project may be deleted.
The panelist was deleted.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
The panelist has project history and cannot be deleted.
No panelist exists with this identifier.
Update a panelist
Replaces the details of a single panelist. The request carries the complete record, so fields left empty are written as empty.
Replacement details for the panelist. The Id field is ignored when updating a single record.
The panelist as stored after the update.
'update_failed' when the write did not apply, otherwise the field that failed validation: 'tags' when a tag does not exist on the panel, 'country' when the location country is missing or has not been enabled for your tenant, 'need_email_or_phone' when both contact fields are empty, 'invalid_phone' when the number cannot be parsed for that country, 'invalid_dob' when the date of birth is before 1900 or in the future, 'invalid_data' when a question identifier is unknown, 'invalid_data_format' when an answer does not match its question type.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No panelist exists with this identifier.
Search panelists
Returns the panelists matching the filters. Filters are combined with AND and may target both built-in fields and panel questions. Results are paged with StartRow and EndRow, and at most 1000 rows may be requested at a time.
Filters and row window.
Matching panelists for the requested page.
The row window is negative, inverted or wider than 1000 rows, or a filter references a column that is not part of the panel.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Create a panelist
Adds a single panelist to the panel. The email address must not already be in use.
Panelist to create.
The created panelist.
The field that failed validation: 'tags' when a tag does not exist on the panel, 'country' when the location country is missing or has not been enabled for your tenant, 'need_email_or_phone' when both contact fields are empty, 'invalid_phone' when the number cannot be parsed for that country, 'invalid_dob' when the date of birth is before 1900 or in the future, 'invalid_data' when a question identifier is unknown, 'invalid_data_format' when an answer does not match its question type.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Another panelist already uses this email address.
Import panelists in bulk
Adds up to 5000 panelists in a single transaction. Every panelist needs an email address, the addresses must be unique within the request, and none of them may already exist on the panel. Nothing is written unless the whole batch validates.
Panelists to create. Maximum 5000 per call.
Every panelist in the batch was created.
'too_many_imports' for more than 5000 panelists, 'emails_required' when an email address is missing, 'duplicate_emails' when the batch repeats an address, 'import_failed' when an address is already on the panel or the write failed. Otherwise the first field that failed validation: 'tags' when a tag does not exist on the panel, 'country' when the location country is missing or has not been enabled for your tenant, 'need_email_or_phone' when both contact fields are empty, 'invalid_phone' when the number cannot be parsed for that country, 'invalid_dob' when the date of birth is before 1900 or in the future, 'invalid_data' when a question identifier is unknown, 'invalid_data_format' when an answer does not match its question type.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Update panelists in bulk
Applies up to 5000 panelist updates in one call. Each entry must carry the Id of the panelist to update and a complete record - fields left empty are written as empty. Panelists that could not be updated are reported in the response rather than failing the call.
Panelist updates. Maximum 5000 per call.
How many updates were applied, and the identifiers that failed.
An empty list, 'too_many_updates' for more than 5000 entries, 'id_field_required' when an entry has no Id, 'duplicate_ids' when an Id is repeated, or 'bad_data: ' followed by the fields that failed validation: 'tags' when a tag does not exist on the panel, 'country' when the location country is missing or has no messaging numbers, 'need_email_or_phone' when both contact fields are empty, 'invalid_phone' when the number cannot be parsed for that country, 'invalid_dob' when the date of birth is before 1900 or in the future, 'invalid_data' when a question identifier is unknown, 'invalid_data_format' when an answer does not match its question type.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Projects
Operations related to projects
Create a project
Creates an open project owned by the given user. Supplying DuplicateProjectId copies the schema and settings of an existing project. Requires the Write Access API to be enabled for your tenant.
Details of the project to create.
The created project.
'invalid_property_or_format' for an unknown property identifier or a value of the wrong type, 'invalid_tag' for a tag that does not exist, 'quant_disabled' when a quantitative project is requested without the feature, 'invalid_locale' or 'invalid_time_zone' when those are not configured for the tenant, 'invalid_owner' when the initial owner is not a user, 'duplicate_project_not_found' when the project to duplicate does not exist.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
The write API is disabled for this tenant.
Get a project
Returns a single project by identifier, including its tags, custom properties and recruitment counts.
The requested project.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No project exists with this identifier.
List custom project properties
Returns the custom project properties configured for the tenant. Their identifiers are the keys of the Properties dictionary when creating, reading or searching projects.
The properties configured for this tenant, ordered by name.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Get a project schema
Returns the tabs and columns that make up the project grid.
The current schema for the project.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No project exists with this identifier.
List respondents in a project
Returns the respondents recruited into a project, oldest first, with their answers to the project questions.
The respondents matching the request.
'invalid_group' when the group is not part of the project schema.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No project exists with this identifier, or it has no schema.
List the survey feed for a group
Returns survey sessions targeting a group that have not yet been attached to a respondent. Identifiers are survey session identifiers rather than respondent identifiers, contact fields are empty and every entry is marked as staged.
The feed entries for the group.
'invalid_group' when the group is not part of the project schema.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No project exists with this identifier, or it has no schema.
Get validation results for a group
Validates a group (tab) against the project schema and returns qualification and quota errors and quota counts.
The validation results for the group.
'invalid_group' when the group is not part of the project schema.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No project exists with this identifier, or it has no schema.
Get a respondent
Returns a single respondent record in a project.
The requested respondent.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
The project or the respondent does not exist, or the project has no schema.
Move respondents to another tab
Moves the given respondents into another tab within the project. Requires the write API to be enabled for the tenant.
Respondents to move and the group to move them into.
The respondents were moved.
An empty respondent list, or 'invalid_target_group' when the group is not part of the project schema.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
The write API is disabled for this tenant.
No project exists with this identifier, or it has no schema.
Search projects
Returns the projects matching the filters. Every filter is optional and filters combine, so an empty body returns all open projects. Results are paged with StartRow and EndRow, and at most 1000 rows may be requested at a time.
Filters and row window.
Matching projects for the requested page.
The row window is inverted or wider than 1000 rows, or a property filter uses an unknown identifier or a value of the wrong type.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Schedule
Operations related to calendar invitations
List scheduled sessions for a project
Returns every active session booked with a respondent in the project. Cancelled invitations are not included.
Active sessions booked in the project.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No project exists with this identifier.
Search scheduled sessions across projects
Returns active sessions booked with respondents across all open projects, ordered by start time. Every filter is optional and filters combine, so an empty body returns sessions from the start of today onwards. Results are paged with StartRow and EndRow, and at most 1000 rows may be requested at a time.
Filters and row window.
Matching sessions for the requested page.
The row window is negative, inverted, or wider than 1000 rows, or StartDate is after EndDate.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
System
Operations related to general system services
Search the mail suppression list
Returns the email addresses that are on the global email suppression list. Every filter is optional and filters combine. Results are paged with StartRow and EndRow, and at most 1000 rows may be requested at a time.
Filters and row window.
Matching suppression entries for the requested page.
'start_row' when the row window is negative or inverted, 'end_row' when it is wider than 1000 rows.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Remove addresses from the mail suppression list
Removes the given email addresses from the global suppression list. Requires the write API to be enabled for the tenant.
Addresses to release.
The addresses are no longer suppressed.
'email_count' when more than 1000 addresses are sent, 'email_format' when an entry is not a bare email address.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
The write API is disabled for this tenant.
Add addresses to the mail suppression list
Adds an email address to the global suppression list. Addresses that are already on the list are not affected.
Addresses to suppress.
The addresses are now suppressed.
'email_count' when more than 1000 addresses are sent, 'email_format' when an entry is not a bare email address.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
Voice
Operations related to voice calls
List calls for a project
Returns the completed (including missed) calls placed to or received from respondents in a project, ordered by most recent first. Results are returned 100 calls at a time.
The requested page of calls.
The token is missing, unknown, disabled or expired, or the API is not enabled for the tenant.
No project exists with this identifier.