Sessions

Session management: list and inspect running and completed workflow sessions, share a session link by email or SMS, and cancel or delete sessions.

Quick Navigation

What is a session?

A session is a single running instance of a workflow. When you start a workflow, Streamline creates a session that progresses through the workflow's steps, collects data, and tracks who is responsible for each step. Sessions are how you turn a saved workflow definition into live work.

You can list sessions for your organization, inspect a single session's current state, share a link to a session with the people who need to act on it, and stop or remove sessions you no longer need. The endpoints below cover these operations; base URL and authentication match the rest of the Streamline API.

Core Concepts

Session resource

Responses from the list and get-session endpoints share the same session shape. The table below describes the fields you will see.

nametyperequiredconstraintsdescription
idstring (UUID)yesIdentifier of the session.
workflowIdstring (UUID)yesIdentifier of the workflow this session runs.
projectIdstring (UUID)yesProject the session belongs to.
statusstringyesenumCurrent session status. See Session statuses.
completedAtstring (date-time)nonullableWhen the session reached a terminal status. null while the session is still running.
createdAtstring (date-time)yesWhen the session started.
versionNamestringnoName of the workflow version the session is running.
sessionNamestringyesnullableConfigured session name for this session, or null when none has been set.
sessionIdentifierConfiguredbooleannotrue when a configured session identifier exists in storage, regardless of whether sessionName is masked on the wire.
currentStepobjectnonullableNested current step with assignees. See Current step and assignees.

Session statuses

A session's status field uses one of the following values:

  • ASSIGNED — The session has been started and is waiting for action on the current step.
  • RUNNING — The session is actively progressing through its steps.
  • COMPLETED — The session finished successfully.
  • CANCELLED — The session was cancelled before completing.
  • EXPIRED — The session expired before completing.
  • FAILED — The session ended in a failure state.
  • TERMINATED — The session was terminated.

When filtering by status, send the value exactly as shown above (for example statuses=COMPLETED,RUNNING).

Pagination

The list endpoint uses page-based pagination. You must set pagination=page and then use pageNumber (1-indexed) and pageSize to control the page you receive. The response includes a page object with the actual counts so you can iterate.

nametyperequiredconstraintsdescription
paginationstringyesmust be pagePagination mode.
pageNumberintegernomin 1, default 1Page number to return.
pageSizeintegernomin 1, max 100, default 25Number of items per page.

The page object in the response contains:

nametypedescription
sizeintegerActual number of elements in the current page (may be smaller than pageSize on the last page).
pageNumberintegerCurrent page number (1-indexed).
pageSizeintegerRequested page size.
totalElementsintegerTotal number of matching elements across all pages.
totalPagesintegerTotal number of pages.

Session identifiers and masking

A workflow may be configured to give each session a human-readable name (for example "Onboarding — Jane Doe"). When that configuration exists, sessionIdentifierConfigured is true and sessionName carries the resolved name.

By default, session names are masked in list responses to protect personally identifiable information. To receive unmasked names, pass revealSessionIdentifiers=true. Revealing identifiers requires the admin permission or to be configured on the project level; the response includes canViewSessionIdentifiers: true when the authenticated user is allowed to see unmasked values for the scoped project.

📘

Set revealSessionIdentifiers=true only when you actually need unmasked names, for example to render a project's sessions table with the "Show data" toggle on. Masked lists are the default for a reason — keep names private unless the viewer is authorized.

Current step and assignees

When a session is in progress, currentStep describes the step the session is currently on and the people responsible for acting on it.

nametypedescription
idstring (UUID)Current step id.
namestringStep name.
typestringStep type (for example forms, sign, collaboration).
resourceIdstringSource-owned resource id this assignment acts on, when present.
startedAtstring (date-time)When the session entered this step.
assigneesarray of objectAssignments for this step. See the assignee table below.

Each entry in assignees describes one person or group responsible for the step:

nametypedescription
idstringSlot id for this assignee row.
taskIdstring (UUID)Task id when the row is task-backed.
typestringAssignee type: EXTERNAL, INTERNAL, GROUP, or INHERIT.
rolestringStep role when present (for example SIGNER, OWNER). null on forms.
statusstringNormalized assignee status (see the assignee statuses list below).
isCompleterbooleantrue for the participant whose action completed the assignment.
isInPersonbooleantrue for in-person or inherit signers.
orderintegerSigning order, when relevant.
authMethodstringAuthentication method: NONE, EMAIL_OTP, PHONE_OTP, STREAMLINE_AUTH, or SSO.
namestringDisplay name of the assignee.
emailstringEmail contact.
phoneNumberstringPhone contact.
userIdstring (UUID)Internal Streamline user id, for internal assignees.
groupIdstring (UUID)Group id, for GROUP assignees.
assignedAtstring (date-time)When the assignee was assigned.
dueDatestring (date-time)When the assignee is due.
completedAtstring (date-time)When the assignee completed.
claimedAtstring (date-time)When the assignee claimed the task.
claimedByobjectDisplay enrichment for the claimer (userId, name, email).
declinedAtstring (date-time)When the assignee declined.
allowClaimingbooleanWhether the assignment may be claimed.
allowReassignmentbooleanWhether the assignment may be reassigned.
destinationUrlstringURL that can be used to open task.
participantDefinitionIdstringBuilder participant definition id for scoped links.
recipientPublicIdstringPublic id used in scoped OTP links when recipient pills are used.

Assignee status uses one of: PENDING, ASSIGNED, WAITING, CLAIMED, IN_PROGRESS, COMPLETED, DECLINED, EXPIRED, CANCELLED, FAILED, REASSIGNED, NOT_COMPLETED.

How-To Guides

Let's explore common scenarios for managing sessions.

List sessions

Use get sessions to retrieve a paginated list of sessions for your organization.

GET /v1/sessions

nametyperequiredconstraintsdescription
paginationstring (query)yesmust be pagePagination mode. Must be page.
pageNumberinteger (query)nomin 1, default 1Page number to return. See Pagination.
pageSizeinteger (query)nomin 1, max 100, default 25Number of items to return per page.
sortFieldsstring (query)nocomma-separated; allowed values: createdAtComma-separated fields to sort by.
sortDirectionstring (query)noenum: asc, desc; default descSort direction.
projectIdstring (query)noUUIDFilter sessions by project. If omitted, returns sessions across all projects the user can access (admins see the whole org).
statusesstring (query)nocomma-separated enumComma-separated session statuses to filter by. See Session statuses.
stepTypesstring (query)nocomma-separated enumComma-separated step types to filter by (for example forms,sign,collaboration).
searchstring (query)noUnified free-text search across session id, configured session name, status, current step name, current step status, failures.
withCurrentStepstring (query)nodefault trueInclude current step information (stepId, stepName, stepType, stepStatus, stepStartedAt).
withFailuresstring (query)nodefault trueInclude failures array in the response.
workflowIdstring (query)noUUIDFilter sessions by workflow.
createdAtstring (query)noISO 8601; optional operator prefix (eq:, neq:, gt:, lt:, gte:, lte:)The created at date to filter by.
metadatastring (query)nostringified JSON objectThe metadata object as a stringified JSON to filter by (for example {"system": "salesforce", "externalId": "ext-123"}).
dateFromstring (query)noISO datetime, date-only, or interval (e.g. -30d)Start date for filtering. Intervals and date-only strings are resolved to a full ISO datetime. Unparseable values are ignored.
dateTostring (query)noISO datetimeEnd date for filtering. Defaults to now when not provided.
revealSessionIdentifiersstring (query)nodefault falseWhen true, return unmasked session identifier values for sessions in the scoped project. Requires can_view_session_identifier.
{
  "content": [
    {
      "id": "f1b2c3d4-e5f6-7890-1234-567890abcdef",
      "workflowId": "w1b2c3d4-e5f6-7890-1234-567890abcdef",
      "projectId": "p1b2c3d4-e5f6-7890-1234-567890abcdef",
      "status": "RUNNING",
      "completedAt": null,
      "createdAt": "2026-08-01T09:30:00.000Z",
      "versionName": "Employee Onboarding v2",
      "sessionName": "Onboarding — Jane Doe",
      "sessionIdentifierConfigured": true,
      "currentStep": {
        "id": "s1b2c3d4-e5f6-7890-1234-567890abcdef",
        "name": "Form",
        "type": "forms",
        "resourceId": null,
        "startedAt": "2026-08-01T09:30:00.000Z",
        "assignees": [
          {
            "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
            "taskId": "t1b2c3d4-e5f6-7890-1234-567890abcdef",
            "type": "EXTERNAL",
            "role": null,
            "status": "ASSIGNED",
            "isCompleter": false,
            "isInPerson": false,
            "name": "Jane Doe",
            "email": "[email protected]",
            "phoneNumber": null,
            "userId": null,
            "groupId": null,
            "assignedAt": "2026-08-01T09:30:00.000Z",
            "allowClaiming": false,
            "allowReassignment": true,
            "destinationUrl": "https://us.streamline.intellistack.ai/tasks/assignee/t1b2c3d4-e5f6-7890-1234-567890abcdef"
          }
        ]
      }
    }
  ],
  "page": {
    "size": 1,
    "pageNumber": 1,
    "pageSize": 20,
    "totalElements": 1,
    "totalPages": 1
  },
  "canViewSessionIdentifiers": true
}

One things to note:

  • When revealSessionIdentifiers is omitted or false, session names are masked. canViewSessionIdentifiers is included only when the user is authorized to reveal identifiers for the scoped project.

Get a session by ID

Use get session to retrieve a single session by its id.

GET /v1/sessions/{sessionId}

nametyperequiredconstraintsdescription
sessionIdstringyesUUIDSession to retrieve.

The response has the same shape as a single item from the list response. See Session resource for the field reference and Current step and assignees for the nested currentStep shape.

Share a session

Use share session to send a session link to one or more recipients by email or SMS.

POST /v1/sessions/{sessionId}/share

nametyperequiredconstraintsdescription
sessionIdstring (path)yesUUIDSession to share.
stepExecutionIdstring (query)noUUIDShare a specific step execution, when set.

The request body contains a data object discriminated by type:

nametyperequiredconstraintsdescription
dataobjectyesThe share payload. Shape depends on type (email or sms), described below.
data.typestringyesenumChannel: email or sms.

When data.type is email:

nametyperequireddescription
data.emailsstring[]yesRecipient email addresses.
data.subjectstringnoEmail subject.
data.messagestringnoEmail body message.
data.replyTostringnoReply-to email address.
data.fromNamestringnoSender display name.
data.buttonTextstringnoText to display on the action button.

When data.type is sms:

nametyperequireddescription
data.phoneNumbersstring[]yesRecipient phone numbers.
data.messagestringnoSMS body message.

A successful share returns 204 No Content.

{
  "data": {
    "type": "email",
    "emails": ["[email protected]", "[email protected]"],
    "subject": "Your review is needed",
    "message": "Please complete the onboarding steps when you have a moment.",
    "buttonText": "Open session"
  }
}

For SMS, send data.type sms with a phoneNumbers array (and an optional message) instead.

Cancel a running session

Use cancel session to stop a session that is still running.

POST /v1/sessions/{sessionId}/cancel

nametyperequiredconstraintsdescription
sessionIdstringyesUUIDSession to cancel.

A successful cancel returns 204 No Content.

⚠️

Only sessions that are still running can be cancelled. Cancelling a session that has already reached a terminal status (COMPLETED, EXPIRED, FAILED, TERMINATED) has no effect.

Delete a session

Use delete session to remove a session from your lists.

POST /v1/sessions/{sessionId}/delete

nametyperequiredconstraintsdescription
sessionIdstringyesUUIDSession to delete.

A successful delete returns 204 No Content.


Did this page help you?