Trulioo Platform API

Workflow Studio API. Drive hosted and embedded workflows: initialize a flow, submit data and files for each step, handle handoffs between user-facing capture and backend processing, and retrieve end-client profiles, files, workflow definitions, and transaction state. Backs both the Low-Code Workflow Studio and the API-first Workflow Studio integrations.

OpenAPI Specification

trulioo-platform-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Trulioo Platform API
  description: >
    Workflow Studio API (Trulioo Platform). Drive hosted and embedded
    workflows: initialize a flow, submit data and files for each step,
    handle handoffs between user-facing capture and backend processing,
    and retrieve end-client profiles, files, workflow definitions, and
    transaction state. Backs both the Low-Code Workflow Studio and the
    API-first Workflow Studio integrations.
  version: "2.0"
  contact:
    name: Trulioo Support
    url: https://developer.trulioo.com
    email: support@trulioo.com
externalDocs:
  description: Workflow Studio (API)
  url: https://developer.trulioo.com/reference/workflow-studio-api
servers:
  - url: https://api.trulioo.com
    description: Production
security:
  - OAuth2: []
tags:
  - name: Authentication
    description: OAuth2 client-credential token acquisition.
  - name: Flows
    description: Initialize and drive a workflow flow.
  - name: Workflows
    description: Retrieve workflow definitions.
  - name: End Clients
    description: Profiles, files, and bulk operations on end clients.
  - name: Sessions
    description: Generate signed URLs for user sessions.
  - name: Events
    description: Webhook event dispatch.
paths:
  /customer/v2/auth/customer:
    post:
      summary: Post Auth Customer
      description: Exchange OAuth credentials for an access token to call the Platform API.
      operationId: postAuthCustomer
      tags:
        - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                grant_type:
                  type: string
                  example: client_credentials
                client_id:
                  type: string
                client_secret:
                  type: string
      responses:
        "200":
          description: Access token response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessToken'
  /customer/v2/flow/{userStateId}:
    get:
      summary: Get Current Step Or Initialize A Flow
      description: >
        Returns the current step for an existing flow identified by
        `userStateId`, or initializes a new flow.
      operationId: getFlow
      tags:
        - Flows
      parameters:
        - $ref: '#/components/parameters/UserStateId'
      responses:
        "200":
          description: Current flow step.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowStep'
    post:
      summary: Submit Data For The Current Step Of A Flow
      description: Submit JSON payload for the current step.
      operationId: submitFlowData
      tags:
        - Flows
      parameters:
        - $ref: '#/components/parameters/UserStateId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        "200":
          description: Next step.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowStep'
  /customer/v2/flow/{userStateId}/file:
    post:
      summary: Submit File For The Current Step Of A Flow
      description: Submit a file (e.g. document image) for the current flow step.
      operationId: submitFlowFile
      tags:
        - Flows
      parameters:
        - $ref: '#/components/parameters/UserStateId'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        "200":
          description: Next step.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowStep'
  /customer/v2/flow/{userStateId}/back:
    post:
      summary: Backward Step In The Flow
      description: Compute a backward step in the flow execution.
      operationId: flowBack
      tags:
        - Flows
      parameters:
        - $ref: '#/components/parameters/UserStateId'
      responses:
        "200":
          description: Previous step.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowStep'
  /customer/v2/handoff:
    post:
      summary: Post Handoff
      description: >
        Notify the platform that control of the flow is being handed off
        between user-facing capture and backend processing.
      operationId: postHandoff
      tags:
        - Flows
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        "200":
          description: Handoff acknowledged.
  /customer/v2/init:
    post:
      summary: Create Or Update User State
      description: Create a new user state ID or update an existing one with init data.
      operationId: createOrUpdateUserState
      tags:
        - Flows
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        "200":
          description: User state ID.
          content:
            application/json:
              schema:
                type: object
                properties:
                  userStateId:
                    type: string
  /customer/v2/workflows:
    get:
      summary: Retrieve Workflows From Organization
      description: List all workflows defined in the organization.
      operationId: getWorkflows
      tags:
        - Workflows
      responses:
        "200":
          description: List of workflows.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Workflow'
  /customer/v2/profiles:
    get:
      summary: Retrieve Profiles From Your Workspace
      description: List end-client profiles in your workspace.
      operationId: getProfiles
      tags:
        - End Clients
      responses:
        "200":
          description: Profiles.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Profile'
  /customer/v2/profiles/{clientId}:
    get:
      summary: Retrieve Profile Data From A Client
      description: Get the full profile (and verification data) for an end client.
      operationId: getProfile
      tags:
        - End Clients
      parameters:
        - $ref: '#/components/parameters/ClientId'
      responses:
        "200":
          description: Profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Profile'
  /customer/v2/profiles/{clientId}/file/{fileId}:
    get:
      summary: Retrieve A File From A Client
      description: Download a file stored on an end-client profile.
      operationId: getClientFile
      tags:
        - End Clients
      parameters:
        - $ref: '#/components/parameters/ClientId'
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: File binary.
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /customer/v2/endclients/link:
    post:
      summary: Create A Link Between Two End Clients
      description: Establish a relationship link between two end-client profiles.
      operationId: createLinkedLead
      tags:
        - End Clients
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        "201":
          description: Link created.
    delete:
      summary: Delete A Link Between Two End Clients
      description: Remove a link between two end-client profiles.
      operationId: deleteLinkedLead
      tags:
        - End Clients
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        "204":
          description: Link removed.
  /customer/v2/endclients/bulkdelete:
    post:
      summary: Delete End Clients In Bulk
      description: Bulk delete end-client profiles.
      operationId: deleteEndClientsBulk
      tags:
        - End Clients
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                clientIds:
                  type: array
                  items:
                    type: string
      responses:
        "200":
          description: Bulk delete result.
  /customer/v2/endclients/bulkstatus:
    post:
      summary: Update End Clients Status In Bulk
      description: Bulk update the status of end-client profiles.
      operationId: updateEndClientsStatusBulk
      tags:
        - End Clients
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        "200":
          description: Status updated.
  /customer/v2/signedurl:
    post:
      summary: Generate Signed URL For User Session
      description: >
        Generate a signed URL for an end-user to access a hosted workflow
        session.
      operationId: generateSignedUrl
      tags:
        - Sessions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        "200":
          description: Signed URL.
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    format: uri
                  expiresAt:
                    type: string
                    format: date-time
  /customer/v2/events:
    post:
      summary: Send Event
      description: >
        Dispatch a webhook event from the platform. Used by the Event
        Dispatcher to deliver workflow lifecycle events.
      operationId: sendEvent
      tags:
        - Events
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        "202":
          description: Event accepted for delivery.
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.trulioo.com/customer/v2/auth/customer
          scopes: {}
  parameters:
    UserStateId:
      name: userStateId
      in: path
      required: true
      schema:
        type: string
    ClientId:
      name: clientId
      in: path
      required: true
      schema:
        type: string
  schemas:
    AccessToken:
      type: object
      properties:
        access_token:
          type: string
        token_type:
          type: string
        expires_in:
          type: integer
    FlowStep:
      type: object
      properties:
        userStateId:
          type: string
        stepId:
          type: string
        stepType:
          type: string
        inputs:
          type: object
          additionalProperties: true
        outputs:
          type: object
          additionalProperties: true
    Workflow:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        version:
          type: string
        steps:
          type: array
          items:
            type: object
            additionalProperties: true
    Profile:
      type: object
      properties:
        clientId:
          type: string
        status:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        data:
          type: object
          additionalProperties: true