Lytics Experience API

API for creating and managing Experiences as well as all related and/or dependent models such as but not limited to Groups, Templates, Candidates, etc.

Operations 26

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/experience List personalization experiences · List #
Ask an LLM
“Which experiences do I have set up for personalization?”
“Can I include soft-deleted experiences in the list?”
Tell an agent
List all my experiences.
Show experiences for provider {provider}, including deleted: {deleted}.
POST /api/experience Create a personalization experience · Create #
Ask an LLM
“What fields are required to create a new experience, like label and tactic?”
“Can I set up a new experience through the API?”
Tell an agent
Create a new experience with a label, provider and tactic.
Set up a fresh personalization experience.
GET /api/experience/{id} Get one experience · Fetch #
Ask an LLM
“Can I fetch one experience along with its templates and parent groups?”
“Can I still read an experience that was soft-deleted?”
Tell an agent
Show experience {id}.
Fetch experience {id} even if it was deleted: {deleted}.
PATCH /api/experience/{id} Update an experience or change its state · Update #
Ask an LLM
“Can I change only the state of an experience, like pausing it?”
“How do I edit an existing experience?”
Tell an agent
Update experience {id}.
Change only the state of experience {id} (update_state {update_state}).
DELETE /api/experience/{id} Delete an experience · Delete #
Ask an LLM
“Is deleting an experience recoverable, or can I hard delete it?”
“Can I delete an experience along with everything downstream of it?”
Tell an agent destructive · confirm first
Delete experience {id}.
Delete experience {id} using method {method}, recursive {recursive}.
GET /api/experience/import List experiences importable from a provider · Fetch #
Ask an LLM
“Which existing campaigns can I import as experiences from a connected provider?”
“Can I hide experiences I've already imported from the import list?”
Tell an agent
Show importable experiences from provider {provider_slug} using auth {auth_id}.
List what I can import from {provider_slug} with auth {auth_id}, including existing: {include_existing}.
POST /api/experience/import Import experiences from a provider · Create #
Ask an LLM
“Once I've listed importable experiences, how do I bring them in?”
“Can I import a batch of experiences from a third-party provider?”
Tell an agent
Import the selected experience records from the provider.
Create experiences from these import results.
GET /api/experience/template List experience templates · List #
Ask an LLM
“Which experience templates are available to me?”
“Can I see all the templates I can build experiences from?”
Tell an agent
List my experience templates.
Show every available experience template.
POST /api/experience/template Create an experience template · Create #
Ask an LLM
“Can I save a reusable template for future experiences?”
“What goes into a new experience template?”
Tell an agent
Create a new experience template.
Save this setup as an experience template.
GET /api/experience/template/{id} Get an experience template · Fetch #
Ask an LLM
“Can I look at one experience template by id?”
“What does a particular template contain?”
Tell an agent
Show experience template {id}.
Fetch template {id}.
PATCH /api/experience/template/{id} Update an experience template · Update #
Ask an LLM
“Can I edit an existing experience template?”
“Is it possible to change a template after it's created?”
Tell an agent
Update experience template {id}.
Edit template {id} with new settings.
DELETE /api/experience/template/{id} Delete an experience template · Delete #
Ask an LLM
“Can I remove an experience template I no longer use?”
“Is it possible to get rid of an old template?”
Tell an agent destructive · confirm first
Delete experience template {id}.
Remove template {id}.
GET /api/experience/candidate List experience candidates · List #
Ask an LLM
“Which experience candidates are available to my token?”
“Can I list all candidate experiences?”
Tell an agent
List my experience candidates.
Show all candidate experiences.
GET /api/experience/preview/{accountid}/{id}/config.js Get preview JavaScript for one web experience · Preview Config #
Ask an LLM
“Can I get the Pathfora config to preview a single web experience?”
“How do I preview a web personalization before publishing it?”
Tell an agent
Get the preview config.js for experience {id} in account {accountid}.
Render the Pathfora preview script for experience {id} on account {accountid}.
GET /api/experience/candidate/{accountid}/config.js Get production JavaScript for published experiences · Production Config #
Ask an LLM
“Where do I get the JavaScript with all my published web experiences?”
“Can I pull the production Pathfora config for an account?”
Tell an agent
Get the production config.js for account {accountid}.
Render all published experience candidates as Pathfora config for {accountid}.
GET /api/experience/group List experience groups · List #
Ask an LLM
“Which experience groups or journeys do I have?”
“Can I include deleted experience groups in the list?”
Tell an agent
List my experience groups.
Show up to {limit} experience groups, including deleted: {deleted}.
POST /api/experience/group Create an experience group · Create #
Ask an LLM
“Can I group several experiences together under one label and class?”
“Can a new experience group contain nested groups?”
Tell an agent
Create a new experience group.
Set up an experience group nesting these experiences.
GET /api/experience/group/{id} Get an experience group · Fetch #
Ask an LLM
“Can I fetch one experience group by id?”
“What experiences sit inside a particular group?”
Tell an agent
Show experience group {id}.
Fetch group {id}, including deleted: {deleted}.
PATCH /api/experience/group/{id} Update an experience group · Update #
Ask an LLM
“Can I change which experiences belong to a group?”
“Is it possible to rename or edit an experience group?”
Tell an agent
Update experience group {id}.
Change the nested experiences in group {id}.
DELETE /api/experience/group/{id} Delete an experience group · Delete #
Ask an LLM
“Can I delete an experience group and everything nested inside it?”
“Is a deleted experience group recoverable?”
Tell an agent destructive · confirm first
Delete experience group {id}.
Delete group {id} with method {method}, recursive {recursive}.
GET /api/experience/prioritization List experience prioritizations · List #
Ask an LLM
“Which prioritization records control the order experiences show in?”
“Can I list all prioritization records?”
Tell an agent
List my experience prioritizations.
Show every prioritization record.
POST /api/experience/prioritization Create an experience prioritization · Create #
Ask an LLM
“Can I set a priority order for competing experiences?”
“What's needed to create a prioritization record?”
Tell an agent
Create a new prioritization record.
Set up a priority order for my experiences.
GET /api/experience/prioritization/{id} Get an experience prioritization · Fetch #
Ask an LLM
“Can I look at one prioritization record?”
“What order does a specific prioritization define?”
Tell an agent
Show prioritization {id}.
Fetch prioritization record {id}.
PATCH /api/experience/prioritization/{id} Update an experience prioritization · Update #
Ask an LLM
“Can I change the order in an existing prioritization?”
“Is it possible to edit a prioritization record?”
Tell an agent
Update prioritization {id}.
Reorder the experiences in prioritization {id}.
DELETE /api/experience/prioritization/{id} Delete an experience prioritization · Delete #
Ask an LLM
“Can I remove a prioritization record?”
“Can I hard delete a prioritization instead of soft deleting it?”
Tell an agent destructive · confirm first
Delete prioritization {id}.
Delete prioritization {id} using method {method}.
POST /api/experience/group/priority Set the top-level journey priority · Master Group Priority #
Ask an LLM
“Can I set the overall priority order of my journeys?”
“Where is the account-wide journey hierarchy managed?”
Tell an agent
Update the master journey priority for my account.
Reorder my top-level journeys.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lytics:lytics-experience-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lytics-experience-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: V1 Lytics Experience API
  version: 1.0.0
  description: 'The Lytics API is a _restful_ *JSON* api that includes:

    * *Data Collection* api''s for collection, and upload of custom data.'
servers:
- url: https://api.lytics.io
tags:
- name: Experience
  description: API for creating and managing Experiences as well as all related and/or dependent models such as but not limited to Groups, Templates, Candidates, etc.
paths:
  /api/experience:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: List
      operationId: ListExperience
      description: 'Endpoint fetches all Experience records available to provided authorization token as well as various side-loaded dependencies.


        __Sideloading__: A variety of dependent or associated data will be side-loaded as part of the primary request. The list of side-loaded data for this particular request is:


        - All available Experience templates.


        - All parent groups one branch up the tree for returned Experiences.'
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: limit the number of Experience records returned
        required: false
        example: '10'
        schema:
          type: string
      - name: provider
        in: query
        description: id of provider to filter results by
        required: false
        example: 65b80b0a8e0544aa8144022b3c085da1
        schema:
          type: string
      - name: deleted
        in: query
        description: include soft deleted Experiences
        required: false
        example: 'true'
        schema:
          type: boolean
    post:
      responses:
        '201':
          description: Created
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Create
      operationId: CreateExperience
      description: 'Endpoint creates a single Experience record.


        __Sideloading__


        - None


        __Required Fields__


        - label


        - vehicle.provider_id


        - vehicle.tactic'
      tags:
      - Experience
  /api/experience/{id}:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Fetch
      operationId: FetchExperience
      description: 'Endpoint fetches a single Experience record by id as well as various side-loaded dependencies.


        __Sideloading__: A variety of dependent or associated data will be side-loaded as part of the primary request. The list of side-loaded data for this particular request is:


        - All parent groups all the way up the family tree for the Experience.'
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: deleted
        in: query
        description: include soft deleted Experiences
        required: false
        example: 'true'
        schema:
          type: boolean
      - name: id
        in: path
        description: id of the experience. if `orphan` is passed as Experience it will list all Experiences with no parent.
        required: true
        example: 76c7115c492e78cfd12f30a7389919bb
        schema:
          type: string
    patch:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Update
      operationId: UpdateExperience
      description: 'Endpoint updates a single Experience record.


        __Sideloading__: None'
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the experience. if `orphan` is passed as Experience it will list all Experiences with no parent.
        required: true
        example: 76c7115c492e78cfd12f30a7389919bb
        schema:
          type: string
      - name: update_state
        in: query
        description: allow the state of the Experience to be altered, all other changes will be thrown out of this request when flag is `true`.
        required: false
        example: 'true'
        schema:
          type: boolean
    delete:
      responses:
        '204':
          description: No Content
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Delete
      operationId: DeleteExperience
      description: Removes an Experience record.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the Experience
        required: true
        example: 96d774bca4ac26c92aa323b246a148fd
        schema:
          type: string
      - name: method
        in: query
        description: method to be used for deletion. hard deletes permanently and is unrecoverable. soft is default and deletes with ability to be recovered.
        required: false
        example: hard
        schema:
          type: string
      - name: recursive
        in: query
        description: recursive delete will also delete all downstream dependencies.
        required: false
        example: 'true'
        schema:
          type: boolean
  /api/experience/import:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Fetch
      operationId: FetchImport
      description: Request a list of importable Experiences from a third party provider such as Facebook or Iterable.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: provider_slug
        in: query
        description: slug of provider to fetch Experiences from
        required: true
        example: facebook
        schema:
          type: string
      - name: auth_id
        in: query
        description: id of the authorization for the requested provider
        required: true
        example: 7391398335174372b3aecd83c5a5d292
        schema:
          type: string
      - name: include_existing
        in: query
        description: should the response include Experiences already imported
        required: false
        example: 'true'
        schema:
          type: boolean
    post:
      responses:
        '201':
          description: Created
          headers: {}
        '207':
          description: Multi-Status
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Create
      operationId: CreateImport
      description: 'Creates Experiences in a batch based on valid Experience import records. This endpoint should be used exclusively with the results from the Experience import GET and not leveraged as a bulk Experience create.


        __Required Fields__


        - all'
      tags:
      - Experience
  /api/experience/template:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: List
      operationId: ListTemplate
      description: Fetches all Experience templates available to provided authorization token.
      tags:
      - Experience
    post:
      responses:
        '201':
          description: Created
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Create
      operationId: CreateTemplate
      description: 'Creates an Experience template.


        __Required Fields__


        - all


        - see `experience` or `group` for nested requirements'
      tags:
      - Experience
  /api/experience/template/{id}:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Fetch
      operationId: FetchTemplate
      description: Fetches an Experience template by id.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the template
        required: true
        example: 864a26fd5d5148b0b7fa187828368b81
        schema:
          type: string
    patch:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Update
      operationId: UpdateTemplate
      description: Updates an Experience template.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the template
        required: true
        example: 864a26fd5d5148b0b7fa187828368b81
        schema:
          type: string
    delete:
      responses:
        '204':
          description: No Content
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Delete
      operationId: DeleteTemplate
      description: Removes an Experience template.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the template
        required: true
        example: 864a26fd5d5148b0b7fa187828368b81
        schema:
          type: string
  /api/experience/candidate:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: List
      operationId: ListCandidate
      description: Fetches all Experience candidate records available to token.
      tags:
      - Experience
  /api/experience/preview/{accountid}/{id}/config.js:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Preview Config
      operationId: PreviewConfig
      description: Renders a JavaScript file containing a single Experiences Pathfora configuration for previewing a web personalize Experience.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: accountid
        in: path
        description: id of the account
        required: true
        example: 864a26fd5d5148b0b7fa187828368b81
        schema:
          type: string
      - name: id
        in: path
        description: id of the experience
        required: true
        example: 864a26fd5d5148b0b7fa187828368b81
        schema:
          type: string
      x-operation-id-source: normalized
      x-operation-id-original: Preview Config
  /api/experience/candidate/{accountid}/config.js:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Production Config
      operationId: ProductionConfig
      description: Renders a JavaScript file containing all published Experiences Candidate Pathfora configurations.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: accountid
        in: path
        description: id of the account
        required: true
        example: 864a26fd5d5148b0b7fa187828368b81
        schema:
          type: string
      x-operation-id-source: normalized
      x-operation-id-original: Production Config
  /api/experience/group:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: List
      operationId: ListGroup
      description: Fetches all Experience Group records available to the authorization token.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: limit number of returned experience_group records
        required: false
        example: '10'
        schema:
          type: string
      - name: deleted
        in: query
        description: include soft deleted records
        required: false
        example: 'true'
        schema:
          type: boolean
    post:
      responses:
        '201':
          description: Created
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Create
      operationId: CreateGroup
      description: 'Creates an Experience Group record.


        __Required Fields__


        - label


        - class


        __Note__: When creating a new Experience group you have the option of including either a set of nested Experiences or groups, not both, that belong to the new group. As a result, a prioritization record will be created in addition to each individual group or Experience itself being updated with the proper `parent_group_id` value. Likewise, passing an empty array __WILL REMOVE__ the ownership from the existing children. When no change is intended for nested Experiences or groups you should pass no value or null for both `experiences` and `child_groups`.'
      tags:
      - Experience
  /api/experience/group/{id}:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Fetch
      operationId: FetchGroup
      description: Fetches an Experience Group record by id.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the group
        required: true
        example: ef9154b3a5f982e1bd4ec0230664b57c
        schema:
          type: string
      - name: deleted
        in: query
        description: include soft deleted records
        required: false
        example: 'true'
        schema:
          type: boolean
    patch:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Update
      operationId: UpdateGroup
      description: 'Updates an Experience Group record.


        __Note__: When updating an existing Experience group you have the option of including either a set of nested Experiences or groups, not both, that belong to the new group. As a result, a prioritization record will be created in addition to each individual group or Experience itself being updated with the proper `parent_group_id` value. Likewise, passing an empty array __WILL REMOVE__ the ownership from the existing children. When no change is intended for nested Experiences or groups you should pass no value or null for both `experiences` and `child_groups`.'
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the group
        required: true
        example: ef9154b3a5f982e1bd4ec0230664b57c
        schema:
          type: string
    delete:
      responses:
        '204':
          description: No Content
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Delete
      operationId: DeleteGroup
      description: Removes an Experience Group record.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the group
        required: true
        example: ef9154b3a5f982e1bd4ec0230664b57c
        schema:
          type: string
      - name: method
        in: query
        description: method to be used for deletion. hard deletes permanently and is unrecoverable. soft is default and deletes with ability to be recovered.
        required: false
        example: hard
        schema:
          type: string
      - name: recursive
        in: query
        description: recursive delete will also delete all downstream dependencies.
        required: false
        example: 'true'
        schema:
          type: boolean
  /api/experience/prioritization:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: List
      operationId: ListPrioritization
      description: Fetches all prioritization records available to token.
      tags:
      - Experience
    post:
      responses:
        '201':
          description: Created
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Create
      operationId: CreatePrioritization
      description: 'Creates a prioritization record.


        __Required Fields__


        - all'
      tags:
      - Experience
  /api/experience/prioritization/{id}:
    get:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Fetch
      operationId: FetchPrioritization
      description: Fetches a prioritization record by id.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the prioritization record
        required: true
        example: 87cb58050ad27cd539935d8e3838f239
        schema:
          type: string
    patch:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Update
      operationId: UpdatePrioritization
      description: Updates a prioritization record.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the prioritization record
        required: true
        example: 87cb58050ad27cd539935d8e3838f239
        schema:
          type: string
    delete:
      responses:
        '204':
          description: No Content
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Delete
      operationId: DeletePrioritization
      description: Removes a prioritization record.
      tags:
      - Experience
      parameters:
      - name: account_id
        in: query
        description: Your Lytics account ID.
        required: false
        schema:
          type: string
      - name: id
        in: path
        description: id of the prioritization record
        required: true
        example: 87cb58050ad27cd539935d8e3838f239
        schema:
          type: string
      - name: method
        in: query
        description: method to be used for deletion. hard deletes permanently and is unrecoverable. soft is default and deletes with ability to be recovered.
        required: false
        example: hard
        schema:
          type: string
  /api/experience/group/priority:
    post:
      responses:
        '200':
          description: OK
          headers: {}
      security:
      - ApiKeyAuth: []
      summary: Master Group Priority
      operationId: MasterGroupPriority
      description: Manages the unique top level Journey priority record for an account. Used only for managing hierarchy of Experience Groups classified as Journeys in the UI.
      tags:
      - Experience
      x-operation-id-source: normalized
      x-operation-id-original: Master Group Priority
components:
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: Authorization
      type: apiKey
x-readme:
  explorer-enabled: true
  proxy-enabled: true