Eflows
/v1/eflows/{id}/statsRetrieve eflow stats
Started, completed, completion rate, and the question that loses the most respondents, over a window that defaults to the last 30 days.
Drop-off is derived, not logged: there is no “question viewed” event, so a session counts as having reached a question when its answers or its parked position cover that question’s place in the order. Branch questions are excluded, since which of them a respondent sees depends on their own answers.
Requires the eflows:read scope.
Example request
curl https://api.acquainto.com/v1/eflows/eflow_abc123/stats \
-H "Authorization: Bearer acq_live_xxxxxxxx"Parameters
idpathstringrequiredA eflow id, prefixed `eflow_`.
fromquerystringStart of the window, inclusive. Defaults to 30 days ago.
toquerystringEnd of the window, exclusive. Defaults to now.
Responses
200Retrieve eflow statseflowIdstringrequiredA eflow id, prefixed `eflow_`.
fromstringrequiredtostringrequiredstartedintegerrequiredSessions whose `startedAt` falls in the window and that answered or skipped at least one question. A session row is written on page load, so an unfiltered count includes crawlers, link checkers and unfurl bots. `dropOffQuestion` below uses the same cohort, which is why `reached` never exceeds this.
completedintegerrequiredinProgressintegerrequiredabandonedintegerrequiredIncludes sessions that expired without being resumed.
completionRatenumber | nullrequiredPercent, one decimal. Null when nothing started in the window.
medianTimeToCompleteSecondsinteger | nullrequireddropOffQuestionobject | nullrequiredThe top-level question that loses the most respondents, by rate. Null when no session in the window reached any question. Same cohort as `started`: page loads with no answer behind them are excluded, since they otherwise pin this field to the opening question on any eflow with crawler traffic.
questionKeystring | nullrequiredquestionTextstringrequiredreachedintegerrequireddroppedintegerrequireddropOffRatenumber | nullrequired
400The request was malformed or failed validation.errorobjectrequiredtype"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"requiredThe bucket a client branches on to decide how to react.
codestringrequiredStable machine-readable code. Branch on this, not on `message`.
messagestringrequiredHuman-readable. May change without notice.
paramstringThe offending request field, when the error names one.
requestIdstringrequiredEchoes the `req_...` id; quote it in support requests.
401Missing, invalid, or revoked credential.errorobjectrequiredtype"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"requiredThe bucket a client branches on to decide how to react.
codestringrequiredStable machine-readable code. Branch on this, not on `message`.
messagestringrequiredHuman-readable. May change without notice.
paramstringThe offending request field, when the error names one.
requestIdstringrequiredEchoes the `req_...` id; quote it in support requests.
403The credential lacks the scope this route requires.errorobjectrequiredtype"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"requiredThe bucket a client branches on to decide how to react.
codestringrequiredStable machine-readable code. Branch on this, not on `message`.
messagestringrequiredHuman-readable. May change without notice.
paramstringThe offending request field, when the error names one.
requestIdstringrequiredEchoes the `req_...` id; quote it in support requests.
404No such resource, or it belongs to another tenant.errorobjectrequiredtype"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"requiredThe bucket a client branches on to decide how to react.
codestringrequiredStable machine-readable code. Branch on this, not on `message`.
messagestringrequiredHuman-readable. May change without notice.
paramstringThe offending request field, when the error names one.
requestIdstringrequiredEchoes the `req_...` id; quote it in support requests.
429Rate limited. Retry after the interval in `Retry-After`.errorobjectrequiredtype"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"requiredThe bucket a client branches on to decide how to react.
codestringrequiredStable machine-readable code. Branch on this, not on `message`.
messagestringrequiredHuman-readable. May change without notice.
paramstringThe offending request field, when the error names one.
requestIdstringrequiredEchoes the `req_...` id; quote it in support requests.
500Something failed on our side. Safe to retry.errorobjectrequiredtype"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"requiredThe bucket a client branches on to decide how to react.
codestringrequiredStable machine-readable code. Branch on this, not on `message`.
messagestringrequiredHuman-readable. May change without notice.
paramstringThe offending request field, when the error names one.
requestIdstringrequiredEchoes the `req_...` id; quote it in support requests.
Browse every operation, with full request/response schemas, in the full API reference.