Acquainto
← API reference

Eflows

GET/v1/eflows

List eflows

Cursor-paginated, newest first. Archived eflows are excluded unless you ask for them by name — an archived eflow is one someone deliberately took out of circulation, and a paging client that has to filter them out on every page is a client that will forget to.

This is the route the plan’s F5 exists for: the first-party GET /api/v1/tenants/{id}/eflows returns every eflow a tenant has ever created, unpaginated, with correlated subqueries per row. Counts here are opt-in via /stats rather than computed for every row of every page.

Requires the eflows:read scope.

Example request

curl https://api.acquainto.com/v1/eflows \
  -H "Authorization: Bearer acq_live_xxxxxxxx"

Parameters

  • limitqueryinteger
  • starting_afterquerystring
  • statusquerystring

    Comma-separated statuses to include. Defaults to every status except `archived`; pass `archived` explicitly to see archived eflows.

Responses

200List eflows
  • dataarray of objectrequired
    • idstringrequired

      A eflow id, prefixed `eflow_`.

    • titlestringrequired
    • descriptionstring | nullrequired
    • status"draft" | "live" | "paused" | "archived"required
    • tonePreset"efficient" | "friendly" | "concierge"required
    • resumeTokenTtlHoursintegerrequired

      How long a respondent may leave and come back before their progress expires.

    • notifyOnCompletionbooleanrequired
    • introScreenEnabledbooleanrequired

      Show the pre-conversation intro screen -- who is asking, how long it takes, where the answers go -- before the first question, with a Start button. False drops the respondent straight into turn 1, and no session (or model call) exists until they answer.

    • requireLinkTokenbooleanrequired

      Refuse to start a new session for this eflow unless the request carries a valid link token minted by POST /v1/eflows/{id}/links. Off by default: a bare {eflowId} starts an anonymous session same as always. On, an anonymous POST /api/v1/sessions gets a 403 link_token_required -- resuming an existing session is unaffected.

    • openingStatementstring | nullrequired
    • openingStatementSurfacesarray of "hosted" | "iframe" | "chat_box"required
    • completionStatementstring | nullrequired
    • completionStatementSurfacesarray of "hosted" | "iframe" | "chat_box"required
    • completionCtaLabelstring | nullrequired
    • completionCtaUrlstring | nullrequired
    • completionCtaSurfacesarray of "hosted" | "chat_box"required
    • completionRedirectUrlstring | nullrequired

      Where a respondent is sent ~8s after the completion screen, with a visible notice they can decline. Applies where the conversation is the page (the hosted link and inline embeds); ignored in the floating chat box and iframe embeds, where navigating would move the embed rather than the page. https: only.

    • completionEmailContent"link_only" | "full"required

      How much of a response a completion email carries. `full` embeds every answer inline. `link_only` sends the eflow title, respondent, completion time and question count plus a link into the app, and no answer content -- an email is the one copy of a response neither the retention sweep nor an erasure request can reach. Existing eflows are `full`; that is what they have always sent.

    • versionintegerrequired

      Increments on every write. Send it back as `If-Match` so a concurrent edit fails loudly instead of being clobbered.

    • createdAtstringrequired
    • updatedAtstringrequired
    • publishedAtstring | nullrequired

      The *first* time this eflow went live, not the latest -- a pause/resume cycle does not move it.

  • hasMorebooleanrequired

    True when another page exists.

  • nextCursorstring | nullrequired

    Pass as `starting_after` to fetch the next page.

400The request was malformed or failed validation.
  • errorobjectrequired
    • type"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"required

      The bucket a client branches on to decide how to react.

    • codestringrequired

      Stable machine-readable code. Branch on this, not on `message`.

    • messagestringrequired

      Human-readable. May change without notice.

    • paramstring

      The offending request field, when the error names one.

    • requestIdstringrequired

      Echoes the `req_...` id; quote it in support requests.

401Missing, invalid, or revoked credential.
  • errorobjectrequired
    • type"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"required

      The bucket a client branches on to decide how to react.

    • codestringrequired

      Stable machine-readable code. Branch on this, not on `message`.

    • messagestringrequired

      Human-readable. May change without notice.

    • paramstring

      The offending request field, when the error names one.

    • requestIdstringrequired

      Echoes the `req_...` id; quote it in support requests.

403The credential lacks the scope this route requires.
  • errorobjectrequired
    • type"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"required

      The bucket a client branches on to decide how to react.

    • codestringrequired

      Stable machine-readable code. Branch on this, not on `message`.

    • messagestringrequired

      Human-readable. May change without notice.

    • paramstring

      The offending request field, when the error names one.

    • requestIdstringrequired

      Echoes the `req_...` id; quote it in support requests.

429Rate limited. Retry after the interval in `Retry-After`.
  • errorobjectrequired
    • type"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"required

      The bucket a client branches on to decide how to react.

    • codestringrequired

      Stable machine-readable code. Branch on this, not on `message`.

    • messagestringrequired

      Human-readable. May change without notice.

    • paramstring

      The offending request field, when the error names one.

    • requestIdstringrequired

      Echoes the `req_...` id; quote it in support requests.

500Something failed on our side. Safe to retry.
  • errorobjectrequired
    • type"invalid_request_error" | "authentication_error" | "permission_error" | "not_found_error" | "idempotency_error" | "rate_limit_error" | "api_error"required

      The bucket a client branches on to decide how to react.

    • codestringrequired

      Stable machine-readable code. Branch on this, not on `message`.

    • messagestringrequired

      Human-readable. May change without notice.

    • paramstring

      The offending request field, when the error names one.

    • requestIdstringrequired

      Echoes the `req_...` id; quote it in support requests.

Browse every operation, with full request/response schemas, in the full API reference.