Links
/v1/eflows/{id}/links/batchMint invite links in bulk
Up to 1000 links in one call, answered in request order — a mail merge larger than that is a job, not a request. All or nothing: one invalid entry rejects the batch, and so does a batch that would cross the plan’s live-link ceiling. Honors Idempotency-Key.
Requires the links:write scope.
Example request
curl https://api.acquainto.com/v1/eflows/eflow_abc123/links/batch \
-H "Authorization: Bearer acq_live_xxxxxxxx" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"links": [
{
"subjectRef": "string",
"prefill": {},
"expiresAt": "2026-01-15T09:30:00Z",
"maxUses": 1
}
]
}'Parameters
idpathstringrequiredA eflow id, prefixed `eflow_`.
Request body
linksarray of objectrequiredsubjectRefstringprefillobjectexpiresAtstringmaxUsesinteger
Responses
201Mint invite links in bulkdataarray of objectrequiredidstringrequiredA link id, prefixed `link_`.
eflowIdstringrequiredA eflow id, prefixed `eflow_`.
subjectRefstring | nullrequiredYour identifier for the respondent. Signed into the token, so the browser cannot alter it.
prefillobjectrequiredAnswers you already know, seeded into the conversation.
expiresAtstringrequiredmaxUsesinteger | nullrequiredNull means unlimited until expiry.
usedCountintegerrequiredrevokedAtstring | nullrequiredcreatedAtstringrequiredtokenstringrequiredReturned here, and not by `GET .../links`. If you lose it, show the link again from Personalized links in the dashboard, or mint a new link.
urlstringrequiredThe link to send the respondent. `GET /e/{token}` exchanges it for a session server-side.
countintegerrequired
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.
403Either the credential lacks the scope this route requires (`insufficient_scope`), or the tenant already holds as many live invite links as its plan allows (`link_quota_exceeded`). Branch on `error.code`. A link stops counting as live once it is revoked, expires, or reaches `maxUses`.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.
409Error.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.