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/intelligems-perform-experience-action-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: 3.2.0
info:
title: Intelligems External Perform Experience Action API
version: v25-10-beta
description: Programmatic access to manage Intelligems A/B tests, personalizations, and experiences, to define custom events, and to pull experiment and sitewide analytics for a Shopify store. Authenticate with an API key in the `intelligems-access-token` header.
contact:
name: Intelligems
url: https://docs.intelligems.io/developer-resources/external-api
servers:
- url: https://api.intelligems.io
description: Production
security:
- intelligems_access_token: []
tags:
- name: Perform Experience Action
description: Lifecycle actions for managing experience state transitions (start, pause, end).
paths:
/v25-10-beta/experiences/{experienceId}/actions/{action}:
post:
tags:
- Perform Experience Action
description: 'Performs an action on an experience to control its lifecycle.
### Supported Actions
- `start` - Activate the experience and begin serving it to visitors
- `pause` - Temporarily stop serving the experience (can be resumed with start)
- `end` - Permanently end the experience
### Important Notes
- The experience must exist and belong to your organization
- Starting an experience sets it live and removes preview mode
- Pausing or ending an experience returns it to preview mode
- Only certain state transitions are valid (e.g., cannot pause an already ended experience)
### Request Body Fields
- `variationId` (string UUID, optional) — The ID of the variation to apply. When ending an experience, this selects the winning variation.
### Usage Examples
**Start an experience** (no body fields needed):
```
POST /v25-10-beta/experiences/{experienceId}/actions/start
Body: {}
```
**Pause an experience** (no body fields needed for content tests):
```
POST /v25-10-beta/experiences/{experienceId}/actions/pause
Body: {}
```
**End an experience** with a winning variation:
```
POST /v25-10-beta/experiences/{experienceId}/actions/end
Body: { "variationId": "", "updatePricesToVariation": true }
```'
parameters:
- in: path
name: experienceId
schema:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
required: true
- in: path
name: action
schema:
type: string
enum:
- start
- pause
- end
required: true
requestBody:
content:
application/json:
schema:
type: object
properties:
variationId:
anyOf:
- type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
- type: 'null'
updatePricesToVariation:
type: boolean
responses:
'200':
description: OK
headers:
access-control-allow-origin:
schema:
type: string
description: CORS allow-origin header.
access-control-allow-credentials:
schema:
type: string
description: CORS allow-credentials header.
content-type:
schema:
type: string
description: Response content type.
Timing-Allow-Origin:
schema:
type: string
description: Allowed origin for Timing headers.
content:
application/json:
schema:
type: object
properties:
experience:
anyOf:
- type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
description: Server-generated. Read-only.
name:
type: string
description: Display name shown in dashboards and reports.
isPreview:
default: true
description: True while in draft mode. Must be set to false before the experience can be started.
type: boolean
description:
description: Internal note explaining what this experience tests.
anyOf:
- type: string
- type: 'null'
devicePreview:
description: Device and path configuration for the preview iframe.
anyOf:
- type: object
properties:
device:
default: desktop
description: Viewport to simulate when rendering the preview.
type: string
enum:
- any
- mobile
- desktop
path:
default: /
description: Storefront URL path to load in the preview (e.g., '/products/example').
type: string
required:
- device
- path
additionalProperties: false
description: Device and path configuration for previewing the experience.
- type: 'null'
organizationId:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
description: Server-generated. Read-only. The Shopify store that owns this experience.
type:
type: string
enum:
- content/advanced
- content/onsiteEdits
- content/url
- content/theme
- content/template
- personalization
- personalization/offer
- pricing
- checkoutBlock
- shipping
- sitewide
- postPurchase
- onsiteUpsell
description: 'Determines which variation fields are relevant: content/onsiteEdits for DOM edits, content/advanced for CSS/JS injection, content/url for redirect split tests, content/theme for theme tests, content/template for template tests.'
category:
type: string
enum:
- experiment
- personalization
description: Distinguishes A/B experiments (statistical testing) from personalization rules (deterministic targeting).
status:
type: string
enum:
- pending
- started
- ended
- paused
description: 'Server-managed lifecycle state. Transitions via start/pause/end actions: pending -> started -> paused/ended.'
testTypes:
type: object
properties:
hasTestPricing:
type: boolean
description: Server-generated. Read-only. True when price testing is active.
hasTestShipping:
type: boolean
description: Server-generated. Read-only. True when shipping rate testing is active.
hasTestCampaign:
type: boolean
description: Server-generated. Read-only. True when campaign/offer testing is active.
hasTestContent:
type: boolean
description: Server-generated. Read-only. True when any content variation type is enabled.
hasTestContentUrl:
type: boolean
description: Server-generated. Read-only. True when URL redirect variations are in use.
hasTestContentAdvanced:
type: boolean
description: Server-generated. Read-only. True when custom JS/CSS variations are in use.
hasTestContentOnsite:
type: boolean
description: Server-generated. Read-only. True when visual onsite edit variations are in use.
hasTestContentTemplate:
type: boolean
description: Server-generated. Read-only. True when Shopify template variations are in use.
hasTestContentTheme:
type: boolean
description: Server-generated. Read-only. True when Shopify theme variations are in use.
hasTestOnsiteInjections:
type: boolean
description: Server-generated. Read-only. True when CSS/JS injection variations are in use.
hasTestCheckoutBlocks:
type: boolean
description: Server-generated. Read-only. True when checkout block variations are in use.
hasTestPostPurchase:
type: boolean
description: Server-generated. Read-only. True when post-purchase upsell variations are in use.
hasTestOnsiteUpsell:
type: boolean
description: Server-generated. Read-only. True when onsite upsell components are in use.
required:
- hasTestPricing
- hasTestShipping
- hasTestCampaign
- hasTestContent
- hasTestContentUrl
- hasTestContentAdvanced
- hasTestContentOnsite
- hasTestContentTemplate
- hasTestContentTheme
- hasTestOnsiteInjections
- hasTestCheckoutBlocks
- hasTestPostPurchase
- hasTestOnsiteUpsell
additionalProperties: false
description: Server-generated. Read-only. Flags derived from 'type' indicating which variation capabilities are active.
experiencePageTargeting:
default: []
description: Rules controlling where this experience activates. Primarily URL/path rules, but the same expression format also supports 'device', 'country', 'visitor', 'trafficSource', 'referrer', and 'cookie'. Empty means all pages. To target the whole experience at a device (e.g. desktop only), prefer an `audience` filter over a page-targeting rule.
type: array
items:
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
filter:
anyOf:
- type: string
enum:
- equals
- contains
- startsWith
- endsWith
- doesNotEqual
- doesNotContain
- doesNotStartWith
- doesNotEndWith
- isNull
- isNotNull
- regex
- type: 'null'
filterType:
default: url
type: string
enum:
- utm
- url
- device
- visitor
- jsExpression
- trafficSource
- country
- referrer
- cookie
value:
type: string
order:
type: number
expression:
anyOf:
- type: array
items:
type: object
properties:
query:
type: object
properties:
key:
type: string
description: Visitor attribute or parameter name to match (e.g., 'utm_source', 'device_type').
value:
type: string
description: 'Expected value to compare against the visitor''s actual value for this key. Constrained by `type`: when type is ''device'' this must be exactly ''any'', ''mobile'', or ''desktop''.'
filter:
description: Comparison operator (e.g., equals, contains, startsWith).
anyOf:
- type: string
enum:
- equals
- contains
- startsWith
- endsWith
- doesNotEqual
- doesNotContain
- doesNotStartWith
- doesNotEndWith
- isNull
- isNotNull
- regex
- type: 'null'
type:
default: utm
description: Category of the parameter being matched. Determines which keys are valid. Use 'device' for device targeting (pair with key 'device', filter 'equals', and value 'any' | 'mobile' | 'desktop'); 'utm'/'url' for query params; 'urlPath' for the path; and 'country', 'visitor', 'trafficSource', 'referrer', 'cookie', 'landingPage', 'klaviyo', or 'jsExpression' for the rest.
type: string
enum:
- utm
- url
- urlPath
- device
- visitor
- jsExpression
- trafficSource
- country
- referrer
- cookie
- klaviyo
- landingPage
required:
- key
- value
- type
additionalProperties: false
operator:
type: string
enum:
- and
- or
- start_paren
- end_paren
additionalProperties: false
- type: 'null'
experienceId:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
required:
- id
- filterType
- value
- order
additionalProperties: false
experienceProductTargeting:
default: []
description: Product attribute rules controlling which products this experience applies to. Empty means all products.
type: array
items:
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
description: Server-generated. Read-only.
experienceId:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
description: References the parent experience.
target:
type: string
enum:
- productPage
- productCard
description: Storefront context where targeting rules are evaluated (product detail pages vs collection/search listings).
expression:
description: Boolean expression tree of product attribute conditions. Each node has either a 'query' (leaf) or 'operator' (combinator).
anyOf:
- type: array
items:
type: object
properties:
query:
type: object
properties:
key:
type: string
enum:
- productId
- collection
- tag
- price
- inventory
description: Product attribute to filter on. Determines which product property is evaluated.
value:
anyOf:
- type: string
- type: number
description: Expected value. String for text attributes (productId, collection, tag); number for numeric attributes (price, inventory).
filter:
type: string
enum:
- includes
- doesNotInclude
- greaterThan
- lessThan
description: Comparison operator for evaluating the product attribute against the value.
type:
type: string
enum:
- productId
- collection
- tag
- price
- inventory
description: Mirrors the key field. Determines attribute category for validation.
required:
- key
- value
- filter
- type
additionalProperties: false
operator:
type: string
enum:
- and
- or
- start_paren
- end_paren
additionalProperties: false
- type: 'null'
required:
- id
- experienceId
- target
additionalProperties: false
experienceActions:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
experienceId:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
action:
type: string
enum:
- start
- pause
- end
- delete
- reset
actionTs:
type: number
performedBy:
description: Email of the user who triggered this lifecycle event. Resolved from History records by matching action type and timestamp within a 5-minute window. Null if no matching History record is found, or if the record has no associated user. Currently only populated by GET /experiences/{experienceId}; list endpoints return null.
anyOf:
- type: string
- type: 'null'
required:
- id
- experienceId
- action
- actionTs
additionalProperties: false
description: Server-generated. Read-only. Lifecycle state transitions (start, pause, end, delete, reset) recorded for this experience. On GET /experiences/{experienceId}, each entry includes a `performedBy` field with the triggering user's email, resolved from History records (may be null if unresolvable). Distinct from the list endpoint's raw `history` field, which contains broader user-action records.
experienceIntegrations:
default: []
description: Connected third-party integrations (e.g., Google Analytics, Segment).
type: array
items:
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
createdAtTs:
type: number
integration:
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
enum:
- Recharge
- StayAi
- GrowLTV
- OneClickUpsell
- Google
- Amped
- Clarity
- Hotjar
- Heatmap
- CustomApi
- Klaviyo
- Slack
- Amplitude
- Heap
- Segment
- IntelligemsAPI
- IntelligemsMcp
description:
type: string
enabled:
type: boolean
globalSettings: {}
apis:
default: []
type: array
items:
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
description:
anyOf:
- type: string
- type: 'null'
accessToken:
type: string
scopes:
type: array
items:
type: string
enum:
- read_experiments
- write_experiments
- write_test_groups
- read_integrations
organization:
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
required:
- id
- name
additionalProperties: false
required:
- id
- name
- accessToken
- scopes
- organization
additionalProperties: false
createdAtTs:
type: number
lastUpdateTs:
type: number
required:
- id
- name
- description
- enabled
- globalSettings
- apis
additionalProperties: false
experience
# --- truncated at 32 KB (337 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/intelligems/refs/heads/main/openapi/intelligems-perform-experience-action-api-openapi.yml