Eflows
/v1/eflows/{id}/previewPreview personalized text
Renders the four personalization-capable fields — opening statement (which is also what the intro screen shows), closing statement, CTA label and CTA/redirect URL — against sample values, server-side.
You supply only the respondent half (firstName, lastName, email). organizationName comes from your branding settings and eflowTitle from the eflow, so the string you see here is the string a respondent gets rather than one you reconstructed. fullName is derived from the two names and cannot be set directly.
A field that no longer parses is not an error here: it renders with its tags stripped rather than showing a raw tag, and reports usedFallback: true with the position. Writing a broken template is what fails — PATCH /v1/eflows/{id} returns 400 with the line and column.
Requires the eflows:read scope.
Example request
curl https://api.acquainto.com/v1/eflows/eflow_abc123/preview \
-H "Authorization: Bearer acq_live_xxxxxxxx" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"firstName": "string",
"lastName": "string",
"email": "string"
}'Parameters
idpathstringrequiredA eflow id, prefixed `eflow_`.
Request body
firstNamestring | nullSample value for `{{ firstName }}`. Omit or send null to preview a link that has no name on it.
lastNamestring | nullSample value for `{{ lastName }}`. `{{ fullName }}` is derived from this and `firstName`; it is not settable.
emailstring | nullSample value for `{{ email }}`. Owner-facing only -- no respondent-facing field may contain it, so this changes nothing unless the eflow carries a template stored before that rule.
Responses
200Preview personalized texteflowIdstringrequiredA eflow id, prefixed `eflow_`.
valuesobjectrequiredEvery variable and the value it resolved to, so a blank line in the output has a visible cause.
firstNamestring | nullrequiredlastNamestring | nullrequiredfullNamestring | nullrequiredDerived: first and last, trimmed. Null when both are missing.
organizationNamestring | nullrequiredeflowTitlestring | nullrequiredemailstring | nullrequired
fieldsobjectrequiredopeningStatementobjectrequiredsourcestring | nullrequiredThe stored text, tags and all. Null when the field is not set.
renderedstring | nullrequiredWhat a respondent would see. Null when the field is not set.
missingVariablesarray of stringrequiredVariable names, as written, that resolved to nothing. The values are not included.
usedFallbackbooleanrequiredTrue when the stored template no longer parses and its tags were stripped. A respondent sees the same stripped prose.
errorobject | nullrequiredWhy the fallback fired. Null when it did not.
codestringrequiredmessagestringrequiredlineintegercolumninteger
completionStatementobjectrequiredsourcestring | nullrequiredThe stored text, tags and all. Null when the field is not set.
renderedstring | nullrequiredWhat a respondent would see. Null when the field is not set.
missingVariablesarray of stringrequiredVariable names, as written, that resolved to nothing. The values are not included.
usedFallbackbooleanrequiredTrue when the stored template no longer parses and its tags were stripped. A respondent sees the same stripped prose.
errorobject | nullrequiredWhy the fallback fired. Null when it did not.
codestringrequiredmessagestringrequiredlineintegercolumninteger
completionCtaLabelobjectrequiredsourcestring | nullrequiredThe stored text, tags and all. Null when the field is not set.
renderedstring | nullrequiredWhat a respondent would see. Null when the field is not set.
missingVariablesarray of stringrequiredVariable names, as written, that resolved to nothing. The values are not included.
usedFallbackbooleanrequiredTrue when the stored template no longer parses and its tags were stripped. A respondent sees the same stripped prose.
errorobject | nullrequiredWhy the fallback fired. Null when it did not.
codestringrequiredmessagestringrequiredlineintegercolumninteger
completionCtaUrlobjectrequiredsourcestring | nullrequiredThe stored text, tags and all. Null when the field is not set.
renderedstring | nullrequiredWhat a respondent would see. Null when the field is not set.
missingVariablesarray of stringrequiredVariable names, as written, that resolved to nothing. The values are not included.
usedFallbackbooleanrequiredTrue when the stored template no longer parses and its tags were stripped. A respondent sees the same stripped prose.
errorobject | nullrequiredWhy the fallback fired. Null when it did not.
codestringrequiredmessagestringrequiredlineintegercolumninteger
completionRedirectUrlobjectrequiredsourcestring | nullrequiredThe stored text, tags and all. Null when the field is not set.
renderedstring | nullrequiredWhat a respondent would see. Null when the field is not set.
missingVariablesarray of stringrequiredVariable names, as written, that resolved to nothing. The values are not included.
usedFallbackbooleanrequiredTrue when the stored template no longer parses and its tags were stripped. A respondent sees the same stripped prose.
errorobject | nullrequiredWhy the fallback fired. Null when it did not.
codestringrequiredmessagestringrequiredlineintegercolumninteger
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.
detailsarray of objectPresent only on errors that can fail in several places at once -- the eflow content graph and personalization templates. Reporting one problem per round trip would turn fixing a 30-question flow into 30 requests.
pathstringrequiredDotted/bracketed path into the request body, e.g. `branches[0].triggerOptionId`.
codestringrequiredStable machine-readable code for this one problem.
messagestringrequiredHuman-readable. May change without notice.
lineintegerOne-based line inside that field's own value. Personalization templates only.
columnintegerOne-based column inside that field's own value. Personalization templates only.
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.
detailsarray of objectPresent only on errors that can fail in several places at once -- the eflow content graph and personalization templates. Reporting one problem per round trip would turn fixing a 30-question flow into 30 requests.
pathstringrequiredDotted/bracketed path into the request body, e.g. `branches[0].triggerOptionId`.
codestringrequiredStable machine-readable code for this one problem.
messagestringrequiredHuman-readable. May change without notice.
lineintegerOne-based line inside that field's own value. Personalization templates only.
columnintegerOne-based column inside that field's own value. Personalization templates only.
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.
detailsarray of objectPresent only on errors that can fail in several places at once -- the eflow content graph and personalization templates. Reporting one problem per round trip would turn fixing a 30-question flow into 30 requests.
pathstringrequiredDotted/bracketed path into the request body, e.g. `branches[0].triggerOptionId`.
codestringrequiredStable machine-readable code for this one problem.
messagestringrequiredHuman-readable. May change without notice.
lineintegerOne-based line inside that field's own value. Personalization templates only.
columnintegerOne-based column inside that field's own value. Personalization templates only.
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.
detailsarray of objectPresent only on errors that can fail in several places at once -- the eflow content graph and personalization templates. Reporting one problem per round trip would turn fixing a 30-question flow into 30 requests.
pathstringrequiredDotted/bracketed path into the request body, e.g. `branches[0].triggerOptionId`.
codestringrequiredStable machine-readable code for this one problem.
messagestringrequiredHuman-readable. May change without notice.
lineintegerOne-based line inside that field's own value. Personalization templates only.
columnintegerOne-based column inside that field's own value. Personalization templates only.
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.
detailsarray of objectPresent only on errors that can fail in several places at once -- the eflow content graph and personalization templates. Reporting one problem per round trip would turn fixing a 30-question flow into 30 requests.
pathstringrequiredDotted/bracketed path into the request body, e.g. `branches[0].triggerOptionId`.
codestringrequiredStable machine-readable code for this one problem.
messagestringrequiredHuman-readable. May change without notice.
lineintegerOne-based line inside that field's own value. Personalization templates only.
columnintegerOne-based column inside that field's own value. Personalization templates only.
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.
detailsarray of objectPresent only on errors that can fail in several places at once -- the eflow content graph and personalization templates. Reporting one problem per round trip would turn fixing a 30-question flow into 30 requests.
pathstringrequiredDotted/bracketed path into the request body, e.g. `branches[0].triggerOptionId`.
codestringrequiredStable machine-readable code for this one problem.
messagestringrequiredHuman-readable. May change without notice.
lineintegerOne-based line inside that field's own value. Personalization templates only.
columnintegerOne-based column inside that field's own value. Personalization templates only.
requestIdstringrequiredEchoes the `req_...` id; quote it in support requests.
Browse every operation, with full request/response schemas, in the full API reference.