Analytics API
Retrieve response metrics and completion analytics for your forms.
The Analytics API provides aggregated metrics about form responses, including total counts, completion rates, and daily breakdowns.
All response bodies use snake_case field names.

Get Form Analytics
/api/v1/forms/:id/analyticsReturns response analytics for a specific form. You can optionally filter to a date range to analyze specific time periods.
Path Parameters
idstringThe form ID
Query Parameters
sincestringISO 8601 date. Only include responses submitted on or after this date.
untilstringISO 8601 date. Only include responses submitted on or before this date.
Response Fields
form_idstringThe form ID
total_responsesintegerTotal number of submissions (including partial)
completed_responsesintegerNumber of fully completed submissions
completion_ratenumberPercentage of completed responses (0-100, rounded to 2 decimals)
average_completion_time_secondsinteger or nullAverage time in seconds from first answer to completion. null if no completed responses.
responses_by_dayarrayDaily breakdown of response counts
responses_by_day[].datestringDate in YYYY-MM-DD format
responses_by_day[].totalintegerTotal responses submitted on this date
responses_by_day[].completedintegerCompleted responses on this date
Response
{
"form_id": "665a1b2c3d4e5f6a7b8c9d0e",
"total_responses": 342,
"completed_responses": 298,
"completion_rate": 87.13,
"average_completion_time_seconds": 194,
"responses_by_day": [
{ "date": "2026-02-22", "total": 18, "completed": 16 },
{ "date": "2026-02-23", "total": 24, "completed": 21 },
{ "date": "2026-02-24", "total": 31, "completed": 27 },
{ "date": "2026-02-25", "total": 22, "completed": 20 },
{ "date": "2026-02-26", "total": 28, "completed": 25 },
{ "date": "2026-02-27", "total": 35, "completed": 30 },
{ "date": "2026-02-28", "total": 12, "completed": 11 }
]
}
Code Examples
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/analytics?since=2026-02-01&until=2026-02-28" \
-H "Authorization: Bearer YOUR_API_KEY"
Querying Tips
Use the since and until query parameters to control the date range for analytics.
Full history
Omit both since and until to get analytics across the entire lifetime of the form.
Last 7 days
Compute the date 7 days ago and pass it as the since parameter to get a rolling weekly window.
Specific month
Pass the first and last day of the month as since and until to get analytics for a specific calendar month.
Full history
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/analytics" \
-H "Authorization: Bearer YOUR_API_KEY"
Last 7 days
const since = new Date();
since.setDate(since.getDate() - 7);
const response = await fetch(
`https://api.nueform.io/api/v1/forms/${formId}/analytics?since=${since.toISOString().split("T")[0]}`,
{ headers: { Authorization: "Bearer YOUR_API_KEY" } }
);
Specific month
response = requests.get(
f"https://api.nueform.io/api/v1/forms/{form_id}/analytics",
params={"since": "2026-01-01", "until": "2026-01-31"},
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
Error Responses
Standard error responses returned by this endpoint.
Error Codes
400Bad RequestInvalid date format for since or until
401UnauthorizedMissing or invalid API key
403ForbiddenInsufficient permissions for team forms
404Not FoundForm not found
500Server ErrorInternal server error
Error Example
{
"error": "Form not found"
}