Losant Experience API

Build white-labeled end-user web Experiences on top of a Losant Application: experience users, groups, HTTP endpoints, server-rendered views, slugs, custom domains, versions, and the Experience publishing pipeline.

Losant Experience API is one of 9 APIs that Losant publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 3 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Experiences, End User, White Label, Web, and Users. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 3 Naftiko capability specs.

OpenAPI Specification

losant-experience-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Losant Experience API
  version: 1.29.4
  description: 'Build end-user web Experiences on top of Losant Applications: users, groups, endpoints, views, slugs, domains,
    versions, and the Experience Engine. Derived from the Losant Platform API (Bravado/Swagger 2) at https://api.losant.com/.'
  contact:
    name: Losant Support
    url: https://www.losant.com/contact
    email: [email protected]
  license:
    name: Proprietary
    url: https://www.losant.com/legal
  x-source: https://api.losant.com/
  x-publisher: Losant IoT, Inc.
servers:
- url: https://api.losant.com
  description: Losant Platform API (US multi-tenant cloud)
tags:
- name: Experience
  description: Experience resources on the Losant Platform.
security:
- BearerAuth: []
paths:
  /applications/{applicationId}/experience/domains/{experienceDomainId}:
    get:
      summary: Retrieves Information on an Experience Domain
      tags:
      - Experience
      parameters:
      - &id001
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - &id002
        name: experienceDomainId
        in: path
        description: ID associated with the experience domain
        required: true
        example: 575ed78e7ae143cd83dc4aab
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      responses:
        '200':
          description: Experience domain information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceDomain'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience domain was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    patch:
      summary: Updates Information About an Experience Domain
      tags:
      - Experience
      parameters:
      - *id001
      - *id002
      requestBody:
        description: Object containing new properties of the experience domain
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceDomainPatch'
      responses:
        '200':
          description: Updated experience domain information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceDomain'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience domain was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    delete:
      summary: Deletes an Experience Domain
      tags:
      - Experience
      parameters:
      - *id001
      - *id002
      responses:
        '200':
          description: If experience domain was successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience domain was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/domains:
    get:
      summary: Returns the Experience Domains for an Application
      tags:
      - Experience
      parameters:
      - &id003
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      responses:
        '200':
          description: Collection of experience domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceDomains'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if application was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    post:
      summary: Create a New Experience Domain for an Application
      tags:
      - Experience
      parameters:
      - *id003
      requestBody:
        description: New experience domain information
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceDomainPost'
      responses:
        '201':
          description: Successfully created experience domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceDomain'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if application was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/endpoints/{experienceEndpointId}:
    get:
      summary: Retrieves Information on Resources Linked to an Experience Endpoint
      tags:
      - Experience
      parameters:
      - &id004
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - &id005
        name: experienceEndpointId
        in: path
        description: ID associated with the experience endpoint
        required: true
        example: 575ed78e7ae143cd83dc4aab
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - name: version
        in: query
        description: Version of this experience endpoint to query
        required: false
        example: develop
        schema:
          type: string
          default: develop
      - name: includeCustomNodes
        in: query
        description: If the result of the request should also include the details of any custom nodes referenced by returned
          workflows
        required: false
        example: true
        schema:
          type: string
          default: false
      responses:
        '200':
          description: Linked resource information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceLinkedResources'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience endpoint was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    patch:
      summary: Updates Information About an Experience Endpoint
      tags:
      - Experience
      parameters:
      - *id004
      - *id005
      requestBody:
        description: Object containing new properties of the experience endpoint
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceEndpointPatch'
      responses:
        '200':
          description: Updated experience endpoint information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceEndpoint'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience endpoint was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    delete:
      summary: Deletes an Experience Endpoint
      tags:
      - Experience
      parameters:
      - *id004
      - *id005
      - name: includeWorkflows
        in: query
        description: If the workflows that utilize this experience endpoint should also be deleted.
        required: false
        example: true
        schema:
          type: string
      responses:
        '200':
          description: If experience endpoint was successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience endpoint was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/endpoints:
    get:
      summary: Get Statistics About Endpoint Requests
      tags:
      - Experience
      parameters:
      - &id006
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - name: statGrouping
        in: query
        description: Field to group the statistics by
        required: false
        example: statusCode
        schema:
          type: string
          enum:
          - statusCode
          - endpointId
          - version
          - domain
          default: statusCode
      - name: duration
        in: query
        description: Duration in milliseconds
        required: false
        example: 86400000
        schema:
          type: string
          default: 86400000
      - name: end
        in: query
        description: End of time range in milliseconds since epoch
        required: false
        example: 0
        schema:
          type: string
          default: 0
      - name: resolution
        in: query
        description: Resolution in milliseconds
        required: false
        example: 3600000
        schema:
          type: string
          default: 3600000
      - name: versionFilter
        in: query
        description: Filters the stats to a particular experience version
        required: false
        example: myVersion
        schema:
          type: string
      - name: domainFilter
        in: query
        description: Filters the stats to a particular experience domain or slug
        required: false
        example: example.com
        schema:
          type: string
      - name: statusCodeFilter
        in: query
        description: Filters the stats to a particular status code
        required: false
        example: 200
        schema:
          type: string
      - name: endpointIdFilter
        in: query
        description: Filters the stats to a particular endpoint
        required: false
        example: 575ec8687ae143cd83dc4a98
        schema:
          type: string
      responses:
        '200':
          description: Statistics for endpoint requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceEndpointStats'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if application was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    post:
      summary: Create a New Experience Endpoint for an Application
      tags:
      - Experience
      parameters:
      - *id006
      requestBody:
        description: New experience endpoint information
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceEndpointPost'
      responses:
        '201':
          description: Successfully created experience endpoint
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceEndpoint'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if application was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/groups/{experienceGroupId}:
    get:
      summary: Retrieves Information on an Experience Group
      tags:
      - Experience
      parameters:
      - &id007
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - &id008
        name: experienceGroupId
        in: path
        description: ID associated with the experience group
        required: true
        example: 575ed78e7ae143cd83dc4aab
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - name: includeDirectDeviceCount
        in: query
        description: Whether or not to return count of devices associated directly with this group
        required: false
        example: 'true'
        schema:
          type: string
          default: 'false'
      - name: includeTotalDeviceCount
        in: query
        description: Whether or not to return count of devices associated with this group or any of its descendants
        required: false
        example: 'true'
        schema:
          type: string
          default: 'false'
      responses:
        '200':
          description: Experience group information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceGroup'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience group was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    patch:
      summary: Updates Information About an Experience Group
      tags:
      - Experience
      parameters:
      - *id007
      - *id008
      requestBody:
        description: Object containing new properties of the experience group
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceGroupPatch'
      responses:
        '200':
          description: Updated experience group information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceGroup'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience group was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    delete:
      summary: Deletes an Experience Group
      tags:
      - Experience
      parameters:
      - *id007
      - *id008
      responses:
        '200':
          description: If experience group was successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience group was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/groups:
    get:
      summary: Returns the Experience Groups for an Application
      tags:
      - Experience
      parameters:
      - &id009
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - name: sortField
        in: query
        description: Field to sort the results by
        required: false
        example: name
        schema:
          type: string
          enum:
          - name
          - id
          - creationDate
          - lastUpdated
          default: name
      - name: sortDirection
        in: query
        description: Direction to sort the results by
        required: false
        example: asc
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: page
        in: query
        description: Which page of results to return
        required: false
        example: 0
        schema:
          type: string
          default: 0
      - name: perPage
        in: query
        description: How many items to return per page
        required: false
        example: 10
        schema:
          type: string
          default: 100
      - name: filterField
        in: query
        description: Field to filter the results by. Blank or not provided means no filtering.
        required: false
        example: name
        schema:
          type: string
          enum:
          - name
      - name: filter
        in: query
        description: Filter to apply against the filtered field. Supports globbing. Blank or not provided means no filtering.
        required: false
        example: my*group
        schema:
          type: string
      - name: query
        in: query
        description: Experience group filter JSON object which overrides the filter and filterField fields.
        required: false
        schema:
          type: object
      responses:
        '200':
          description: Collection of experience groups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceGroups'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if application was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    post:
      summary: Create a New Experience Group for an Application
      tags:
      - Experience
      parameters:
      - *id009
      requestBody:
        description: New experience group information
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceGroupPost'
      responses:
        '201':
          description: Successfully created experience group
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceGroup'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if application was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/slugs/{experienceSlugId}:
    get:
      summary: Retrieves Information on an Experience Slug
      tags:
      - Experience
      parameters:
      - &id010
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - &id011
        name: experienceSlugId
        in: path
        description: ID associated with the experience slug
        required: true
        example: 575ed78e7ae143cd83dc4aab
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      responses:
        '200':
          description: Experience slug information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceSlug'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience slug was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    patch:
      summary: Updates Information About an Experience Slug
      tags:
      - Experience
      parameters:
      - *id010
      - *id011
      requestBody:
        description: Object containing new properties of the experience slug
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceSlugPatch'
      responses:
        '200':
          description: Updated experience slug information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceSlug'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience slug was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    delete:
      summary: Deletes an Experience Slug
      tags:
      - Experience
      parameters:
      - *id010
      - *id011
      responses:
        '200':
          description: If experience slug was successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience slug was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/slugs:
    get:
      summary: Returns the Experience Slugs for an Application
      tags:
      - Experience
      parameters:
      - &id012
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      responses:
        '200':
          description: Collection of experience slugs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceSlugs'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if application was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    post:
      summary: Create a New Experience Slug for an Application
      tags:
      - Experience
      parameters:
      - *id012
      requestBody:
        description: New experience slug information
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceSlugPost'
      responses:
        '201':
          description: Successfully created experience slug
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceSlug'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if application was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/users/{experienceUserId}:
    get:
      summary: Retrieves Information on an Experience User
      tags:
      - Experience
      parameters:
      - &id013
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - &id014
        name: experienceUserId
        in: path
        description: ID associated with the experience user
        required: true
        example: 575ed78e7ae143cd83dc4aab
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      responses:
        '200':
          description: Experience user information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceUser'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience user was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    patch:
      summary: Updates Information About an Experience User
      tags:
      - Experience
      parameters:
      - *id013
      - *id014
      requestBody:
        description: Object containing new properties of the experience user
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/experienceUserPatch'
      responses:
        '200':
          description: Updated experience user information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/experienceUser'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience user was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
    delete:
      summary: Deletes an Experience User
      tags:
      - Experience
      parameters:
      - *id013
      - *id014
      responses:
        '200':
          description: If experience user was successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success'
        '400':
          description: Error if malformed request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '404':
          description: Error if experience user was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
      - BearerAuth: []
  /applications/{applicationId}/experience/users:
    get:
      summary: Returns the Experience Users for an Application
      tags:
      - Experience
      parameters:
      - &id015
        name: applicationId
        in: path
        description: ID associated with the application
        required: true
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
          pattern: ^[A-Fa-f\d]{24}$
      - name: sortField
        in: query
        description: Field to sort the results by
        required: false
        example: email
        schema:
          type: string
          enum:
          - firstName
          - lastName
          - email
          - id
          - creationDate
          - lastLogin
          - lastUpdated
          default: email
      - name: sortDirection
        in: query
        description: Direction to sort the results by
        required: false
        example: asc
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: page
        in: query
        description: Which page of results to return
        required: false
        example: 0
        schema:
          type: string
          default: 0
      - name: perPage
        in: query
        description: How many items to return per page
        required: false
        example: 10
        schema:
          type: string
          default: 100
      - name: filterField
        in: query
        description: Field to filter the results by. Blank or not provided means no filtering.
        required: false
        example: email
        schema:
          type: string
          enum:
          - firstName
          - lastName
          - email
      - name: filter
        in: query
        description: Filter to apply against the filtered field. Supports globbing. Blank or not provided means no filtering.
        required: false
        example: my*user
        schema:
          type: string
      - name: experienceGroupId
        in: query
        description: Filter users to those only in the specified group, special experienceGroupIds of 'any' which will give
          users who are in at least one group and 'none' will give you users who are not in any groups.
        required: false
        example: 575ec8687ae143cd83dc4a97
        schema:
          type: string
      - name: includeAncestorGroups
        in: query
        description: If set will include members from ancestors of the specified experienceGroupId
        required: false
        example: 'true'
        schema:
          type: string
      - name: query
        in: query
        description: Experience user filter JSON object which overrides all other filter params.
        required: false
        schema:
          type: object
      responses:
        '200':
          description: Collection of experience us

# --- truncated at 32 KB (90 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/losant/refs/heads/main/openapi/losant-experience-api-openapi.yml