Getting Started
Using the Results API (v2)
Introduction
The Results API is a set of endpoints that can help you analyze and gather in-depth data from test and session results.
Use cases include:
- automated research pipelines
- real-time action triggers and insight delivery
- AI analysis and insight generation
- custom dashboards and internal UX portals
Note: The Results API (v2) works only on the latest test types and the sessions associated with them.
These tests include:
For other test types, see note below.
Attention: Classic UserTesting tests and their resources are NOT available via the Results API (v2).
These tests include:
Live Conversation, Video Upload, Prototype Test, App Test, and Web Test.Use legacy endpoints (v1) to access classic UserTesting data.
Overview of test and session results
Within the UserTesting platform, companies receive an account to manage their data. Each account is divided into workspaces to organize data by category. The company grants team members access by workspace. Team members create tests, which are a set of questions or tasks, within each workspace. These tests are then given to participants to answer. Each participant’s interaction with a test is a session. Participants are also grouped into audiences.

Resource diagram
Scope of the Results API
Since your client credentials are associated with your email address, the Results API gives you access to the data within the workspaces where your email is used to register you as a team member.
Within the workspaces you have access to, you will be able to fetch the following result types:
- Test results (for interaction tests) return QXscores, which are a measure of participants' experience within each session.
- Session results give you a list of all sessions within a test and can return session details, such as participant demographics and task responses. If working with an interaction test, you can also retrieve session videos and transcripts.
Prerequisites
-
Obtain an access token for a user in the workspace you want to work in (
ACCESS_TOKEN). Go to the Authorization page for details. -
Obtain the universally unique identifier (UUID) of a test (
TEST_ID). Go to How to Obtain a TestId (UUID) for details.
After obtaining the required values for ACCESS_TOKEN and the TEST_ID mentioned in the prerequisites, you’re ready to start working with session and test data.
Note: Each of the endpoints described below uses the following base URL:
https://api.use2.usertesting.com
Working with session results
Fetch all sessions in a test
Let’s begin by getting a list of all the sessions within a test.
Use the testId as a query parameter in the session results endpoint.
Best Practice: Always use pagination query parameters (
limitandoffset) along with the appropriate logic to ensure all sessions are retrieved.
- Use the response data from
limit,offset, andtotalCountin themeta.paginationproperty to calculate the number of page iterations needed to collect all sessions in the test.- By default,
limitis set to25andoffsetto0.- In the response, sessions are sorted in descending order, i.e., from newest to oldest.
Request example (with pagination defaults)
curl --request GET \
--url 'https://api.use2.usertesting.com/api/v2/sessionResults?testId=TEST_ID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ACCESS_TOKEN'Response sample
{
"testId": "TEST_ID",
"sessions": [
{
"sessionId": "SESSION_ID_00",
"audienceId": "AUDIENCE_ID_00",
"status": "COMPLETE",
"startTime": "2024-11-21T12:23:52.614Z",
"finishTime": "2024-11-21T12:25:03.347Z"
},
{
"sessionId": "SESSION_ID_01",
"audienceId": "AUDIENCE_ID_00",
"status": "COMPLETE",
"startTime": "2024-11-21T12:28:10.112Z",
"finishTime": "2024-11-21T12:31:05.203Z"
},
],
"meta": {
"pagination": {
"limit": 25,
"offset": 0,
"totalCount": 2
}
}
}Response handling
From the response, grab a session ID from any sessions[ ].sessionId property.
You can then use the sessions[ ].sessionId value as a path parameter on the other session results endpoints to do the following:
Retrieve session details
If you need in-depth session details, such as session metadata, participant demographics, or task results, use the session ID as a path parameter in the sessionResults endpoint.
Request example
curl --request GET \
--url https://api.use2.usertesting.com/api/v2/sessionResults/SESSION_ID \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ACCESS_TOKEN'Response sample
{
"sessionId": "SESSION_ID",
"audienceId": "AUDIENCE_ID",
"testPlanId": "TEST_PLAN_ID",
"sessionParticipant": {
"participantId": "PARTICIPANT_ID",
"demographicsInfo": [
{
"id": "DEMOGRAPHICS_ID",
"code": "GENDER",
"label": "What is your gender?",
"value": "Male",
"type": "DEMOGRAPHIC_QUESTION_TYPE_SINGLE"
}
]
},
"sessionTaskResults": [
{
"taskId": "TASK_ID",
"taskType": "TASK_TYPE_RATING_SCALE",
"taskResponse": {
"ratingScaleSpecificFields": {
"uuid": "RATING_ID",
"text": "How satisfied are you with our service?",
"value": "4"
}
}
}
]
}Retrieve a video transcript
To analyze what participants say during a session, you can retrieve the entire video transcript in WebVTT format using the session ID on this endpoint:
Request example
curl --request GET \
--url https://api.use2.usertesting.com/api/v2/sessionResults/SESSION_ID/transcript \
--header 'Accept: text/vtt' \
--header 'Authorization: Bearer ACCESS_TOKEN'Response sample
WEBVTT
00:00:00.000 --> 00:00:02.000
Hello, World!
00:00:02.000 --> 00:00:04.000
This is a VTT exampleObtain a video download link
You can also get links to download session videos to help you make clips or video summaries for stakeholders to watch by using the session ID on this endpoint:
Request example
curl --request GET \
--url https://api.use2.usertesting.com/api/v2/sessionResults/SESSION_ID/videoDownloadUrl \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ACCESS_TOKEN'Response sample
{
"videoUrl": "VIDEO_URL",
"sessionId": "SESSION_ID",
"expiresAt": "2025-10-01T12:00:00Z"
}Working with test results
Some test types, such as interaction tests, gather QXscore data. You can obtain the QXscore by using the test ID on this endpoint's path:
Request example
curl --request GET \
--url https://api.use2.usertesting.com/api/v2/testResults/TEST_ID/qxScores \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ACCESS_TOKEN'Response sample
{
"testId": "TEST_ID",
"qxScores": [
{
"taskGroupId": "TASK_GROUP_ID",
"label": "QXscore 1",
"qxScore": 38,
"components": {
"behavioral": 25,
"attitudinal": 50
},
"values": {
"behavioral": [
50,
50
],
"usability": 50,
"trust": 50,
"appearance": 50,
"loyalty": 50
}
}
],
"meta": {
"totalQxTasks": 1,
"completes": 2
}
}Further resources
Go to the Tutorials section to explore use case implementations.
Updated 1 day ago
