Progress
Questionnaire submissions
Read a questionnaire a client filled in, such as an intake form, with their answers.
A questionnaire submission is one questionnaire a client filled in, such as an intake form, with their answers. Check-ins, which repeat on a schedule, are separate: see Check-in submissions.
Attributes
- idstring
Its unique ID.
- namestring
The questionnaire's name, as it was when the client filled it in.
- clientobject
- submittedAttimestamp
- answersarray of objects
One shape per question type, told apart by
type.answeris the answer as text, empty if there's none, as for uploads and signatures. New question types can appear, and one not listed here hasquestion,typeandanswer.Show 10 child attributesHide child attributes
- questionstring
- typeenum
The kind of question, which decides the other fields. New types can appear.
Known valuestextnumberone_to_tenstar_ratingmetricyes_nodatemultiple_choiceprogress_photosmediasignature - answerstring
The answer as a number, or
nullif it isn't one. Only whentypeisnumber,one_to_ten,star_rating,metric.nullif the metric has no unit. Only whentypeismetric.The metric the answer was saved to, for
GET /metrics/{metricId}/entries.nullif it wasn't saved, as with a blank answer. Only whentypeismetric.nullif unanswered. Only whentypeisyes_no.- selectedOptionsarray of strings
Only when
typeismultiple_choice. - fileCountinteger
How many files the client uploaded. Only when
typeisprogress_photos,media. - signedboolean
Only when
typeissignature.
{
"id": "6ad6af70a4050c71a4069f72",
"name": "New client questionnaire",
"client": {
"id": "6ad6af41d3199442d31b2743",
"name": "Jordan Miller"
},
"submittedAt": "2026-10-26T14:32:05.000Z",
"answers": [
{
"question": "What went well this week?",
"type": "text",
"answer": "Hit every session and slept better."
},
{
"question": "How would you rate your energy, from 1 to 10?",
"type": "one_to_ten",
"answer": "8",
"value": 8
},
{
"question": "Your weight this morning",
"type": "metric",
"answer": "182.4",
"value": 182.4,
"unit": "lb",
"metricId": "6ad6af776298037662967079"
},
{
"question": "Did you hit your protein target every day?",
"type": "yes_no",
"answer": "Yes",
"answeredYes": true
}
]
}https://api.hubfit.com/v1/questionnaire-submissions/{submissionId}One questionnaire a client filled in, with every answer, such as the one a questionnaire_submission.created webhook names. Requires clients:read.
curl https://api.hubfit.com/v1/questionnaire-submissions/6ad6af70a4050c71a4069f72 \
-H "Authorization: Bearer $HUBFIT_API_KEY"const response = await fetch("https://api.hubfit.com/v1/questionnaire-submissions/6ad6af70a4050c71a4069f72", {
headers: {
Authorization: `Bearer ${process.env.HUBFIT_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.get(
"https://api.hubfit.com/v1/questionnaire-submissions/6ad6af70a4050c71a4069f72",
headers={"Authorization": f"Bearer {os.environ['HUBFIT_API_KEY']}"},
)
data = response.json()["data"]{
"data": {
"id": "6ad6af70a4050c71a4069f72",
"name": "New client questionnaire",
"client": {
"id": "6ad6af41d3199442d31b2743",
"name": "Jordan Miller"
},
"submittedAt": "2026-10-26T14:32:05.000Z",
"answers": [
{
"question": "What went well this week?",
"type": "text",
"answer": "Hit every session and slept better."
},
{
"question": "How would you rate your energy, from 1 to 10?",
"type": "one_to_ten",
"answer": "8",
"value": 8
},
{
"question": "Your weight this morning",
"type": "metric",
"answer": "182.4",
"value": 182.4,
"unit": "lb",
"metricId": "6ad6af776298037662967079"
},
{
"question": "Did you hit your protein target every day?",
"type": "yes_no",
"answer": "Yes",
"answeredYes": true
}
]
}
}Subscribe a webhook endpoint to hear about these as they happen, instead of polling. An event carries the record's id and its clientId, not the record: fetch it with your key. See Webhooks.
- questionnaire_submission.createdA client submitted a questionnaire.
