openapi: 3.0.3
info:
title: 'LoopSpark API'
description: 'LoopSpark Public API'
version: 1.0.0
servers:
- url: 'https://loopspark.com'
tags:
- name: Authorization
description: "To authorize your requests, you need to pass a `token` in the request header `Authorization`.\n \nExample: `Authorization: Bearer YourToken`"
- name: 'Integrations - MindBODY'
description: ''
- name: Automation
description: 'All the Endpoints regarding Automations of your franchise'
- name: Staff
description: 'All the Endpoints regarding Staff members of your franchise'
- name: Prospect
description: 'All the Endpoints regarding the prospects of a specific studio.'
- name: 'Unsubscribe Rules'
description: "All the Endpoints regarding the unsubscribe rules of a specific studio.\nThis feature allows you to tell LoopSpark that when we see a client or prospect with the specified `UniqueID`,\nLoopSpark should consider them (un)subscribed on SMS and/or Email. Prospects' `UniqueID` can be retrieved from the \"Prospect list\"\n endpoint, using the returned `id` of the prospect"
- name: Groups
description: "\nAll the Endpoints regarding the groups and the Staff assigned to them."
- name: Studio
description: 'All the Endpoints regarding the studios belonging to your franchise.'
- name: Forms
description: "\nAll the Endpoints regarding the groups and the Staff assigned to them."
- name: Client
description: 'All the Endpoints regarding the clients of a specific studio.'
- name: Contacts
description: 'Endpoints related to managing studio contacts, encompassing both clients and prospects. A contact is a unified entity designed to facilitate seamless viewing and management of both clients and prospects within a single list. This makes it easier to find clients or prospects in the system with just one call.'
- name: 'Custom Fields'
description: 'Franchise API endpoints for managing custom field definitions and client values.'
- name: 'Deferred Tags'
description: "All the Endpoints regarding the deferred tags of a specific studio.\nThis feature allows you to tell LoopSpark that when we see a client or prospect with the specified `UniqueID`,\nLoopSpark should automatically add a Tag and attach it them. Prospects' `UniqueID` can be retrieved from the \"Prospect list\"\n endpoint, using the returned `id` of the prospect"
- name: 'Note Categories'
description: "\nThe studio's note categories, used to file a note created on a Client, Prospect or Contact."
- name: Search
description: "\nThis endpoint allows franchise owners to search and list contacts (clients or prospects) across all studios\nwithin their franchise. It provides filtering by email, mobile phone, tags, and specific studio site IDs,\nas well as sorting and pagination capabilities. This is useful for managing contacts across multiple locations\nand finding duplicates or shared contacts between studios."
components:
securitySchemes:
default:
type: http
scheme: bearer
description: 'To obtain a token, please contact our support at support@loopspark.com.'
security:
-
default: []
paths:
/api/franchise/v1/me:
get:
summary: 'Retrieving your franchise'
operationId: retrievingYourFranchise
description: "This endpoint should be used to make sure that the your authorization token is valid.\nIt will return an object with the name of the franchise."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
name: 'Your franchise name'
meta:
success: true
properties:
data:
type: object
properties:
name:
type: string
example: 'Your franchise name'
meta:
type: object
properties:
success:
type: boolean
example: true
403:
description: ''
content:
application/json:
schema:
type: object
example:
message: Unauthenticated.
properties:
message:
type: string
example: Unauthenticated.
tags:
- Authorization
'/api/franchise/v1/{siteId}/integrations/mbo/authorization-link':
get:
summary: 'Get the authorization link from MINDBODY.'
operationId: getTheAuthorizationLinkFromMINDBODY
description: 'This is the first step required in order to activate a SiteID.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
authorization_link: 'https://....'
properties:
authorization_link:
type: string
example: 'https://....'
406:
description: 'Studio already integrated'
content:
text/plain:
schema:
type: string
example: "{\n \"error\" : TRUE,\n \"message\" : \"The SiteID is already integrated\"\n}"
tags:
- 'Integrations - MindBODY'
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/integrations/mbo/authorization-completed':
post:
summary: 'Confirm that the authorization is completed'
operationId: confirmThatTheAuthorizationIsCompleted
description: "This is the second and final step to activate a SiteID. After the authorization link is created (using GET authorization-link),\nproceed to activate the SiteID on MINDBODY. Once it's active, confirm it to LoopSpark by using this POST request.\nThe SiteID needs to have Locations already available on MINDBODY (beside the \"Online Store\")"
parameters: []
responses:
200:
description: ''
content:
text/plain:
schema:
type: string
example: "{\n \"ok\" : TRUE\n}"
tags:
- 'Integrations - MindBODY'
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
/api/franchise/v1/automations:
get:
summary: 'Automations list'
operationId: automationsList
description: 'Retrieve a list of all the Automations available. The results are paginated'
parameters:
-
in: query
name: replicas_of_id
description: 'Only show replica Automations of a specific Automation ID in the list. Default: `null`.'
example: 123.0
required: false
schema:
type: number
description: 'Only show replica Automations of a specific Automation ID in the list. Default: `null`.'
example: 123.0
-
in: query
name: include_paused
description: 'Include paused/inactive Automations in the list. Default: `false`.'
example: true
required: false
schema:
type: boolean
description: 'Include paused/inactive Automations in the list. Default: `false`.'
example: true
-
in: query
name: include_archived
description: 'Include archived Automations in the list. Default: `false`.'
example: true
required: false
schema:
type: boolean
description: 'Include archived Automations in the list. Default: `false`.'
example: true
-
in: query
name: only_primaries
description: 'Only show primary Automations in the list. Default: `false`.'
example: true
required: false
schema:
type: boolean
description: 'Only show primary Automations in the list. Default: `false`.'
example: true
-
in: query
name: per_page
description: 'The amount of automations to return. Max: `250`. Default: `250`. Must be at least 1. Must not be greater than 250.'
example: 10.0
required: false
schema:
type: number
description: 'The amount of automations to return. Max: `250`. Default: `250`. Must be at least 1. Must not be greater than 250.'
example: 10.0
-
in: query
name: only_type
description: 'Only show Automations using a specific medium. Values are `EMAIL`,`SMS`,`TAG` or `TODO`. Default: `null`.'
example: SMS
required: false
schema:
type: string
description: 'Only show Automations using a specific medium. Values are `EMAIL`,`SMS`,`TAG` or `TODO`. Default: `null`.'
example: SMS
enum:
- EMAIL
- SMS
- TODO
- TAG
- EXPORT
-
in: query
name: sort_by
description: 'Sorts the results by either `id`, `name`, `last_ran_at`, or `creation_date`. Default: `id`.'
example: id
required: false
schema:
type: string
description: 'Sorts the results by either `id`, `name`, `last_ran_at`, or `creation_date`. Default: `id`.'
example: id
enum:
- id
- name
- creation_date
- last_ran_at
-
in: query
name: sort_direction
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
required: false
schema:
type: string
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
enum:
- asc
- desc
-
in: query
name: site_id
description: 'Limit the search to a specific SiteID. Default: null.'
example: '12345'
required: false
schema:
type: string
description: 'Limit the search to a specific SiteID. Default: null.'
example: '12345'
-
in: query
name: category
description: 'Limit the search to a specific category. Default: null.'
example: 'Welcome Sequence'
required: false
schema:
type: string
description: 'Limit the search to a specific category. Default: null.'
example: 'Welcome Sequence'
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 31
team_id: '6316'
active: false
archived: false
disabled: false
is_primary: false
replica_of: null
message:
subject: 'eius et animi'
content: "Et fugiat sunt nihil accusantium. Mollitia modi deserunt aut ab provident perspiciatis quo. Nostrum aut adipisci quidem nostrum.\n\nIncidunt iure odit et et modi ipsum. Omnis autem et consequatur.\n\nEnim non facere tempora ex voluptatem laboriosam praesentium. Adipisci molestias fugit deleniti distinctio eum doloremque id. Libero aliquam veniam corporis dolorem mollitia deleniti."
settings:
name: architecto
category: null
delivery_type: SMS
one_off: false
send_window:
immediate: true
start_mins: null
end_mins: null
start_at: null
audience: 'sint aut molestiae'
created_at: '2026-10-03T08:00:35+00:00'
updated_at: '2026-10-03T08:00:35+00:00'
last_ran_at: null
tags:
tags: []
add: 1
todo:
overdue_hours: 0
postponed_hours: null
priority: LOW
tags: []
stats:
bounced: 0
clicked: 0
delivered: 0
opened: 0
sent: 0
unsubscribe_clicked: 0
-
id: 32
team_id: '8222'
active: false
archived: false
disabled: false
is_primary: false
replica_of: null
message:
subject: 'suscipit doloribus fugiat'
content: "Deserunt et error neque recusandae et. Dolorem et ut dicta. Assumenda consequatur ut et sunt quisquam. Repellendus ut eaque alias ratione dolores.\n\nEa ut aut deserunt sint quis. Quod id aspernatur consectetur id a consectetur assumenda. Neque sit sunt nihil accusantium odit ut perspiciatis.\n\nAut quis ut dolores omnis et earum. Asperiores est vel id aut officiis eos. Et qui unde et."
settings:
name: sunt
category: null
delivery_type: SMS
one_off: false
send_window:
immediate: true
start_mins: null
end_mins: null
start_at: null
audience: 'sed quasi et'
created_at: '2026-10-03T08:00:35+00:00'
updated_at: '2026-10-03T08:00:35+00:00'
last_ran_at: null
tags:
tags: []
add: 1
todo:
overdue_hours: 0
postponed_hours: null
priority: LOW
tags: []
stats:
bounced: 0
clicked: 0
delivered: 0
opened: 0
sent: 0
unsubscribe_clicked: 0
properties:
data:
type: array
example:
-
id: 31
team_id: '6316'
active: false
archived: false
disabled: false
is_primary: false
replica_of: null
message:
subject: 'eius et animi'
content: "Et fugiat sunt nihil accusantium. Mollitia modi deserunt aut ab provident perspiciatis quo. Nostrum aut adipisci quidem nostrum.\n\nIncidunt iure odit et et modi ipsum. Omnis autem et consequatur.\n\nEnim non facere tempora ex voluptatem laboriosam praesentium. Adipisci molestias fugit deleniti distinctio eum doloremque id. Libero aliquam veniam corporis dolorem mollitia deleniti."
settings:
name: architecto
category: null
delivery_type: SMS
one_off: false
send_window:
immediate: true
start_mins: null
end_mins: null
start_at: null
audience: 'sint aut molestiae'
created_at: '2026-10-03T08:00:35+00:00'
updated_at: '2026-10-03T08:00:35+00:00'
last_ran_at: null
tags:
tags: []
add: 1
todo:
overdue_hours: 0
postponed_hours: null
priority: LOW
tags: []
stats:
bounced: 0
clicked: 0
delivered: 0
opened: 0
sent: 0
unsubscribe_clicked: 0
-
id: 32
team_id: '8222'
active: false
archived: false
disabled: false
is_primary: false
replica_of: null
message:
subject: 'suscipit doloribus fugiat'
content: "Deserunt et error neque recusandae et. Dolorem et ut dicta. Assumenda consequatur ut et sunt quisquam. Repellendus ut eaque alias ratione dolores.\n\nEa ut aut deserunt sint quis. Quod id aspernatur consectetur id a consectetur assumenda. Neque sit sunt nihil accusantium odit ut perspiciatis.\n\nAut quis ut dolores omnis et earum. Asperiores est vel id aut officiis eos. Et qui unde et."
settings:
name: sunt
category: null
delivery_type: SMS
one_off: false
send_window:
immediate: true
start_mins: null
end_mins: null
start_at: null
audience: 'sed quasi et'
created_at: '2026-10-03T08:00:35+00:00'
updated_at: '2026-10-03T08:00:35+00:00'
last_ran_at: null
tags:
tags: []
add: 1
todo:
overdue_hours: 0
postponed_hours: null
priority: LOW
tags: []
stats:
bounced: 0
clicked: 0
delivered: 0
opened: 0
sent: 0
unsubscribe_clicked: 0
items:
type: object
properties:
id:
type: integer
example: 31
team_id:
type: string
example: '6316'
nullable: true
active:
type: boolean
example: false
archived:
type: boolean
example: false
disabled:
type: boolean
example: false
is_primary:
type: boolean
example: false
replica_of:
type: string
example: null
nullable: true
message:
type: object
properties:
subject:
type: string
example: 'eius et animi'
nullable: true
content:
type: string
example: "Et fugiat sunt nihil accusantium. Mollitia modi deserunt aut ab provident perspiciatis quo. Nostrum aut adipisci quidem nostrum.\n\nIncidunt iure odit et et modi ipsum. Omnis autem et consequatur.\n\nEnim non facere tempora ex voluptatem laboriosam praesentium. Adipisci molestias fugit deleniti distinctio eum doloremque id. Libero aliquam veniam corporis dolorem mollitia deleniti."
nullable: true
settings:
type: object
properties:
name:
type: string
example: architecto
category:
type: string
example: null
nullable: true
delivery_type:
type: string
example: SMS
one_off:
type: boolean
example: false
send_window:
type: object
properties:
immediate:
type: boolean
example: true
start_mins:
type: string
example: null
nullable: true
end_mins:
type: string
example: null
nullable: true
start_at:
type: string
example: null
nullable: true
audience:
type: string
example: 'sint aut molestiae'
nullable: true
created_at:
type: string
example: '2026-10-03T08:00:35+00:00'
nullable: true
updated_at:
type: string
example: '2026-10-03T08:00:35+00:00'
last_ran_at:
type: string
example: null
nullable: true
tags:
type: object
properties:
tags:
type: array
example: []
nullable: true
add:
type: integer
example: 1
todo:
type: object
properties:
overdue_hours:
type: integer
example: 0
postponed_hours:
type: string
example: null
nullable: true
priority:
type: string
example: LOW
tags:
type: array
example: []
nullable: true
stats:
type: object
properties:
bounced:
type: integer
example: 0
clicked:
type: integer
example: 0
delivered:
type: integer
example: 0
opened:
type: integer
example: 0
sent:
type: integer
example: 0
unsubscribe_clicked:
type: integer
example: 0
tags:
- Automation
'/api/franchise/v1/automations/{id}':
get:
summary: 'Single Automation'
operationId: singleAutomation
description: 'Show a single Automation by ID'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 33
team_id: '2131'
active: false
archived: false
disabled: false
is_primary: false
replica_of: null
message:
subject: 'adipisci quidem nostrum'
content: "Incidunt iure odit et et modi ipsum. Omnis autem et consequatur.\n\nEnim non facere tempora ex voluptatem laboriosam praesentium. Adipisci molestias fugit deleniti distinctio eum doloremque id. Libero aliquam veniam corporis dolorem mollitia deleniti.\n\nQuia officia est dignissimos neque. Odio veritatis excepturi doloribus delectus fugit qui repudiandae. Est alias tenetur ratione. Voluptate accusamus ut et recusandae."
settings:
name: aut
category: null
delivery_type: TODO
one_off: false
send_window:
immediate: true
start_mins: null
end_mins: null
start_at: null
audience: 'eaque alias ratione'
created_at: '2026-10-03T08:00:35+00:00'
updated_at: '2026-10-03T08:00:35+00:00'
last_ran_at: null
tags:
tags: []
add: 1
todo:
overdue_hours: 0
postponed_hours: null
priority: LOW
tags: []
stats:
completed: 0
created: 0
deleted: 0
open: 0
postponed: 0
properties:
data:
type: object
properties:
id:
type: integer
example: 33
team_id:
type: string
example: '2131'
nullable: true
active:
type: boolean
example: false
archived:
type: boolean
example: false
disabled:
type: boolean
example: false
is_primary:
type: boolean
example: false
replica_of:
type: string
example: null
nullable: true
message:
type: object
properties:
subject:
type: string
example: 'adipisci quidem nostrum'
nullable: true
content:
type: string
example: "Incidunt iure odit et et modi ipsum. Omnis autem et consequatur.\n\nEnim non facere tempora ex voluptatem laboriosam praesentium. Adipisci molestias fugit deleniti distinctio eum doloremque id. Libero aliquam veniam corporis dolorem mollitia deleniti.\n\nQuia officia est dignissimos neque. Odio veritatis excepturi doloribus delectus fugit qui repudiandae. Est alias tenetur ratione. Voluptate accusamus ut et recusandae."
nullable: true
settings:
type: object
properties:
name:
type: string
example: aut
category:
type: string
example: null
nullable: true
delivery_type:
type: string
example: TODO
one_off:
type: boolean
example: false
send_window:
type: object
properties:
immediate:
type: boolean
example: true
start_mins:
type: string
example: null
nullable: true
end_mins:
type: string
example: null
nullable: true
start_at:
type: string
example: null
nullable: true
audience:
type: string
example: 'eaque alias ratione'
nullable: true
created_at:
type: string
example: '2026-10-03T08:00:35+00:00'
nullable: true
updated_at:
type: string
example: '2026-10-03T08:00:35+00:00'
last_ran_at:
type: string
example: null
nullable: true
tags:
type: object
properties:
tags:
type: array
example: []
nullable: true
add:
type: integer
example: 1
todo:
type: object
properties:
overdue_hours:
type: integer
example: 0
postponed_hours:
type: string
example: null
nullable: true
priority:
type: string
example: LOW
tags:
type: array
example: []
nullable: true
stats:
type: object
properties:
completed:
type: integer
example: 0
created:
type: integer
example: 0
deleted:
type: integer
example: 0
open:
type: integer
example: 0
postponed:
type: integer
example: 0
tags:
- Automation
put:
summary: 'Update an Automation'
operationId: updateAnAutomation
description: 'Update an Automation by ID'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 34
team_id: '4680'
active: false
archived: false
disabled: false
is_primary: false
replica_of: null
message:
subject: null
content: null
settings:
name: et
category: null
delivery_type: TAG
one_off: false
send_window:
immediate: true
start_mins: null
end_mins: null
start_at: null
audience: 'consectetur assumenda eaque'
created_at: '2026-10-03T08:00:35+00:00'
updated_at: '2026-10-03T08:00:35+00:00'
last_ran_at: null
tags:
tags:
- ciao
- second
add: 1
todo:
overdue_hours: 0
postponed_hours: 0
priority: LOW
tags: []
stats:
created: 0
properties:
data:
type: object
properties:
id:
type: integer
example: 34
team_id:
type: string
example: '4680'
nullable: true
active:
type: boolean
example: false
archived:
type: boolean
example: false
disabled:
type: boolean
example: false
is_primary:
type: boolean
example: false
replica_of:
type: string
example: null
nullable: true
message:
type: object
properties:
subject:
type: string
example: null
nullable: true
content:
type: string
example: null
nullable: true
settings:
type: object
properties:
name:
type: string
example: et
category:
type: string
example: null
nullable: true
delivery_type:
type: string
example: TAG
one_off:
type: boolean
example: false
send_window:
type: object
properties:
immediate:
type: boolean
example: true
start_mins:
type: string
example: null
nullable: true
end_mins:
type: string
example: null
nullable: true
start_at:
type: string
example: null
nullable: true
audience:
type: string
example: 'consectetur assumenda eaque'
nullable: true
created_at:
type: string
example: '2026-10-03T08:00:35+00:00'
nullable: true
updated_at:
type: string
example: '2026-10-03T08:00:35+00:00'
last_ran_at:
type: string
example: null
nullable: true
tags:
type: object
properties:
tags:
type: array
example:
- ciao
- second
items:
type: string
nullable: true
nullable: true
add:
type: integer
example: 1
todo:
type: object
properties:
overdue_hours:
type: integer
example: 0
postponed_hours:
type: integer
example: 0
nullable: true
priority:
type: string
example: LOW
tags:
type: array
example: []
nullable: true
stats:
type: object
properties:
created:
type: integer
example: 0
tags:
- Automation
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
active:
type: boolean
description: ''
example: true
archived:
type: boolean
description: ''
example: true
name:
type: string
description: 'Must be at least 1 character.'
example: bngzmiyvdljnikhw
category_name:
type: string
description: 'Must be at least 1 character.'
example: aykcmyuwpwlvqwrs
parameters:
-
in: path
name: id
description: 'The ID of the Automation'
example: '123'
required: true
schema:
type: string
'/api/franchise/v1/automations/{automation_id}/stats':
get:
summary: Stats
operationId: stats
description: 'Get the stats of a single automation'
parameters:
-
in: query
name: start_date
description: 'The Unix timestamp of the starting date for the stats. Defaults to 7 days ago. Must be a valid date in the format U.'
example: '1581418800'
required: false
schema:
type: string
description: 'The Unix timestamp of the starting date for the stats. Defaults to 7 days ago. Must be a valid date in the format U.'
example: '1581418800'
-
in: query
name: end_date
description: 'The Unix timestamp of the ending date for the stats. Defaults to now. Must be a valid date in the format U.'
example: '1581678000'
required: false
schema:
type: string
description: 'The Unix timestamp of the ending date for the stats. Defaults to now. Must be a valid date in the format U.'
example: '1581678000'
responses:
200:
description: ''
content:
application/json:
schema:
oneOf:
-
description: ''
type: object
example:
data:
id: 123
team_id: foobar
delivery_type: EMAIL
sent: 20
bounced: 1
delivered: 19
opened: 0
clicked: 0
properties:
data:
type: object
properties:
id:
type: integer
example: 123
team_id:
type: string
example: foobar
nullable: true
delivery_type:
type: string
example: EMAIL
sent:
type: integer
example: 20
bounced:
type: integer
example: 1
delivered:
type: integer
example: 19
opened:
type: integer
example: 0
clicked:
type: integer
example: 0
-
description: ''
type: object
example:
data:
id: 123
team_id: foobar
delivery_type: SMS
sent: 20
bounced: 1
delivered: 19
opened: 0
clicked: 0
properties:
data:
type: object
properties:
id:
type: integer
example: 123
team_id:
type: string
example: foobar
nullable: true
delivery_type:
type: string
example: SMS
sent:
type: integer
example: 20
bounced:
type: integer
example: 1
delivered:
type: integer
example: 19
opened:
type: integer
example: 0
clicked:
type: integer
example: 0
-
description: ''
type: object
example:
data:
id: 123
team_id: foobar
delivery_type: TODO
created: 100
completed: 25
open: 40
postponed: 35
deleted: 5
properties:
data:
type: object
properties:
id:
type: integer
example: 123
team_id:
type: string
example: foobar
nullable: true
delivery_type:
type: string
example: TODO
created:
type: integer
example: 100
completed:
type: integer
example: 25
open:
type: integer
example: 40
postponed:
type: integer
example: 35
deleted:
type: integer
example: 5
-
description: ''
type: object
example:
data:
id: 123
team_id: foobar
delivery_type: TAG
created: 100
properties:
data:
type: object
properties:
id:
type: integer
example: 123
team_id:
type: string
example: foobar
nullable: true
delivery_type:
type: string
example: TAG
created:
type: integer
example: 100
tags:
- Automation
parameters:
-
in: path
name: automation_id
description: 'The ID of the Automation'
example: '123'
required: true
schema:
type: string
'/api/franchise/v1/automations/{automation_id}/actions/{client_id}':
get:
summary: 'Action history'
operationId: actionHistory
description: 'Show the most recent actions performed by an automation for a specific client.'
parameters:
-
in: query
name: start_date
description: 'The Unix timestamp of the starting date for the stats. Defaults to 7 days ago. Must be a valid date in the format U.'
example: '1581418800'
required: false
schema:
type: string
description: 'The Unix timestamp of the starting date for the stats. Defaults to 7 days ago. Must be a valid date in the format U.'
example: '1581418800'
-
in: query
name: end_date
description: 'The Unix timestamp of the ending date for the stats. Defaults to now. Must be a valid date in the format U.'
example: '1581678000'
required: false
schema:
type: string
description: 'The Unix timestamp of the ending date for the stats. Defaults to now. Must be a valid date in the format U.'
example: '1581678000'
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
type: EMAIL
action:
delivery_type: EMAIL
sent: false
bounced: false
delivered: false
opened: false
clicked: false
last_contacted_at: '2026-10-03T08:00:35+00:00'
closed: false
-
type: EMAIL
action:
delivery_type: EMAIL
sent: false
bounced: false
delivered: false
opened: false
clicked: false
last_contacted_at: '2026-10-03T08:00:35+00:00'
closed: false
properties:
data:
type: array
example:
-
type: EMAIL
action:
delivery_type: EMAIL
sent: false
bounced: false
delivered: false
opened: false
clicked: false
last_contacted_at: '2026-10-03T08:00:35+00:00'
closed: false
-
type: EMAIL
action:
delivery_type: EMAIL
sent: false
bounced: false
delivered: false
opened: false
clicked: false
last_contacted_at: '2026-10-03T08:00:35+00:00'
closed: false
items:
type: object
properties:
type:
type: string
example: EMAIL
action:
type: object
properties:
delivery_type:
type: string
example: EMAIL
sent:
type: boolean
example: false
bounced:
type: boolean
example: false
delivered:
type: boolean
example: false
opened:
type: boolean
example: false
clicked:
type: boolean
example: false
last_contacted_at:
type: string
example: '2026-10-03T08:00:35+00:00'
nullable: true
closed:
type: boolean
example: false
tags:
- Automation
parameters:
-
in: path
name: automation_id
description: 'The ID of the Automation'
example: '123'
required: true
schema:
type: string
-
in: path
name: client_id
description: 'The ID of the Client'
example: '12345'
required: true
schema:
type: string
/api/franchise/v1/staff:
get:
summary: 'Staff list'
operationId: staffList
description: "Retrieve a list of all the staff members available. Staff members can either be already assigned to\na Studio, or they can be the ones created via API. The results are paginated"
parameters:
-
in: query
name: per_page
description: 'The amount of staff to return. Max: `250`. Default: `250`. Must be at least 1. Must not be greater than 250.'
example: 10.0
required: false
schema:
type: number
description: 'The amount of staff to return. Max: `250`. Default: `250`. Must be at least 1. Must not be greater than 250.'
example: 10.0
-
in: query
name: sort_by
description: 'Sorts the results by either `email`, `name`, or `creation_date`. Default: `email`.'
example: email
required: false
schema:
type: string
description: 'Sorts the results by either `email`, `name`, or `creation_date`. Default: `email`.'
example: email
enum:
- email
- name
- creation_date
-
in: query
name: sort_direction
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
required: false
schema:
type: string
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
enum:
- asc
- desc
-
in: query
name: site_id
description: 'Limit the search to a specific SiteID. Default: null.'
example: '12345'
required: false
schema:
type: string
description: 'Limit the search to a specific SiteID. Default: null.'
example: '12345'
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
name: 'Ms. Audra Crooks II'
email: gulgowski.asia@example.com
phone: null
-
name: 'Jermaine Tillman'
email: mya96@example.com
phone: null
properties:
data:
type: array
example:
- name: 'Ms. Audra Crooks II'
email: gulgowski.asia@example.com
phone: null
- name: 'Jermaine Tillman'
email: mya96@example.com
phone: null
items:
type: object
properties:
name:
type: string
example: 'Ms. Audra Crooks II'
email:
type: string
example: gulgowski.asia@example.com
nullable: true
phone:
type: string
example: null
nullable: true
tags:
- Staff
post:
summary: 'Create a Staff'
operationId: createAStaff
description: 'Create a new staff member'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
name: 'Ms. Elisabeth Okuneva'
email: idickens@example.org
phone: null
studios: []
properties:
data:
type: object
properties:
name:
type: string
example: 'Ms. Elisabeth Okuneva'
email:
type: string
example: idickens@example.org
nullable: true
phone:
type: string
example: null
nullable: true
studios:
type: array
example: []
tags:
- Staff
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: 'Must be a valid email address.'
example: gbailey@example.net
name:
type: string
description: 'Must be at least 0 characters.'
example: miyvdljnikhwaykcmyuwpwlvqwr
phone:
type: string
description: ''
example: architecto
required:
- email
- name
'/api/franchise/v1/staff/{email}':
get:
summary: 'Get Staff detail'
operationId: getStaffDetail
description: 'Shows the details of a specific Staff member, including all the Studios they are part of and their role'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
name: 'Morgan Hirthe'
email: dare.emelie@example.com
phone: null
studios: []
properties:
data:
type: object
properties:
name:
type: string
example: 'Morgan Hirthe'
email:
type: string
example: dare.emelie@example.com
nullable: true
phone:
type: string
example: null
nullable: true
studios:
type: array
example: []
tags:
- Staff
delete:
summary: 'Detach a Staff'
operationId: detachAStaff
description: 'Detach a staff member from every Studio'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
name: 'Morgan Hirthe'
email: imclaughlin@example.org
phone: null
studios: []
properties:
data:
type: object
properties:
name:
type: string
example: 'Morgan Hirthe'
email:
type: string
example: imclaughlin@example.org
nullable: true
phone:
type: string
example: null
nullable: true
studios:
type: array
example: []
tags:
- Staff
parameters:
-
in: path
name: email
description: 'The email of the Staff member'
example: foo@bar.com
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/staff':
post:
summary: 'Add a Staff to a Studio'
operationId: addAStaffToAStudio
description: 'Add a Staff member to a specific Studio, with a defined role.'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: foobar
name: 'My Yoga Studio'
phone_number: '12225551234'
api_set: true
website: 'https://mystudioisgreat.com/landing'
timezone: UTC
start_date: '2020-09-30'
creation_date: '2018-02-22T13:00:00+00:00'
first_import_done: true
outgoing_settings:
email:
signature: et
sender: umonahan@hotmail.com
sender_name: 'Prof. Nels Quitzon'
phone:
sender_name: '16273854741'
phone_forward: '12125558888'
address: '4800 Oak Grove Dr, Pasadena, CA 91109'
social:
facebook_url: null
instagram_handle: null
twitter_handle: null
urls:
list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40'
book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7'
variables:
packages:
-
package_1:
url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
price: $10
name: 'Great Package'
discount_code: CouponName
discount_price: '20 dollars'
-
package_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
contracts:
-
contract_1:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
staff:
-
name: 'Krystal Harvey'
email: alexandrea87@example.com
role: owner
groups:
-
id: 1
name: front-desk
staff:
-
name: 'Katarina Funk'
email: john42@example.com
phone: null
-
id: 2
name: teachers
staff: []
properties:
data:
type: object
properties:
id:
type: string
example: foobar
name:
type: string
example: 'My Yoga Studio'
phone_number:
type: string
example: '12225551234'
nullable: true
api_set:
type: boolean
example: true
website:
type: string
example: 'https://mystudioisgreat.com/landing'
nullable: true
timezone:
type: string
example: UTC
start_date:
type: string
example: '2020-09-30'
nullable: true
creation_date:
type: string
example: '2018-02-22T13:00:00+00:00'
nullable: true
first_import_done:
type: boolean
example: true
outgoing_settings:
type: object
properties:
email:
type: object
properties:
signature:
type: string
example: et
nullable: true
sender:
type: string
example: umonahan@hotmail.com
nullable: true
sender_name:
type: string
example: 'Prof. Nels Quitzon'
nullable: true
phone:
type: object
properties:
sender_name:
type: string
example: '16273854741'
nullable: true
phone_forward:
type: string
example: '12125558888'
nullable: true
address:
type: string
example: '4800 Oak Grove Dr, Pasadena, CA 91109'
nullable: true
social:
type: object
properties:
facebook_url:
type: string
example: null
nullable: true
instagram_handle:
type: string
example: null
nullable: true
twitter_handle:
type: string
example: null
nullable: true
urls:
type: object
properties:
list_packages_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
nullable: true
list_contracts_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40'
nullable: true
book_class_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7'
nullable: true
variables:
type: object
properties:
packages:
type: array
example:
-
package_1:
url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
price: $10
name: 'Great Package'
discount_code: CouponName
discount_price: '20 dollars'
-
package_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
items:
type: object
properties:
package_1:
type: object
properties:
url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
nullable: true
price:
type: string
example: $10
nullable: true
name:
type: string
example: 'Great Package'
nullable: true
discount_code:
type: string
example: CouponName
nullable: true
discount_price:
type: string
example: '20 dollars'
nullable: true
contracts:
type: array
example:
-
contract_1:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
items:
type: object
properties:
contract_1:
type: object
properties:
url:
type: string
example: null
nullable: true
price:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
discount_code:
type: string
example: null
nullable: true
discount_price:
type: string
example: null
nullable: true
staff:
type: array
example:
- name: 'Krystal Harvey'
email: alexandrea87@example.com
role: owner
items:
type: object
properties:
name:
type: string
example: 'Krystal Harvey'
email:
type: string
example: alexandrea87@example.com
role:
type: string
example: owner
groups:
type: array
example:
-
id: 1
name: front-desk
staff:
- name: 'Katarina Funk'
email: john42@example.com
phone: null
-
id: 2
name: teachers
staff: []
items:
type: object
properties:
id:
type: integer
example: 1
name:
type: string
example: front-desk
staff:
type: array
example:
- name: 'Katarina Funk'
email: john42@example.com
phone: null
items:
type: object
properties:
name:
type: string
example: 'Katarina Funk'
email:
type: string
example: john42@example.com
phone:
type: string
example: null
nullable: true
tags:
- Staff
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: 'Must be a valid email address.'
example: gbailey@example.net
role:
type: string
description: ''
example: owner
enum:
- member
- owner
- admin
- manager
required:
- email
- role
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/staff/{email}':
put:
summary: 'Change the Staff role'
operationId: changeTheStaffRole
description: "Change the role of a Staff member of a specific Studio. If the Staff member is not currently\npart of the Studio, it will be added to it."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: foobar
name: 'My Yoga Studio'
phone_number: '12225551234'
api_set: true
website: 'https://mystudioisgreat.com/landing'
timezone: UTC
start_date: '2020-09-30'
creation_date: '2018-02-22T13:00:00+00:00'
first_import_done: true
outgoing_settings:
email:
signature: et
sender: umonahan@hotmail.com
sender_name: 'Prof. Nels Quitzon'
phone:
sender_name: '16273854741'
phone_forward: '12125558888'
address: '4800 Oak Grove Dr, Pasadena, CA 91109'
social:
facebook_url: null
instagram_handle: null
twitter_handle: null
urls:
list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40'
book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7'
variables:
packages:
-
package_1:
url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
price: $10
name: 'Great Package'
discount_code: CouponName
discount_price: '20 dollars'
-
package_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
contracts:
-
contract_1:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
staff:
-
name: 'Krystal Harvey'
email: alexandrea87@example.com
role: owner
groups:
-
id: 1
name: front-desk
staff:
-
name: 'Katarina Funk'
email: john42@example.com
phone: null
-
id: 2
name: teachers
staff: []
properties:
data:
type: object
properties:
id:
type: string
example: foobar
name:
type: string
example: 'My Yoga Studio'
phone_number:
type: string
example: '12225551234'
nullable: true
api_set:
type: boolean
example: true
website:
type: string
example: 'https://mystudioisgreat.com/landing'
nullable: true
timezone:
type: string
example: UTC
start_date:
type: string
example: '2020-09-30'
nullable: true
creation_date:
type: string
example: '2018-02-22T13:00:00+00:00'
nullable: true
first_import_done:
type: boolean
example: true
outgoing_settings:
type: object
properties:
email:
type: object
properties:
signature:
type: string
example: et
nullable: true
sender:
type: string
example: umonahan@hotmail.com
nullable: true
sender_name:
type: string
example: 'Prof. Nels Quitzon'
nullable: true
phone:
type: object
properties:
sender_name:
type: string
example: '16273854741'
nullable: true
phone_forward:
type: string
example: '12125558888'
nullable: true
address:
type: string
example: '4800 Oak Grove Dr, Pasadena, CA 91109'
nullable: true
social:
type: object
properties:
facebook_url:
type: string
example: null
nullable: true
instagram_handle:
type: string
example: null
nullable: true
twitter_handle:
type: string
example: null
nullable: true
urls:
type: object
properties:
list_packages_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
nullable: true
list_contracts_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40'
nullable: true
book_class_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7'
nullable: true
variables:
type: object
properties:
packages:
type: array
example:
-
package_1:
url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
price: $10
name: 'Great Package'
discount_code: CouponName
discount_price: '20 dollars'
-
package_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
items:
type: object
properties:
package_1:
type: object
properties:
url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
nullable: true
price:
type: string
example: $10
nullable: true
name:
type: string
example: 'Great Package'
nullable: true
discount_code:
type: string
example: CouponName
nullable: true
discount_price:
type: string
example: '20 dollars'
nullable: true
contracts:
type: array
example:
-
contract_1:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
items:
type: object
properties:
contract_1:
type: object
properties:
url:
type: string
example: null
nullable: true
price:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
discount_code:
type: string
example: null
nullable: true
discount_price:
type: string
example: null
nullable: true
staff:
type: array
example:
- name: 'Krystal Harvey'
email: alexandrea87@example.com
role: owner
items:
type: object
properties:
name:
type: string
example: 'Krystal Harvey'
email:
type: string
example: alexandrea87@example.com
role:
type: string
example: owner
groups:
type: array
example:
-
id: 1
name: front-desk
staff:
- name: 'Katarina Funk'
email: john42@example.com
phone: null
-
id: 2
name: teachers
staff: []
items:
type: object
properties:
id:
type: integer
example: 1
name:
type: string
example: front-desk
staff:
type: array
example:
- name: 'Katarina Funk'
email: john42@example.com
phone: null
items:
type: object
properties:
name:
type: string
example: 'Katarina Funk'
email:
type: string
example: john42@example.com
phone:
type: string
example: null
nullable: true
tags:
- Staff
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
role:
type: string
description: ''
example: manager
enum:
- member
- owner
- admin
- manager
required:
- role
delete:
summary: 'Detach a Staff from a Studio'
operationId: detachAStaffFromAStudio
description: 'Removes a Staff member from a Studio'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: foobar
name: 'My Yoga Studio'
phone_number: '12225551234'
api_set: true
website: 'https://mystudioisgreat.com/landing'
timezone: UTC
start_date: '2020-09-30'
creation_date: '2018-02-22T13:00:00+00:00'
first_import_done: true
outgoing_settings:
email:
signature: et
sender: umonahan@hotmail.com
sender_name: 'Prof. Nels Quitzon'
phone:
sender_name: '16273854741'
phone_forward: '12125558888'
address: '4800 Oak Grove Dr, Pasadena, CA 91109'
social:
facebook_url: null
instagram_handle: null
twitter_handle: null
urls:
list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40'
book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7'
variables:
packages:
-
package_1:
url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
price: $10
name: 'Great Package'
discount_code: CouponName
discount_price: '20 dollars'
-
package_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
contracts:
-
contract_1:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
staff:
-
name: 'Krystal Harvey'
email: alexandrea87@example.com
role: owner
groups:
-
id: 1
name: front-desk
staff:
-
name: 'Katarina Funk'
email: john42@example.com
phone: null
-
id: 2
name: teachers
staff: []
properties:
data:
type: object
properties:
id:
type: string
example: foobar
name:
type: string
example: 'My Yoga Studio'
phone_number:
type: string
example: '12225551234'
nullable: true
api_set:
type: boolean
example: true
website:
type: string
example: 'https://mystudioisgreat.com/landing'
nullable: true
timezone:
type: string
example: UTC
start_date:
type: string
example: '2020-09-30'
nullable: true
creation_date:
type: string
example: '2018-02-22T13:00:00+00:00'
nullable: true
first_import_done:
type: boolean
example: true
outgoing_settings:
type: object
properties:
email:
type: object
properties:
signature:
type: string
example: et
nullable: true
sender:
type: string
example: umonahan@hotmail.com
nullable: true
sender_name:
type: string
example: 'Prof. Nels Quitzon'
nullable: true
phone:
type: object
properties:
sender_name:
type: string
example: '16273854741'
nullable: true
phone_forward:
type: string
example: '12125558888'
nullable: true
address:
type: string
example: '4800 Oak Grove Dr, Pasadena, CA 91109'
nullable: true
social:
type: object
properties:
facebook_url:
type: string
example: null
nullable: true
instagram_handle:
type: string
example: null
nullable: true
twitter_handle:
type: string
example: null
nullable: true
urls:
type: object
properties:
list_packages_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
nullable: true
list_contracts_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40'
nullable: true
book_class_url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7'
nullable: true
variables:
type: object
properties:
packages:
type: array
example:
-
package_1:
url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
price: $10
name: 'Great Package'
discount_code: CouponName
discount_price: '20 dollars'
-
package_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
package_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
items:
type: object
properties:
package_1:
type: object
properties:
url:
type: string
example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41'
nullable: true
price:
type: string
example: $10
nullable: true
name:
type: string
example: 'Great Package'
nullable: true
discount_code:
type: string
example: CouponName
nullable: true
discount_price:
type: string
example: '20 dollars'
nullable: true
contracts:
type: array
example:
-
contract_1:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_2:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_3:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_4:
url: null
price: null
name: null
discount_code: null
discount_price: null
-
contract_5:
url: null
price: null
name: null
discount_code: null
discount_price: null
items:
type: object
properties:
contract_1:
type: object
properties:
url:
type: string
example: null
nullable: true
price:
type: string
example: null
nullable: true
name:
type: string
example: null
nullable: true
discount_code:
type: string
example: null
nullable: true
discount_price:
type: string
example: null
nullable: true
staff:
type: array
example:
- name: 'Krystal Harvey'
email: alexandrea87@example.com
role: owner
items:
type: object
properties:
name:
type: string
example: 'Krystal Harvey'
email:
type: string
example: alexandrea87@example.com
role:
type: string
example: owner
groups:
type: array
example:
-
id: 1
name: front-desk
staff:
- name: 'Katarina Funk'
email: john42@example.com
phone: null
-
id: 2
name: teachers
staff: []
items:
type: object
properties:
id:
type: integer
example: 1
name:
type: string
example: front-desk
staff:
type: array
example:
- name: 'Katarina Funk'
email: john42@example.com
phone: null
items:
type: object
properties:
name:
type: string
example: 'Katarina Funk'
email:
type: string
example: john42@example.com
phone:
type: string
example: null
nullable: true
tags:
- Staff
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
-
in: path
name: email
description: 'The email of the Staff member'
example: foo@bar.com
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/prospects':
get:
summary: 'Prospect list'
operationId: prospectList
description: 'Retrieve a list of the prospects for a specific Studio. The results are paginated'
parameters:
-
in: query
name: per_page
description: 'The amount of prospects to return. Default: `250`. Must be at least 1. Must not be greater than 250.'
example: 10.0
required: false
schema:
type: number
description: 'The amount of prospects to return. Default: `250`. Must be at least 1. Must not be greater than 250.'
example: 10.0
-
in: query
name: page
description: 'The page number. Must be at least 1.'
example: 1.0
required: false
schema:
type: number
description: 'The page number. Must be at least 1.'
example: 1.0
-
in: query
name: sort_by
description: 'Sorts the results by either `email` or `creation_date`. Default: `email`.'
example: id
required: false
schema:
type: string
description: 'Sorts the results by either `email` or `creation_date`. Default: `email`.'
example: id
enum:
- creation_date
- email
-
in: query
name: sort_direction
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
required: false
schema:
type: string
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
enum:
- asc
- desc
-
in: query
name: email
description: 'Return only prospects with the selected email. Empty for all prospects . Must be a valid email address.'
example: ''
required: false
schema:
type: string
description: 'Return only prospects with the selected email. Empty for all prospects . Must be a valid email address.'
example: ''
-
in: query
name: mobile_phone
description: 'Return only prospects with the selected phone number. Phone format is 12223334444.'
example: ''
required: false
schema:
type: string
description: 'Return only prospects with the selected phone number. Phone format is 12223334444.'
example: ''
-
in: query
name: opted_out_emails
description: '`true` will return prospects opted out from email communications. `false` will show prospects that have not opted out. Do not pass the filter to show all.'
example: true
required: false
schema:
type: boolean
description: '`true` will return prospects opted out from email communications. `false` will show prospects that have not opted out. Do not pass the filter to show all.'
example: true
-
in: query
name: opted_out_sms
description: '`true` will return prospects opted out from SMS communications. `false` will show prospects that have not opted out. Do not pass the filter to show all.'
example: true
required: false
schema:
type: boolean
description: '`true` will return prospects opted out from SMS communications. `false` will show prospects that have not opted out. Do not pass the filter to show all.'
example: true
-
in: query
name: tags
description: 'Filter prospects by assigned tag(s). Array.'
example:
- signed-up
required: false
schema:
type: array
description: 'Filter prospects by assigned tag(s). Array.'
example:
- signed-up
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: lead-rosario67@hotmail.com
profile_url: 'https://loopspark.com/go/client/117/lead-rosario67@hotmail.com'
email: rosario67@hotmail.com
first_name: Kayden
last_name: Robel
mobile_phone: '13572103900'
creation_date: '2021-02-03T11:32:02+00:00'
referred_by: null
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
-
id: lead-bryana.conn@hotmail.com
profile_url: 'https://loopspark.com/go/client/3553/lead-bryana.conn@hotmail.com'
email: bryana.conn@hotmail.com
first_name: Grover
last_name: Oberbrunner
mobile_phone: '13577302692'
creation_date: '1971-12-10T19:07:33+00:00'
referred_by: null
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
properties:
data:
type: array
example:
-
id: lead-rosario67@hotmail.com
profile_url: 'https://loopspark.com/go/client/117/lead-rosario67@hotmail.com'
email: rosario67@hotmail.com
first_name: Kayden
last_name: Robel
mobile_phone: '13572103900'
creation_date: '2021-02-03T11:32:02+00:00'
referred_by: null
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
tags:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
-
id: lead-bryana.conn@hotmail.com
profile_url: 'https://loopspark.com/go/client/3553/lead-bryana.conn@hotmail.com'
email: bryana.conn@hotmail.com
first_name: Grover
last_name: Oberbrunner
mobile_phone: '13577302692'
creation_date: '1971-12-10T19:07:33+00:00'
referred_by: null
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
tags:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
items:
type: object
properties:
id:
type: string
example: lead-rosario67@hotmail.com
profile_url:
type: string
example: 'https://loopspark.com/go/client/117/lead-rosario67@hotmail.com'
email:
type: string
example: rosario67@hotmail.com
nullable: true
first_name:
type: string
example: Kayden
nullable: true
last_name:
type: string
example: Robel
nullable: true
mobile_phone:
type: string
example: '13572103900'
nullable: true
creation_date:
type: string
example: '2021-02-03T11:32:02+00:00'
nullable: true
referred_by:
type: string
example: null
nullable: true
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
tags:
- Prospect
post:
summary: 'Add a Prospect'
operationId: addAProspect
description: 'Adds a Prospect to the specified Studio.'
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: lead-info@loopspark.com
email: info@loopspark.com
first_name: Luca
last_name: Critelli
mobile_phone: null
creation_date: '2020-01-29T11:55:09+00:00'
tags:
-
name: signed-up
assigned_at: '2020-01-29T11:55:09+00:00'
-
name: awesome-client
assigned_at: '2020-01-29T11:55:09+00:00'
properties:
data:
type: object
properties:
id:
type: string
example: lead-info@loopspark.com
email:
type: string
example: info@loopspark.com
nullable: true
first_name:
type: string
example: Luca
nullable: true
last_name:
type: string
example: Critelli
nullable: true
mobile_phone:
type: string
example: null
nullable: true
creation_date:
type: string
example: '2020-01-29T11:55:09+00:00'
nullable: true
tags:
type: array
example:
- name: signed-up
assigned_at: '2020-01-29T11:55:09+00:00'
- name: awesome-client
assigned_at: '2020-01-29T11:55:09+00:00'
items:
type: object
properties:
name:
type: string
example: signed-up
assigned_at:
type: string
example: '2020-01-29T11:55:09+00:00'
nullable: true
400:
description: ''
content:
application/json:
schema:
type: object
example:
error: true
message: 'The Prospect already exists'
properties:
error:
type: boolean
example: true
message:
type: string
example: 'The Prospect already exists'
tags:
- Prospect
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
email:
type: string
description: 'Must be a valid email address.'
example: gbailey@example.net
mobile_phone:
type: string
description: ''
example: null
first_name:
type: string
description: 'Must be at least 0 characters.'
example: miyvdljnikhwaykcmyuwpwlvqwr
last_name:
type: string
description: 'Must be at least 0 characters.'
example: sitcpscqldzsnrwtujwvlxjklqp
referred_by:
type: string
description: ''
example: architecto
nullable: true
tags:
type: array
description: 'Must be at least 1 character.'
example:
- ngzmiyvdljnikhwa
items:
type: string
referrer:
type: object
description: ''
example: null
properties:
first_name:
type: string
description: ''
example: architecto
nullable: true
last_name:
type: string
description: ''
example: architecto
nullable: true
email:
type: string
description: 'Must be a valid email address.'
example: zbailey@example.net
nullable: true
phone:
type: string
description: ''
example: architecto
nullable: true
location:
type: string
description: ''
example: architecto
nullable: true
required:
- email
parameters:
-
in: path
name: siteId
description: 'The ID of the Studio'
example: '123'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/prospects/{email}':
get:
summary: 'Get a prospect'
operationId: getAProspect
description: 'Returns the information about a specific prospect'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: lead-mhamill@marvin.net
profile_url: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net'
email: mhamill@marvin.net
first_name: Rhett
last_name: Kuhn
mobile_phone: '13573900260'
creation_date: '1996-08-19T01:34:47+00:00'
referred_by: null
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
properties:
data:
type: object
properties:
id:
type: string
example: lead-mhamill@marvin.net
profile_url:
type: string
example: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net'
email:
type: string
example: mhamill@marvin.net
nullable: true
first_name:
type: string
example: Rhett
nullable: true
last_name:
type: string
example: Kuhn
nullable: true
mobile_phone:
type: string
example: '13573900260'
nullable: true
creation_date:
type: string
example: '1996-08-19T01:34:47+00:00'
nullable: true
referred_by:
type: string
example: null
nullable: true
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
tags:
- Prospect
put:
summary: 'Update a Prospect'
operationId: updateAProspect
description: 'Updates the information of a Prospect'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: lead-rosario67@hotmail.com
profile_url: 'https://loopspark.com/go/client/117/lead-rosario67@hotmail.com'
email: rosario67@hotmail.com
first_name: Kayden
last_name: Robel
mobile_phone: '13572103900'
creation_date: '2021-02-03T11:32:02+00:00'
referred_by: null
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
properties:
data:
type: object
properties:
id:
type: string
example: lead-rosario67@hotmail.com
profile_url:
type: string
example: 'https://loopspark.com/go/client/117/lead-rosario67@hotmail.com'
email:
type: string
example: rosario67@hotmail.com
nullable: true
first_name:
type: string
example: Kayden
nullable: true
last_name:
type: string
example: Robel
nullable: true
mobile_phone:
type: string
example: '13572103900'
nullable: true
creation_date:
type: string
example: '2021-02-03T11:32:02+00:00'
nullable: true
referred_by:
type: string
example: null
nullable: true
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
422:
description: 'Trying to SMS opt in a prospect that manually opted out'
content:
application/json:
schema:
type: object
example:
error: true
message: 'The prospect cannot be opted-in to SMS because they sent the opt-out text'
properties:
error:
type: boolean
example: true
message:
type: string
example: 'The prospect cannot be opted-in to SMS because they sent the opt-out text'
tags:
- Prospect
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
subscribed_email:
type: boolean
description: 'Unsubscribes an entity from email communications if false. Subscribes if true.'
example: false
subscribed_sms:
type: boolean
description: 'Unsubscribes an entity from SMS communications if false. Subscribes if true.'
example: false
period_count:
type: number
description: 'Manually set the period count for this entity. Must be at least 0.'
example: 27
club_count:
type: number
description: 'Manually set the club count for this entity (requires manual_club_count to be enabled for the studio). Must be at least 0.'
example: 5.0
referrer:
type: object
description: 'Object containing referrer information with optional properties: first_name, last_name, email, phone, location.'
example:
first_name: John
last_name: Doe
email: john.doe@example.com
phone: 555-123-4567
location: 'New York'
properties:
first_name:
type: string
description: ''
example: John
nullable: true
last_name:
type: string
description: ''
example: Doe
nullable: true
email:
type: string
description: 'Must be a valid email address.'
example: john.doe@example.com
nullable: true
phone:
type: string
description: ''
example: 555-123-4567
nullable: true
location:
type: string
description: ''
example: 'New York'
nullable: true
parameters:
-
in: path
name: siteId
description: 'The studio ID.'
example: '21225'
required: true
schema:
type: string
-
in: path
name: email
description: 'The prospect email.'
example: jack@bauer.com
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/prospects/{email}/tags':
post:
summary: 'Add a Tag'
operationId: addATag
description: 'Assigns a Tag to a specific Prospect'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: lead-mhamill@marvin.net
profile_url: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net'
email: mhamill@marvin.net
first_name: Rhett
last_name: Kuhn
mobile_phone: '13573900260'
creation_date: '1996-08-19T01:34:47+00:00'
referred_by: null
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
properties:
data:
type: object
properties:
id:
type: string
example: lead-mhamill@marvin.net
profile_url:
type: string
example: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net'
email:
type: string
example: mhamill@marvin.net
nullable: true
first_name:
type: string
example: Rhett
nullable: true
last_name:
type: string
example: Kuhn
nullable: true
mobile_phone:
type: string
example: '13573900260'
nullable: true
creation_date:
type: string
example: '1996-08-19T01:34:47+00:00'
nullable: true
referred_by:
type: string
example: null
nullable: true
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
tags:
- Prospect
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
tag:
type: string
description: 'The tag. Must be at least 1 character.'
example: Member
required:
- tag
delete:
summary: 'Remove a Tag'
operationId: removeATag
description: "Removes a Tag from a specific Prospect.\nIf the Prospect does not have the Tag assigned, it will return an error `400`"
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: lead-mhamill@marvin.net
profile_url: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net'
email: mhamill@marvin.net
first_name: Rhett
last_name: Kuhn
mobile_phone: '13573900260'
creation_date: '1996-08-19T01:34:47+00:00'
referred_by: null
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
properties:
data:
type: object
properties:
id:
type: string
example: lead-mhamill@marvin.net
profile_url:
type: string
example: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net'
email:
type: string
example: mhamill@marvin.net
nullable: true
first_name:
type: string
example: Rhett
nullable: true
last_name:
type: string
example: Kuhn
nullable: true
mobile_phone:
type: string
example: '13573900260'
nullable: true
creation_date:
type: string
example: '1996-08-19T01:34:47+00:00'
nullable: true
referred_by:
type: string
example: null
nullable: true
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
400:
description: ''
content:
application/json:
schema:
type: object
example:
error: true
message: 'The prospect does not have the tag signed-up'
properties:
error:
type: boolean
example: true
message:
type: string
example: 'The prospect does not have the tag signed-up'
tags:
- Prospect
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
tag:
type: string
description: 'The tag. Must be at least 1 character.'
example: signed-up-flow
required:
- tag
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
-
in: path
name: email
description: 'The email of the Prospect'
example: test@email.com
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/prospects/{email}/custom-fields':
get:
summary: 'Get Prospect Custom Fields'
operationId: getProspectCustomFields
description: "Retrieve all custom field values for a specific prospect.\nReturns field definition along with current value."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: EMERGENCY_CONTACT
value: 'Jane Doe - 555-1234'
properties:
data:
type: array
example:
- id: EMERGENCY_CONTACT
value: 'Jane Doe - 555-1234'
items:
type: object
properties:
id:
type: string
example: EMERGENCY_CONTACT
value:
type: string
example: 'Jane Doe - 555-1234'
tags:
- Prospect
post:
summary: 'Update Prospect Custom Fields'
operationId: updateProspectCustomFields
description: "Batch update custom field values for a specific prospect.\nCan update multiple fields in a single request."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: EMERGENCY_CONTACT
value: 'Jane Doe - 555-5678'
properties:
data:
type: array
example:
- id: EMERGENCY_CONTACT
value: 'Jane Doe - 555-5678'
items:
type: object
properties:
id:
type: string
example: EMERGENCY_CONTACT
value:
type: string
example: 'Jane Doe - 555-5678'
tags:
- Prospect
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fields:
type: array
description: 'Array of field updates. Must have at least 1 items.'
example:
- id: EMERGENCY_CONTACT
value: 'John Doe - 555-1234'
- id: THREE_CS
value: challenge
items:
type: object
properties:
'*':
type: object
description: ''
example:
id: architecto
properties:
id:
type: string
description: 'The custom field ID (e.g., "EMERGENCY_CONTACT")'
example: architecto
value:
type: string
description: 'nullable The field value'
example: architecto
required:
- id
id:
type: string
description: 'The custom field ID/slug (e.g., "EMERGENCY_CONTACT", "THREE_CS"). Must match an existing stored value.'
example: EMERGENCY_CONTACT
value:
type: string
description: 'The value to set. Use null to clear the field. Type depends on field definition (string, boolean, date, etc.).'
example: 'John Doe - 555-1234'
nullable: true
required:
- id
required:
- fields
parameters:
-
in: path
name: siteId
description: "The studio's site identifier (e.g., MindBody site ID)."
example: '100001'
required: true
schema:
type: string
-
in: path
name: email
description: "The prospect's email address."
example: john.doe@example.com
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/prospects/{email}/notes':
post:
summary: 'Create a Note'
operationId: createANote
description: "Adds a note to a Prospect, found by email (not case-sensitive), dated now. The note is plain text: HTML is shown as text, and line breaks are kept.\nTo categorize it, send the `id` of one of the studio's active note categories (see \"List Note Categories\").\nEach call creates a new note, so do not retry a request that already succeeded.\nThe note has no staff author; LoopSpark shows its author as \"Integration\"."
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90
note: '
Called about the 6-week challenge.
' note_category_id: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: '2026-09-28T14:05:00+00:00' properties: data: type: object properties: id: type: string example: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 note: type: string example: 'Called about the 6-week challenge.
' note_category_id: type: string example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 nullable: true created_at: type: string example: '2026-09-28T14:05:00+00:00' nullable: true 422: description: '' content: application/json: schema: type: object example: message: 'The note category is not available for this studio.' errors: note_category_id: - 'The note category is not available for this studio.' properties: message: type: string example: 'The note category is not available for this studio.' errors: type: object properties: note_category_id: type: array example: - 'The note category is not available for this studio.' items: type: string tags: - Prospect requestBody: required: true content: application/json: schema: type: object properties: note: type: string description: 'The note text, at least 2 characters. Plain text; line breaks are kept.' example: 'Called about the 6-week challenge.' note_category_id: type: string description: "Optional. The id of one of the studio's active note categories." example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 nullable: true required: - note parameters: - in: path name: siteId description: 'The studio ID.' example: '21225' required: true schema: type: string - in: path name: email description: 'The prospect email. Not case-sensitive.' example: jack@bauer.com required: true schema: type: string '/api/franchise/v1/{siteId}/prospects/{email}/messages': post: summary: 'Send a Text Message' operationId: sendATextMessage description: "Sends one SMS to a Prospect, found by email (not case-sensitive), from the studio's texting number, in the same conversation thread staff use in LoopSpark.\nPlaceholders are filled in as in LoopSpark: write the name in double curly braces, for example FIRST_NAME. The message can be at most 3 SMS segments long, counted before placeholders are filled in.\nOpt-outs (STOP) and the usual opt-out notice work exactly as for a staff send, and the text counts against the studio's SMS bundle.\nA `201` means the text was queued; delivery happens asynchronously. Each call sends a new text, so do not retry a request that already succeeded.\nThe text has no staff sender; the LoopSpark web app shows its sender as \"Integration\".\nReturns `422` when the person is muted, has opted out of texts, or has no valid mobile number, or when the text is empty once placeholders are filled in.\nReturns `403` when the studio is suspended." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 discussion_id: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: '2026-10-02T14:05:00+00:00' properties: data: type: object properties: id: type: string example: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 discussion_id: type: string example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: type: string example: '2026-10-02T14:05:00+00:00' nullable: true 422: description: '' content: application/json: schema: type: object example: message: 'This client cannot be contacted by text message' errors: message: - 'This client cannot be contacted by text message' properties: message: type: string example: 'This client cannot be contacted by text message' errors: type: object properties: message: type: array example: - 'This client cannot be contacted by text message' items: type: string tags: - Prospect requestBody: required: true content: application/json: schema: type: object properties: message: type: string description: 'The text to send, at most 3 SMS segments before placeholders are filled in. Placeholders (a name such as FIRST_NAME in double curly braces) are filled in.' example: 'Hi there, see you at the 6pm class!' required: - message parameters: - in: path name: siteId description: 'The studio ID.' example: '21225' required: true schema: type: string - in: path name: email description: 'The prospect email. Not case-sensitive.' example: jack@bauer.com required: true schema: type: string '/api/franchise/v1/{siteId}/unsubscribe_clients': post: summary: 'Add (un)subscribe rule' operationId: addunsubscribeRule description: "Add one or multiple (un)subscribe rules for a specific Studio.\nIf an Unsubscribe Rule is already present for the specified client ID, it will be updated." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - client_id: '681' unsubscribe: true type: sms valid_since: '2026-10-03T08:00:36+00:00' - client_id: '369' unsubscribe: true type: sms valid_since: '2026-10-03T08:00:36+00:00' properties: data: type: array example: - client_id: '681' unsubscribe: true type: sms valid_since: '2026-10-03T08:00:36+00:00' - client_id: '369' unsubscribe: true type: sms valid_since: '2026-10-03T08:00:36+00:00' items: type: object properties: client_id: type: string example: '681' unsubscribe: type: boolean example: true type: type: string example: sms valid_since: type: string example: '2026-10-03T08:00:36+00:00' tags: - 'Unsubscribe Rules' requestBody: required: false content: application/json: schema: type: object properties: clients: type: array description: '' example: - [] items: type: object properties: id: type: string description: 'The MBO UniqueID of the client, or the `ID` of a Prospect.' example: '1000017' unsubscribe: type: boolean description: 'Whether or not the client is (or will be) unsubscribed from the specified type.' example: true type: type: string description: 'Describes which type of (un)subscription this rule is about.' example: email enum: - sms - email required: - id - unsubscribe - type parameters: - in: path name: siteId description: 'The studio ID' example: '21225' required: true schema: type: string '/api/franchise/v1/{siteId}/unsubscribe_clients/{uniqueid}': delete: summary: 'Remove unsubscribe rule' operationId: removeUnsubscribeRule description: 'Removes any unsubscribe rule for a specific Client' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: error: false deleted: true success: true properties: error: type: boolean example: false deleted: type: boolean example: true success: type: boolean example: true 400: description: '' content: application/json: schema: type: object example: error: true message: 'No rule was found with that unique id and type combination' properties: error: type: boolean example: true message: type: string example: 'No rule was found with that unique id and type combination' tags: - 'Unsubscribe Rules' requestBody: required: true content: application/json: schema: type: object properties: type: type: string description: 'Describes which type of (un)subscription to delete.' example: email enum: - sms - email required: - type parameters: - in: path name: siteId description: 'The studio ID' example: '21225' required: true schema: type: string - in: path name: uniqueid description: 'The MBO UniqueID of the Client, or the `ID` of a Prospect' example: '10000012' required: true schema: type: string '/api/franchise/v1/{siteId}/groups': get: summary: 'List Groups of a Studio' operationId: listGroupsOfAStudio description: 'List the Groups of a Studio and the respective Staff members' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 name: foobar staff: - name: 'Dr. Zane Roberts Sr.' email: foo@current.com phone: null - name: "Kendrick O'Kon" email: stehr.ciara@example.com phone: null - id: 2 name: frontdesk staff: - name: 'Miss Megane Feeney' email: myriam99@example.net phone: null - name: 'Benedict Medhurst' email: cassin.adrianna@example.net phone: null - name: 'Roderick Lebsack' email: gabriella.bogisich@example.net phone: null - name: 'Okey Grady' email: tpagac@example.org phone: null properties: data: type: array example: - id: 1 name: foobar staff: - name: 'Dr. Zane Roberts Sr.' email: foo@current.com phone: null - name: "Kendrick O'Kon" email: stehr.ciara@example.com phone: null - id: 2 name: frontdesk staff: - name: 'Miss Megane Feeney' email: myriam99@example.net phone: null - name: 'Benedict Medhurst' email: cassin.adrianna@example.net phone: null - name: 'Roderick Lebsack' email: gabriella.bogisich@example.net phone: null - name: 'Okey Grady' email: tpagac@example.org phone: null items: type: object properties: id: type: integer example: 1 name: type: string example: foobar staff: type: array example: - name: 'Dr. Zane Roberts Sr.' email: foo@current.com phone: null - name: "Kendrick O'Kon" email: stehr.ciara@example.com phone: null items: type: object properties: name: type: string example: 'Dr. Zane Roberts Sr.' email: type: string example: foo@current.com phone: type: string example: null nullable: true tags: - Groups post: summary: 'Create a Group' operationId: createAGroup description: 'Use this endpoint to create a Group. If the Group is already present, the passed Staff will be added to the Group.' parameters: [] responses: 201: description: 'Successfully created' content: application/json: schema: type: object example: data: id: 14 name: frontdesk staff: - name: 'Jane Doe' email: frontdesk@studio.com phone: null - name: 'Jack Bauer' email: jack@bauer.com phone: null properties: data: type: object properties: id: type: integer example: 14 name: type: string example: frontdesk staff: type: array example: - name: 'Jane Doe' email: frontdesk@studio.com phone: null - name: 'Jack Bauer' email: jack@bauer.com phone: null items: type: object properties: name: type: string example: 'Jane Doe' email: type: string example: frontdesk@studio.com phone: type: string example: null nullable: true 422: description: 'Staff is not part of the Studio' content: application/json: schema: type: object example: message: 'The given data was invalid.' errors: staff.1: - 'Staff member does not exist' properties: message: type: string example: 'The given data was invalid.' errors: type: object properties: staff.1: type: array example: - 'Staff member does not exist' items: type: string tags: - Groups requestBody: required: true content: application/json: schema: type: object properties: group_name: type: string description: 'The name of the Group. Must be at least 3 characters. Must not be greater than 50 characters.' example: frontdesk staff: type: array description: 'Must be a valid email address.' example: - gbailey@example.net items: type: string required: - group_name - staff patch: summary: 'Update Group Members' operationId: updateGroupMembers description: 'Use this endpoint to update the Staff members assigned to a specific Group. This will detach any other Staff from the Group, and assign only the ones specified in the `staff` array' parameters: [] responses: 201: description: 'Successfully updated' content: application/json: schema: type: object example: data: id: 14 name: frontdesk staff: - name: 'Jane Doe' email: frontdesk@studio.com phone: null - name: 'Jack Bauer' email: jack@bauer.com phone: null properties: data: type: object properties: id: type: integer example: 14 name: type: string example: frontdesk staff: type: array example: - name: 'Jane Doe' email: frontdesk@studio.com phone: null - name: 'Jack Bauer' email: jack@bauer.com phone: null items: type: object properties: name: type: string example: 'Jane Doe' email: type: string example: frontdesk@studio.com phone: type: string example: null nullable: true 422: description: 'Staff is not part of the Studio' content: application/json: schema: type: object example: message: 'The given data was invalid.' errors: staff.1: - 'Staff member does not exist' properties: message: type: string example: 'The given data was invalid.' errors: type: object properties: staff.1: type: array example: - 'Staff member does not exist' items: type: string tags: - Groups requestBody: required: true content: application/json: schema: type: object properties: group_name: type: string description: 'The name of the Group. Must be at least 3 characters. Must not be greater than 50 characters.' example: frontdesk staff: type: array description: 'Must be a valid email address.' example: - gbailey@example.net items: type: string required: - group_name - staff parameters: - in: path name: siteId description: 'The studio ID' example: '21225' required: true schema: type: string /api/franchise/v1/studios: get: summary: 'Studio list' operationId: studioList description: 'Retrieve the list of all the studios available. The results are paginated' parameters: - in: query name: per_page description: 'The amount of studios to return. Max: `250`. Default: `250`. Must be at least 1. Must not be greater than 250.' example: 10.0 required: false schema: type: number description: 'The amount of studios to return. Max: `250`. Default: `250`. Must be at least 1. Must not be greater than 250.' example: 10.0 - in: query name: sort_by description: 'Sorts the results by either `id` or `creation_date`. Default: `id`.' example: id required: false schema: type: string description: 'Sorts the results by either `id` or `creation_date`. Default: `id`.' example: id enum: - creation_date - id - in: query name: sort_direction description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.' example: asc required: false schema: type: string description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.' example: asc enum: - asc - desc responses: 200: description: '' content: application/json: schema: type: object example: data: - id: '739' name: "Dr. Courtney D'Amore II" api_set: true phone_number: null timezone: UTC website: 'http://www.mosciski.com/dolorem-expedita-vero-natus-laudantium-delectus-sunt-neque' creation_date: '2026-10-03T08:00:35+00:00' start_date: null first_import_done: true is_template: false outgoing_settings: email: signature: alias sender: xokuneva@eichmann.com sender_name: 'Aracely Yost' phone: sender_name: '10912332112' phone_forward: null address: "78972 Floyd Row\nSouth Fayetown, OR 63567-4075" social: facebook_url: null instagram_handle: null twitter_handle: null urls: list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=41' list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=40' book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=-7' variables: packages: - package_1: url: null price: null name: null discount_code: null discount_price: null - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null contracts: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null period_count: type: ALL_TIME day: 0 manual_club_count: false - id: '5718' name: 'Violet Kub' api_set: true phone_number: null timezone: UTC website: 'http://kozey.com/' creation_date: '2026-10-03T08:00:35+00:00' start_date: null first_import_done: true is_template: false outgoing_settings: email: signature: rerum sender: emarvin@yahoo.com sender_name: 'Gaetano Altenwerth' phone: sender_name: '13506254432' phone_forward: null address: "37248 Wuckert View\nWest Francisco, NC 09772-5660" social: facebook_url: null instagram_handle: null twitter_handle: null urls: list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=5718&stype=41' list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=5718&stype=40' book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=5718&stype=-7' variables: packages: - package_1: url: null price: null name: null discount_code: null discount_price: null - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null contracts: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null period_count: type: ALL_TIME day: 0 manual_club_count: false properties: data: type: array example: - id: '739' name: "Dr. Courtney D'Amore II" api_set: true phone_number: null timezone: UTC website: 'http://www.mosciski.com/dolorem-expedita-vero-natus-laudantium-delectus-sunt-neque' creation_date: '2026-10-03T08:00:35+00:00' start_date: null first_import_done: true is_template: false outgoing_settings: email: signature: alias sender: xokuneva@eichmann.com sender_name: 'Aracely Yost' phone: sender_name: '10912332112' phone_forward: null address: "78972 Floyd Row\nSouth Fayetown, OR 63567-4075" social: facebook_url: null instagram_handle: null twitter_handle: null urls: list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=41' list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=40' book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=-7' variables: packages: - package_1: url: null price: null name: null discount_code: null discount_price: null - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null contracts: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null period_count: type: ALL_TIME day: 0 manual_club_count: false - id: '5718' name: 'Violet Kub' api_set: true phone_number: null timezone: UTC website: 'http://kozey.com/' creation_date: '2026-10-03T08:00:35+00:00' start_date: null first_import_done: true is_template: false outgoing_settings: email: signature: rerum sender: emarvin@yahoo.com sender_name: 'Gaetano Altenwerth' phone: sender_name: '13506254432' phone_forward: null address: "37248 Wuckert View\nWest Francisco, NC 09772-5660" social: facebook_url: null instagram_handle: null twitter_handle: null urls: list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=5718&stype=41' list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=5718&stype=40' book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=5718&stype=-7' variables: packages: - package_1: url: null price: null name: null discount_code: null discount_price: null - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null contracts: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null period_count: type: ALL_TIME day: 0 manual_club_count: false items: type: object properties: id: type: string example: '739' name: type: string example: "Dr. Courtney D'Amore II" api_set: type: boolean example: true phone_number: type: string example: null nullable: true timezone: type: string example: UTC website: type: string example: 'http://www.mosciski.com/dolorem-expedita-vero-natus-laudantium-delectus-sunt-neque' nullable: true creation_date: type: string example: '2026-10-03T08:00:35+00:00' nullable: true start_date: type: string example: null nullable: true first_import_done: type: boolean example: true is_template: type: boolean example: false outgoing_settings: type: object properties: email: type: object properties: signature: type: string example: alias nullable: true sender: type: string example: xokuneva@eichmann.com nullable: true sender_name: type: string example: 'Aracely Yost' nullable: true phone: type: object properties: sender_name: type: string example: '10912332112' nullable: true phone_forward: type: string example: null nullable: true address: type: string example: "78972 Floyd Row\nSouth Fayetown, OR 63567-4075" nullable: true social: type: object properties: facebook_url: type: string example: null nullable: true instagram_handle: type: string example: null nullable: true twitter_handle: type: string example: null nullable: true urls: type: object properties: list_packages_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=41' nullable: true list_contracts_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=40' nullable: true book_class_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=739&stype=-7' nullable: true variables: type: object properties: packages: type: array example: - package_1: url: null price: null name: null discount_code: null discount_price: null - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null items: type: object properties: package_1: type: object properties: url: { type: string, example: null, nullable: true } price: { type: string, example: null, nullable: true } name: { type: string, example: null, nullable: true } discount_code: { type: string, example: null, nullable: true } discount_price: { type: string, example: null, nullable: true } contracts: type: array example: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null items: type: object properties: contract_1: type: object properties: url: { type: string, example: null, nullable: true } price: { type: string, example: null, nullable: true } name: { type: string, example: null, nullable: true } discount_code: { type: string, example: null, nullable: true } discount_price: { type: string, example: null, nullable: true } period_count: type: object properties: type: type: string example: ALL_TIME day: type: integer example: 0 nullable: true manual_club_count: type: boolean example: false tags: - Studio '/api/franchise/v1/studios/{siteId}': get: summary: 'Get a Studio' operationId: getAStudio description: "Shows the details of a specific studio. It shows also a list of the staff members assigned\nto this Studio and their respective role" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: foobar name: 'My Yoga Studio' phone_number: '12225551234' api_set: true website: 'https://mystudioisgreat.com/landing' timezone: UTC start_date: '2020-09-30' creation_date: '2018-02-22T13:00:00+00:00' first_import_done: true outgoing_settings: email: signature: et sender: umonahan@hotmail.com sender_name: 'Prof. Nels Quitzon' phone: sender_name: '16273854741' phone_forward: '12125558888' address: '4800 Oak Grove Dr, Pasadena, CA 91109' social: facebook_url: null instagram_handle: null twitter_handle: null urls: list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40' book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7' variables: packages: - package_1: url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' price: $10 name: 'Great Package' discount_code: CouponName discount_price: '20 dollars' - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null contracts: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null staff: - name: 'Krystal Harvey' email: alexandrea87@example.com role: owner groups: - id: 1 name: front-desk staff: - name: 'Katarina Funk' email: john42@example.com phone: null - id: 2 name: teachers staff: [] properties: data: type: object properties: id: type: string example: foobar name: type: string example: 'My Yoga Studio' phone_number: type: string example: '12225551234' nullable: true api_set: type: boolean example: true website: type: string example: 'https://mystudioisgreat.com/landing' nullable: true timezone: type: string example: UTC start_date: type: string example: '2020-09-30' nullable: true creation_date: type: string example: '2018-02-22T13:00:00+00:00' nullable: true first_import_done: type: boolean example: true outgoing_settings: type: object properties: email: type: object properties: signature: type: string example: et nullable: true sender: type: string example: umonahan@hotmail.com nullable: true sender_name: type: string example: 'Prof. Nels Quitzon' nullable: true phone: type: object properties: sender_name: type: string example: '16273854741' nullable: true phone_forward: type: string example: '12125558888' nullable: true address: type: string example: '4800 Oak Grove Dr, Pasadena, CA 91109' nullable: true social: type: object properties: facebook_url: type: string example: null nullable: true instagram_handle: type: string example: null nullable: true twitter_handle: type: string example: null nullable: true urls: type: object properties: list_packages_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' nullable: true list_contracts_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40' nullable: true book_class_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7' nullable: true variables: type: object properties: packages: type: array example: - package_1: url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' price: $10 name: 'Great Package' discount_code: CouponName discount_price: '20 dollars' - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null items: type: object properties: package_1: type: object properties: url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' nullable: true price: type: string example: $10 nullable: true name: type: string example: 'Great Package' nullable: true discount_code: type: string example: CouponName nullable: true discount_price: type: string example: '20 dollars' nullable: true contracts: type: array example: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null items: type: object properties: contract_1: type: object properties: url: type: string example: null nullable: true price: type: string example: null nullable: true name: type: string example: null nullable: true discount_code: type: string example: null nullable: true discount_price: type: string example: null nullable: true staff: type: array example: - name: 'Krystal Harvey' email: alexandrea87@example.com role: owner items: type: object properties: name: type: string example: 'Krystal Harvey' email: type: string example: alexandrea87@example.com role: type: string example: owner groups: type: array example: - id: 1 name: front-desk staff: - name: 'Katarina Funk' email: john42@example.com phone: null - id: 2 name: teachers staff: [] items: type: object properties: id: type: integer example: 1 name: type: string example: front-desk staff: type: array example: - name: 'Katarina Funk' email: john42@example.com phone: null items: type: object properties: name: type: string example: 'Katarina Funk' email: type: string example: john42@example.com phone: type: string example: null nullable: true tags: - Studio put: summary: 'Update a Studio' operationId: updateAStudio description: 'Update a specific studio information' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: foobar name: 'My Yoga Studio' phone_number: '12225551234' api_set: true website: 'https://mystudioisgreat.com/landing' timezone: UTC start_date: '2020-09-30' creation_date: '2018-02-22T13:00:00+00:00' first_import_done: true outgoing_settings: email: signature: et sender: umonahan@hotmail.com sender_name: 'Prof. Nels Quitzon' phone: sender_name: '16273854741' phone_forward: '12125558888' address: '4800 Oak Grove Dr, Pasadena, CA 91109' social: facebook_url: null instagram_handle: null twitter_handle: null urls: list_packages_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' list_contracts_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40' book_class_url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7' variables: packages: - package_1: url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' price: $10 name: 'Great Package' discount_code: CouponName discount_price: '20 dollars' - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null contracts: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null staff: - name: 'Krystal Harvey' email: alexandrea87@example.com role: owner groups: - id: 1 name: front-desk staff: - name: 'Katarina Funk' email: john42@example.com phone: null - id: 2 name: teachers staff: [] properties: data: type: object properties: id: type: string example: foobar name: type: string example: 'My Yoga Studio' phone_number: type: string example: '12225551234' nullable: true api_set: type: boolean example: true website: type: string example: 'https://mystudioisgreat.com/landing' nullable: true timezone: type: string example: UTC start_date: type: string example: '2020-09-30' nullable: true creation_date: type: string example: '2018-02-22T13:00:00+00:00' nullable: true first_import_done: type: boolean example: true outgoing_settings: type: object properties: email: type: object properties: signature: type: string example: et nullable: true sender: type: string example: umonahan@hotmail.com nullable: true sender_name: type: string example: 'Prof. Nels Quitzon' nullable: true phone: type: object properties: sender_name: type: string example: '16273854741' nullable: true phone_forward: type: string example: '12125558888' nullable: true address: type: string example: '4800 Oak Grove Dr, Pasadena, CA 91109' nullable: true social: type: object properties: facebook_url: type: string example: null nullable: true instagram_handle: type: string example: null nullable: true twitter_handle: type: string example: null nullable: true urls: type: object properties: list_packages_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' nullable: true list_contracts_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=40' nullable: true book_class_url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=-7' nullable: true variables: type: object properties: packages: type: array example: - package_1: url: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' price: $10 name: 'Great Package' discount_code: CouponName discount_price: '20 dollars' - package_2: url: null price: null name: null discount_code: null discount_price: null - package_3: url: null price: null name: null discount_code: null discount_price: null - package_4: url: null price: null name: null discount_code: null discount_price: null - package_5: url: null price: null name: null discount_code: null discount_price: null items: type: object properties: package_1: type: object properties: url: type: string example: 'https://clients.mindbodyonline.com/classic/ws?studioid=foobar&stype=41' nullable: true price: type: string example: $10 nullable: true name: type: string example: 'Great Package' nullable: true discount_code: type: string example: CouponName nullable: true discount_price: type: string example: '20 dollars' nullable: true contracts: type: array example: - contract_1: url: null price: null name: null discount_code: null discount_price: null - contract_2: url: null price: null name: null discount_code: null discount_price: null - contract_3: url: null price: null name: null discount_code: null discount_price: null - contract_4: url: null price: null name: null discount_code: null discount_price: null - contract_5: url: null price: null name: null discount_code: null discount_price: null items: type: object properties: contract_1: type: object properties: url: type: string example: null nullable: true price: type: string example: null nullable: true name: type: string example: null nullable: true discount_code: type: string example: null nullable: true discount_price: type: string example: null nullable: true staff: type: array example: - name: 'Krystal Harvey' email: alexandrea87@example.com role: owner items: type: object properties: name: type: string example: 'Krystal Harvey' email: type: string example: alexandrea87@example.com role: type: string example: owner groups: type: array example: - id: 1 name: front-desk staff: - name: 'Katarina Funk' email: john42@example.com phone: null - id: 2 name: teachers staff: [] items: type: object properties: id: type: integer example: 1 name: type: string example: front-desk staff: type: array example: - name: 'Katarina Funk' email: john42@example.com phone: null items: type: object properties: name: type: string example: 'Katarina Funk' email: type: string example: john42@example.com phone: type: string example: null nullable: true tags: - Studio requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Sets the value of name. Must be at least 1 character.' example: bngzmiyvdljnikhw timezone: type: string description: 'Sets the value of timezone. Valid timezones are available at https://www.php.net/manual/en/timezones.php. Must be a valid time zone, such asAfrica/Accra.'
example: America/Indiana/Tell_City
start_date:
type: string
description: 'Internal date to define when the Studio will open. Used in filters. Must be a valid date.'
example: '2020-09-30'
nullable: true
email_signature:
type: string
description: 'Sets the value of email_signature. Nullable.'
example: architecto
nullable: true
email_sender:
type: string
description: 'Sets the value of email_sender. Must be a valid email address.'
example: zbailey@example.net
email_sender_name:
type: string
description: 'Sets the value of email_sender_name. Nullable. Must be at least 1 character.'
example: iyvdljnikhwaykcm
sms_sender:
type: string
description: 'Sets the value of sms_sender. Must be at least 1 character.'
example: yuwpwlvqwrsitcps
phone_forward:
type: string
description: 'Sets the value of phone_forward. Valid phone numbers are using format `15552221234`.'
example: '15552221234'
facebook_url:
type: string
description: 'Sets the value of facebook_url. Nullable. Must be a valid URL.'
example: 'http://mclaughlin.info/dolores-enim-non-facere-tempora'
nullable: true
instagram_handle:
type: string
description: 'Sets the value of instagram_handle, without the @ symbol. Nullable.'
example: '@loopspark'
nullable: true
twitter_handle:
type: string
description: 'Sets the value of twitter_handle, without the @ symbol. Nullable.'
example: '@loopspark'
nullable: true
list_packages_url:
type: string
description: 'Sets the value of list_packages_url. Must be a valid URL.'
example: 'http://www.leffler.info/quis-adipisci-molestias-fugit-deleniti-distinctio-eum'
nullable: true
list_contracts_url:
type: string
description: 'Sets the value of list_contracts_url. Must be a valid URL.'
example: 'https://nitzsche.net/aliquam-veniam-corporis-dolorem-mollitia-deleniti-nemo.html'
nullable: true
book_class_url:
type: string
description: 'Sets the value of book_class_url. Must be a valid URL.'
example: 'https://www.balistreri.org/dignissimos-neque-blanditiis-odio'
nullable: true
can_create_automations:
type: boolean
description: 'Allow the Studio members to create automations based on their role.'
example: true
manual_club_count:
type: boolean
description: 'When set to true, allows manual updating of club_count for Contacts and Clients.'
example: true
website:
type: string
description: 'The website of the Studio. Nullable. Must be a valid URL.'
example: 'https://bradtke.org/fugit-qui-repudiandae-laboriosam-est-alias.html'
address:
type: string
description: 'The address of the Studio. It will be used in the merge-tag @{{STUDIO_ADDRESS}}. Nullable.'
example: null
nullable: true
period_count_type:
type: string
description: 'Sets the period count calculation type. Valid options are ALL_TIME, DAY_OF_YEAR, API.'
example: API
enum:
- ALL_TIME
- DAY_OF_YEAR
- API
period_count_day:
type: number
description: 'Days since January 1st for the calculation of period count when using DAY_OF_YEAR. January 1st is day 1. This field is required when period_count_type is DAY_OF_YEAR. Must be at least 1. Must not be greater than 365.'
example: 1.0
nullable: true
package_1_url:
type: string
description: 'Must be a valid URL.'
example: 'http://howe.com/accusamus-ut-et-recusandae.html'
nullable: true
package_1_price:
type: string
description: ''
example: architecto
nullable: true
package_1_name:
type: string
description: ''
example: architecto
nullable: true
package_1_discount_code:
type: string
description: ''
example: architecto
nullable: true
package_1_discount_price:
type: string
description: ''
example: architecto
nullable: true
package_2_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
package_2_price:
type: string
description: ''
example: architecto
nullable: true
package_2_name:
type: string
description: ''
example: architecto
nullable: true
package_2_discount_code:
type: string
description: ''
example: architecto
nullable: true
package_2_discount_price:
type: string
description: ''
example: architecto
nullable: true
package_3_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
package_3_price:
type: string
description: ''
example: architecto
nullable: true
package_3_name:
type: string
description: ''
example: architecto
nullable: true
package_3_discount_code:
type: string
description: ''
example: architecto
nullable: true
package_3_discount_price:
type: string
description: ''
example: architecto
nullable: true
package_4_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
package_4_price:
type: string
description: ''
example: architecto
nullable: true
package_4_name:
type: string
description: ''
example: architecto
nullable: true
package_4_discount_code:
type: string
description: ''
example: architecto
nullable: true
package_4_discount_price:
type: string
description: ''
example: architecto
nullable: true
package_5_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
package_5_price:
type: string
description: ''
example: architecto
nullable: true
package_5_name:
type: string
description: ''
example: architecto
nullable: true
package_5_discount_code:
type: string
description: ''
example: architecto
nullable: true
package_5_discount_price:
type: string
description: ''
example: architecto
nullable: true
contract_1_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
contract_1_price:
type: string
description: ''
example: architecto
nullable: true
contract_1_name:
type: string
description: ''
example: architecto
nullable: true
contract_1_discount_code:
type: string
description: ''
example: architecto
nullable: true
contract_1_discount_price:
type: string
description: ''
example: architecto
nullable: true
contract_2_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
contract_2_price:
type: string
description: ''
example: architecto
nullable: true
contract_2_name:
type: string
description: ''
example: architecto
nullable: true
contract_2_discount_code:
type: string
description: ''
example: architecto
nullable: true
contract_2_discount_price:
type: string
description: ''
example: architecto
nullable: true
contract_3_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
contract_3_price:
type: string
description: ''
example: architecto
nullable: true
contract_3_name:
type: string
description: ''
example: architecto
nullable: true
contract_3_discount_code:
type: string
description: ''
example: architecto
nullable: true
contract_3_discount_price:
type: string
description: ''
example: architecto
nullable: true
contract_4_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
contract_4_price:
type: string
description: ''
example: architecto
nullable: true
contract_4_name:
type: string
description: ''
example: architecto
nullable: true
contract_4_discount_code:
type: string
description: ''
example: architecto
nullable: true
contract_4_discount_price:
type: string
description: ''
example: architecto
nullable: true
contract_5_url:
type: string
description: 'Must be a valid URL.'
example: 'http://bailey.com/'
nullable: true
contract_5_price:
type: string
description: ''
example: architecto
nullable: true
contract_5_name:
type: string
description: ''
example: architecto
nullable: true
contract_5_discount_code:
type: string
description: ''
example: architecto
nullable: true
contract_5_discount_price:
type: string
description: ''
example: architecto
nullable: true
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/forms':
get:
summary: 'Forms list'
operationId: formsList
description: 'Retrieve a list of the forms for a specific Studio. The results are paginated'
parameters:
-
in: query
name: per_page
description: 'The amount of forms to return. Max: `250`. Default: `50`. Must be at least 1. Must not be greater than 250.'
example: 10.0
required: false
schema:
type: number
description: 'The amount of forms to return. Max: `250`. Default: `50`. Must be at least 1. Must not be greater than 250.'
example: 10.0
-
in: query
name: sort_by
description: 'Sorts the results by either `id` or `creation_date`. Default: `id`.'
example: id
required: false
schema:
type: string
description: 'Sorts the results by either `id` or `creation_date`. Default: `id`.'
example: id
enum:
- creation_date
- id
-
in: query
name: sort_direction
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
required: false
schema:
type: string
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
enum:
- asc
- desc
-
in: query
name: category
description: 'Return only forms of this specific category. Empty for all forms.'
example: ''
required: false
schema:
type: string
description: 'Return only forms of this specific category. Empty for all forms.'
example: ''
-
in: query
name: include_archived
description: 'Include archived forms in the list. Default: `false`.'
example: false
required: false
schema:
type: boolean
description: 'Include archived forms in the list. Default: `false`.'
example: false
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: 8818a7b7-d58c-4d9a-806d-bd382bb7dd52
name: explicabo
category: non
archived: false
creates_pdf: false
form_url: 'https://lo.ls/IdC1wXm'
send_email_copy_to: null
allows_new_clients: false
thank_you_url: null
-
id: e4bf9b25-8d13-46b2-a66f-aa26aeaf6fae
name: et
category: assumenda
archived: false
creates_pdf: false
form_url: 'https://lo.ls/MQa5UUA'
send_email_copy_to: null
allows_new_clients: false
thank_you_url: null
properties:
data:
type: array
example:
- id: 8818a7b7-d58c-4d9a-806d-bd382bb7dd52
name: explicabo
category: non
archived: false
creates_pdf: false
form_url: 'https://lo.ls/IdC1wXm'
send_email_copy_to: null
allows_new_clients: false
thank_you_url: null
- id: e4bf9b25-8d13-46b2-a66f-aa26aeaf6fae
name: et
category: assumenda
archived: false
creates_pdf: false
form_url: 'https://lo.ls/MQa5UUA'
send_email_copy_to: null
allows_new_clients: false
thank_you_url: null
items:
type: object
properties:
id:
type: string
example: 8818a7b7-d58c-4d9a-806d-bd382bb7dd52
name:
type: string
example: explicabo
category:
type: string
example: non
nullable: true
archived:
type: boolean
example: false
creates_pdf:
type: boolean
example: false
form_url:
type: string
example: 'https://lo.ls/IdC1wXm'
send_email_copy_to:
type: string
example: null
nullable: true
allows_new_clients:
type: boolean
example: false
thank_you_url:
type: string
example: null
nullable: true
tags:
- Forms
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/forms/{formId}':
get:
summary: 'Get a single form'
operationId: getASingleForm
description: 'Returns the information of a specific form'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: c4dece0b-6ac9-4961-9dc2-51fa495788b6
name: aut
category: adipisci
archived: false
creates_pdf: false
form_url: 'https://lo.ls/paorvUv'
send_email_copy_to: null
allows_new_clients: false
thank_you_url: null
properties:
data:
type: object
properties:
id:
type: string
example: c4dece0b-6ac9-4961-9dc2-51fa495788b6
name:
type: string
example: aut
category:
type: string
example: adipisci
nullable: true
archived:
type: boolean
example: false
creates_pdf:
type: boolean
example: false
form_url:
type: string
example: 'https://lo.ls/paorvUv'
send_email_copy_to:
type: string
example: null
nullable: true
allows_new_clients:
type: boolean
example: false
thank_you_url:
type: string
example: null
nullable: true
tags:
- Forms
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
-
in: path
name: formId
description: 'The form ID'
example: 61f48cb0-9b59-4ac5-8a46-c4192a5e750b
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/clients':
get:
summary: 'Client list'
operationId: clientList
description: 'Retrieve a list of clients for a specific Studio. The results are paginated'
parameters:
-
in: query
name: per_page
description: 'The amount of clients to return. Default: `250`. Must be at least 1. Must not be greater than 250.'
example: 10.0
required: false
schema:
type: number
description: 'The amount of clients to return. Default: `250`. Must be at least 1. Must not be greater than 250.'
example: 10.0
-
in: query
name: page
description: 'The page number. Must be at least 1.'
example: 1.0
required: false
schema:
type: number
description: 'The page number. Must be at least 1.'
example: 1.0
-
in: query
name: sort_by
description: 'Sorts the results by either `id` or `creation_date`. Default: `id`.'
example: id
required: false
schema:
type: string
description: 'Sorts the results by either `id` or `creation_date`. Default: `id`.'
example: id
enum:
- creation_date
- id
-
in: query
name: sort_direction
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
required: false
schema:
type: string
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.'
example: asc
enum:
- asc
- desc
-
in: query
name: email
description: 'Return only clients with the selected email. Empty for all clients . Must be a valid email address.'
example: ''
required: false
schema:
type: string
description: 'Return only clients with the selected email. Empty for all clients . Must be a valid email address.'
example: ''
-
in: query
name: mobile_phone
description: 'Return only clients with the selected phone number. Phone format is 12223334444.'
example: ''
required: false
schema:
type: string
description: 'Return only clients with the selected phone number. Phone format is 12223334444.'
example: ''
-
in: query
name: opted_out_emails
description: '`true` will return clients opted out from email communications. `false` will show clients that have not opted out. Do not pass the filter to show all.'
example: true
required: false
schema:
type: boolean
description: '`true` will return clients opted out from email communications. `false` will show clients that have not opted out. Do not pass the filter to show all.'
example: true
-
in: query
name: opted_out_sms
description: '`true` will return clients opted out from SMS communications. `false` will show clients that have not opted out. Do not pass the filter to show all.'
example: true
required: false
schema:
type: boolean
description: '`true` will return clients opted out from SMS communications. `false` will show clients that have not opted out. Do not pass the filter to show all.'
example: true
-
in: query
name: tags
description: 'Filter clients by assigned tag(s). Array.'
example:
- signed-up
required: false
schema:
type: array
description: 'Filter clients by assigned tag(s). Array.'
example:
- signed-up
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: '2137449171'
team_id: '6789'
profile_url: 'https://loopspark.com/go/client/6789/2137449171'
email: kconsidine@hotmail.com
active: true
first_name: Pauline
last_name: Schultz
mobile_phone: '13577773167'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'North Eileen'
address: "4706 Madisen Avenue Suite 636\nNew Josianetown, WV 49408-0159"
postal_code: 79150-6985
state: CA
emergency_contact:
email: mitchell.matilda@yahoo.com
name: 'Mina Bauch'
phone: '13573073143'
relationship: wife
birthday: '1972-08-25T23:37:54+00:00'
creation_date: '2023-10-10T09:48:20+00:00'
refreshed_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
-
id: '1796147067'
team_id: '5854'
profile_url: 'https://loopspark.com/go/client/5854/1796147067'
email: tristin.mohr@leffler.com
active: true
first_name: Vella
last_name: Ziemann
mobile_phone: '13577240472'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: Maraborough
address: "753 Jakubowski Track\nLake Daronside, MT 65023-7717"
postal_code: 31500-3812
state: CA
emergency_contact:
email: noe.ankunding@hotmail.com
name: 'Prof. Kenna Ortiz'
phone: '13571889386'
relationship: wife
birthday: '2005-10-28T06:49:30+00:00'
creation_date: '2024-05-25T01:27:05+00:00'
refreshed_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
properties:
data:
type: array
example:
-
id: '2137449171'
team_id: '6789'
profile_url: 'https://loopspark.com/go/client/6789/2137449171'
email: kconsidine@hotmail.com
active: true
first_name: Pauline
last_name: Schultz
mobile_phone: '13577773167'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'North Eileen'
address: "4706 Madisen Avenue Suite 636\nNew Josianetown, WV 49408-0159"
postal_code: 79150-6985
state: CA
emergency_contact:
email: mitchell.matilda@yahoo.com
name: 'Mina Bauch'
phone: '13573073143'
relationship: wife
birthday: '1972-08-25T23:37:54+00:00'
creation_date: '2023-10-10T09:48:20+00:00'
refreshed_at: null
tags:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
-
id: '1796147067'
team_id: '5854'
profile_url: 'https://loopspark.com/go/client/5854/1796147067'
email: tristin.mohr@leffler.com
active: true
first_name: Vella
last_name: Ziemann
mobile_phone: '13577240472'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: Maraborough
address: "753 Jakubowski Track\nLake Daronside, MT 65023-7717"
postal_code: 31500-3812
state: CA
emergency_contact:
email: noe.ankunding@hotmail.com
name: 'Prof. Kenna Ortiz'
phone: '13571889386'
relationship: wife
birthday: '2005-10-28T06:49:30+00:00'
creation_date: '2024-05-25T01:27:05+00:00'
refreshed_at: null
tags:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
items:
type: object
properties:
id:
type: string
example: '2137449171'
team_id:
type: string
example: '6789'
nullable: true
profile_url:
type: string
example: 'https://loopspark.com/go/client/6789/2137449171'
email:
type: string
example: kconsidine@hotmail.com
nullable: true
active:
type: boolean
example: true
first_name:
type: string
example: Pauline
nullable: true
last_name:
type: string
example: Schultz
nullable: true
mobile_phone:
type: string
example: '13577773167'
nullable: true
ltv:
type: integer
example: 0
phone_home:
type: string
example: null
nullable: true
phone_work:
type: string
example: null
nullable: true
referred_by:
type: string
example: null
nullable: true
address:
type: object
properties:
city:
type: string
example: 'North Eileen'
nullable: true
address:
type: string
example: "4706 Madisen Avenue Suite 636\nNew Josianetown, WV 49408-0159"
nullable: true
postal_code:
type: string
example: 79150-6985
nullable: true
state:
type: string
example: CA
nullable: true
emergency_contact:
type: object
properties:
email:
type: string
example: mitchell.matilda@yahoo.com
nullable: true
name:
type: string
example: 'Mina Bauch'
nullable: true
phone:
type: string
example: '13573073143'
nullable: true
relationship:
type: string
example: wife
nullable: true
birthday:
type: string
example: '1972-08-25T23:37:54+00:00'
nullable: true
creation_date:
type: string
example: '2023-10-10T09:48:20+00:00'
nullable: true
refreshed_at:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
unsubscribed_email_at:
type: string
example: null
nullable: true
unsubscribed_sms_at:
type: string
example: null
nullable: true
unsubscribed_sms_text:
type: boolean
example: false
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
stats:
type: object
properties:
period_count:
type: integer
example: 12
nullable: true
club_count:
type: integer
example: 0
open_discussions:
type: integer
example: 0
open_todos:
type: integer
example: 0
social:
type: object
properties:
twitter:
type: array
example: []
linkedin:
type: array
example: []
facebook:
type: array
example: []
instagram:
type: array
example: []
tags:
- Client
parameters:
-
in: path
name: siteId
description: 'The ID of the Studio'
example: '123'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/clients/{clientId}':
get:
summary: 'Get a client'
operationId: getAClient
description: 'Returns the information about a specific client'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: '4274032'
team_id: '2603'
profile_url: 'https://loopspark.com/go/client/2603/4274032'
email: green.doris@gmail.com
active: true
first_name: Emanuel
last_name: Emmerich
mobile_phone: '13573996721'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'New Monaland'
address: "422 Moen Corners\nSouth Moises, NH 64519"
postal_code: '91956'
state: CA
emergency_contact:
email: kirsten.ward@yahoo.com
name: 'Hank Batz'
phone: '13570216494'
relationship: wife
birthday: '1990-07-16T02:01:30+00:00'
creation_date: '2024-11-19T16:36:21+00:00'
refreshed_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
properties:
data:
type: object
properties:
id:
type: string
example: '4274032'
team_id:
type: string
example: '2603'
nullable: true
profile_url:
type: string
example: 'https://loopspark.com/go/client/2603/4274032'
email:
type: string
example: green.doris@gmail.com
nullable: true
active:
type: boolean
example: true
first_name:
type: string
example: Emanuel
nullable: true
last_name:
type: string
example: Emmerich
nullable: true
mobile_phone:
type: string
example: '13573996721'
nullable: true
ltv:
type: integer
example: 0
phone_home:
type: string
example: null
nullable: true
phone_work:
type: string
example: null
nullable: true
referred_by:
type: string
example: null
nullable: true
address:
type: object
properties:
city:
type: string
example: 'New Monaland'
nullable: true
address:
type: string
example: "422 Moen Corners\nSouth Moises, NH 64519"
nullable: true
postal_code:
type: string
example: '91956'
nullable: true
state:
type: string
example: CA
nullable: true
emergency_contact:
type: object
properties:
email:
type: string
example: kirsten.ward@yahoo.com
nullable: true
name:
type: string
example: 'Hank Batz'
nullable: true
phone:
type: string
example: '13570216494'
nullable: true
relationship:
type: string
example: wife
nullable: true
birthday:
type: string
example: '1990-07-16T02:01:30+00:00'
nullable: true
creation_date:
type: string
example: '2024-11-19T16:36:21+00:00'
nullable: true
refreshed_at:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
unsubscribed_email_at:
type: string
example: null
nullable: true
unsubscribed_sms_at:
type: string
example: null
nullable: true
unsubscribed_sms_text:
type: boolean
example: false
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
stats:
type: object
properties:
period_count:
type: integer
example: 12
nullable: true
club_count:
type: integer
example: 0
open_discussions:
type: integer
example: 0
open_todos:
type: integer
example: 0
social:
type: object
properties:
twitter:
type: array
example: []
linkedin:
type: array
example: []
facebook:
type: array
example: []
instagram:
type: array
example: []
tags:
- Client
put:
summary: 'Update a Client'
operationId: updateAClient
description: 'Updates the information of a Client'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: '524453158'
team_id: '9290'
profile_url: 'https://loopspark.com/go/client/9290/524453158'
email: qankunding@gmail.com
active: true
first_name: Elton
last_name: Gaylord
mobile_phone: '13576738443'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'South Dorisfurt'
address: "5805 Noah Via Suite 679\nSouth Katlyn, VA 78637"
postal_code: '80568'
state: CA
emergency_contact:
email: vraynor@labadie.com
name: 'Mr. Carey Smitham'
phone: '13573341494'
relationship: wife
birthday: '1986-10-21T08:44:51+00:00'
creation_date: '2026-08-12T05:46:43+00:00'
refreshed_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: false
can_contact_by_sms: false
unsubscribed_email_at: '2026-10-03T08:00:35+00:00'
unsubscribed_sms_at: '2026-10-03T08:00:35+00:00'
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
properties:
data:
type: object
properties:
id:
type: string
example: '524453158'
team_id:
type: string
example: '9290'
nullable: true
profile_url:
type: string
example: 'https://loopspark.com/go/client/9290/524453158'
email:
type: string
example: qankunding@gmail.com
nullable: true
active:
type: boolean
example: true
first_name:
type: string
example: Elton
nullable: true
last_name:
type: string
example: Gaylord
nullable: true
mobile_phone:
type: string
example: '13576738443'
nullable: true
ltv:
type: integer
example: 0
phone_home:
type: string
example: null
nullable: true
phone_work:
type: string
example: null
nullable: true
referred_by:
type: string
example: null
nullable: true
address:
type: object
properties:
city:
type: string
example: 'South Dorisfurt'
nullable: true
address:
type: string
example: "5805 Noah Via Suite 679\nSouth Katlyn, VA 78637"
nullable: true
postal_code:
type: string
example: '80568'
nullable: true
state:
type: string
example: CA
nullable: true
emergency_contact:
type: object
properties:
email:
type: string
example: vraynor@labadie.com
nullable: true
name:
type: string
example: 'Mr. Carey Smitham'
nullable: true
phone:
type: string
example: '13573341494'
nullable: true
relationship:
type: string
example: wife
nullable: true
birthday:
type: string
example: '1986-10-21T08:44:51+00:00'
nullable: true
creation_date:
type: string
example: '2026-08-12T05:46:43+00:00'
nullable: true
refreshed_at:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: false
can_contact_by_sms:
type: boolean
example: false
unsubscribed_email_at:
type: string
example: '2026-10-03T08:00:35+00:00'
nullable: true
unsubscribed_sms_at:
type: string
example: '2026-10-03T08:00:35+00:00'
nullable: true
unsubscribed_sms_text:
type: boolean
example: false
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
stats:
type: object
properties:
period_count:
type: integer
example: 12
nullable: true
club_count:
type: integer
example: 0
open_discussions:
type: integer
example: 0
open_todos:
type: integer
example: 0
social:
type: object
properties:
twitter:
type: array
example: []
linkedin:
type: array
example: []
facebook:
type: array
example: []
instagram:
type: array
example: []
403:
description: 'Trying to update club_count when manual_club_count is disabled'
content:
application/json:
schema:
type: object
example:
error: true
message: 'Cannot update club_count when manual_club_count is disabled for the studio'
properties:
error:
type: boolean
example: true
message:
type: string
example: 'Cannot update club_count when manual_club_count is disabled for the studio'
422:
description: 'Trying to SMS opt in a client that manually opted out'
content:
application/json:
schema:
type: object
example:
error: true
message: 'The client cannot be opted-in to SMS because they sent the opt-out text'
properties:
error:
type: boolean
example: true
message:
type: string
example: 'The client cannot be opted-in to SMS because they sent the opt-out text'
tags:
- Client
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
subscribed_email:
type: boolean
description: 'Unsubscribes an entity from email communications if false. Subscribes if true.'
example: false
subscribed_sms:
type: boolean
description: 'Unsubscribes an entity from SMS communications if false. Subscribes if true.'
example: false
period_count:
type: number
description: 'Manually set the period count for this entity. Must be at least 0.'
example: 27
club_count:
type: number
description: 'Manually set the club count for this entity (requires manual_club_count to be enabled for the studio). Must be at least 0.'
example: 5.0
referrer:
type: object
description: 'Object containing referrer information with optional properties: first_name, last_name, email, phone, location.'
example:
first_name: John
last_name: Doe
email: john.doe@example.com
phone: 555-123-4567
location: 'New York'
properties:
first_name:
type: string
description: ''
example: John
nullable: true
last_name:
type: string
description: ''
example: Doe
nullable: true
email:
type: string
description: 'Must be a valid email address.'
example: john.doe@example.com
nullable: true
phone:
type: string
description: ''
example: 555-123-4567
nullable: true
location:
type: string
description: ''
example: 'New York'
nullable: true
parameters:
-
in: path
name: siteId
description: 'The studio ID.'
example: '21225'
required: true
schema:
type: string
-
in: path
name: clientId
description: 'The client ID.'
example: '10000023'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/clients/{clientId}/tags':
post:
summary: 'Add a Tag'
operationId: addATag
description: 'Assigns a Tag to a specific Client'
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: '1365105717'
team_id: '9290'
profile_url: 'https://loopspark.com/go/client/9290/1365105717'
email: wbatz@kutch.com
active: true
first_name: Micaela
last_name: Ankunding
mobile_phone: '13576738443'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'South Dorisfurt'
address: "2669 Wolff Trail\nBeierburgh, VA 78637"
postal_code: '80568'
state: CA
emergency_contact:
email: kconsidine@hotmail.com
name: 'Henri Mitchell'
phone: '13574946036'
relationship: wife
birthday: '1986-10-21T08:44:51+00:00'
creation_date: '2026-08-12T05:46:43+00:00'
refreshed_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
properties:
data:
type: object
properties:
id:
type: string
example: '1365105717'
team_id:
type: string
example: '9290'
nullable: true
profile_url:
type: string
example: 'https://loopspark.com/go/client/9290/1365105717'
email:
type: string
example: wbatz@kutch.com
nullable: true
active:
type: boolean
example: true
first_name:
type: string
example: Micaela
nullable: true
last_name:
type: string
example: Ankunding
nullable: true
mobile_phone:
type: string
example: '13576738443'
nullable: true
ltv:
type: integer
example: 0
phone_home:
type: string
example: null
nullable: true
phone_work:
type: string
example: null
nullable: true
referred_by:
type: string
example: null
nullable: true
address:
type: object
properties:
city:
type: string
example: 'South Dorisfurt'
nullable: true
address:
type: string
example: "2669 Wolff Trail\nBeierburgh, VA 78637"
nullable: true
postal_code:
type: string
example: '80568'
nullable: true
state:
type: string
example: CA
nullable: true
emergency_contact:
type: object
properties:
email:
type: string
example: kconsidine@hotmail.com
nullable: true
name:
type: string
example: 'Henri Mitchell'
nullable: true
phone:
type: string
example: '13574946036'
nullable: true
relationship:
type: string
example: wife
nullable: true
birthday:
type: string
example: '1986-10-21T08:44:51+00:00'
nullable: true
creation_date:
type: string
example: '2026-08-12T05:46:43+00:00'
nullable: true
refreshed_at:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
unsubscribed_email_at:
type: string
example: null
nullable: true
unsubscribed_sms_at:
type: string
example: null
nullable: true
unsubscribed_sms_text:
type: boolean
example: false
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
stats:
type: object
properties:
period_count:
type: integer
example: 12
nullable: true
club_count:
type: integer
example: 0
open_discussions:
type: integer
example: 0
open_todos:
type: integer
example: 0
social:
type: object
properties:
twitter:
type: array
example: []
linkedin:
type: array
example: []
facebook:
type: array
example: []
instagram:
type: array
example: []
tags:
- Client
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
tag:
type: string
description: 'The tag. Must be at least 1 character.'
example: Member
required:
- tag
delete:
summary: 'Remove a Tag'
operationId: removeATag
description: "Removes a Tag from a specific Client.\nIf the Client does not have the Tag assigned, it will return an error `400`"
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: '1880026316'
team_id: '889'
profile_url: 'https://loopspark.com/go/client/889/1880026316'
email: torp.florence@wolff.info
active: true
first_name: Cynthia
last_name: Fahey
mobile_phone: '13577037707'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'New Modesta'
address: "85188 Victoria Shoals\nWest Artborough, NV 18607-5439"
postal_code: '26085'
state: CA
emergency_contact:
email: mcdermott.verlie@gmail.com
name: 'Shayna Raynor Jr.'
phone: '13573786691'
relationship: wife
birthday: '1966-10-14T12:39:49+00:00'
creation_date: '2025-02-26T10:16:56+00:00'
refreshed_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: null
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
properties:
data:
type: object
properties:
id:
type: string
example: '1880026316'
team_id:
type: string
example: '889'
nullable: true
profile_url:
type: string
example: 'https://loopspark.com/go/client/889/1880026316'
email:
type: string
example: torp.florence@wolff.info
nullable: true
active:
type: boolean
example: true
first_name:
type: string
example: Cynthia
nullable: true
last_name:
type: string
example: Fahey
nullable: true
mobile_phone:
type: string
example: '13577037707'
nullable: true
ltv:
type: integer
example: 0
phone_home:
type: string
example: null
nullable: true
phone_work:
type: string
example: null
nullable: true
referred_by:
type: string
example: null
nullable: true
address:
type: object
properties:
city:
type: string
example: 'New Modesta'
nullable: true
address:
type: string
example: "85188 Victoria Shoals\nWest Artborough, NV 18607-5439"
nullable: true
postal_code:
type: string
example: '26085'
nullable: true
state:
type: string
example: CA
nullable: true
emergency_contact:
type: object
properties:
email:
type: string
example: mcdermott.verlie@gmail.com
nullable: true
name:
type: string
example: 'Shayna Raynor Jr.'
nullable: true
phone:
type: string
example: '13573786691'
nullable: true
relationship:
type: string
example: wife
nullable: true
birthday:
type: string
example: '1966-10-14T12:39:49+00:00'
nullable: true
creation_date:
type: string
example: '2025-02-26T10:16:56+00:00'
nullable: true
refreshed_at:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
unsubscribed_email_at:
type: string
example: null
nullable: true
unsubscribed_sms_at:
type: string
example: null
nullable: true
unsubscribed_sms_text:
type: boolean
example: false
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
stats:
type: object
properties:
period_count:
type: string
example: null
nullable: true
club_count:
type: integer
example: 0
open_discussions:
type: integer
example: 0
open_todos:
type: integer
example: 0
social:
type: object
properties:
twitter:
type: array
example: []
linkedin:
type: array
example: []
facebook:
type: array
example: []
instagram:
type: array
example: []
400:
description: ''
content:
application/json:
schema:
type: object
example:
error: true
message: 'The client does not have the tag signed-up'
properties:
error:
type: boolean
example: true
message:
type: string
example: 'The client does not have the tag signed-up'
tags:
- Client
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
tag:
type: string
description: 'The tag. Must be at least 1 character.'
example: signed-up-flow
required:
- tag
parameters:
-
in: path
name: siteId
description: 'The studio ID'
example: '21225'
required: true
schema:
type: string
-
in: path
name: clientId
description: 'The client ID'
example: '10000023'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/clients/{clientId}/form_submissions':
get:
summary: 'Lists the form submissions'
operationId: listsTheFormSubmissions
description: 'Lists the form submissions of a specific client'
parameters:
-
in: query
name: page
description: 'The page number.'
example: 1
required: false
schema:
type: integer
description: 'The page number.'
example: 1
-
in: query
name: per_page
description: 'The amount of clients to return. Max: `250`. Default: `10`. Must be at least 1. Must not be greater than 250.'
example: 10.0
required: false
schema:
type: number
description: 'The amount of clients to return. Max: `250`. Default: `10`. Must be at least 1. Must not be greater than 250.'
example: 10.0
-
in: query
name: sort_by
description: 'Sorts the results by either `id` or `creation_date`. Default: `creation_date`.'
example: creation_date
required: false
schema:
type: string
description: 'Sorts the results by either `id` or `creation_date`. Default: `creation_date`.'
example: creation_date
enum:
- creation_date
- id
-
in: query
name: sort_direction
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `desc`.'
example: asc
required: false
schema:
type: string
description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `desc`.'
example: asc
enum:
- asc
- desc
-
in: query
name: form_id
description: 'Return only forms submissions of a specific form. Must be a valid UUID. Must match an existing stored value.'
example: ''
required: false
schema:
type: string
description: 'Return only forms submissions of a specific form. Must be a valid UUID. Must match an existing stored value.'
example: ''
-
in: query
name: category
description: 'Return only forms submissions of forms belonging to a specific category.'
example: ''
required: false
schema:
type: string
description: 'Return only forms submissions of forms belonging to a specific category.'
example: ''
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: a621f6a5-219b-4a92-bc68-04a8b423d629
submission_date: '2026-10-03T08:00:35+00:00'
pdf_url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
form:
id: d0ae0146-ed1a-47b8-9d38-d39cf6e0b512
name: rem
category: ea
archived: false
creates_pdf: false
form_url: 'https://lo.ls/C99cQnt'
send_email_copy_to: null
allows_new_clients: false
thank_you_url: null
properties:
data:
type: object
properties:
id:
type: string
example: a621f6a5-219b-4a92-bc68-04a8b423d629
submission_date:
type: string
example: '2026-10-03T08:00:35+00:00'
nullable: true
pdf_url:
type: string
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
nullable: true
form:
type: object
properties:
id:
type: string
example: d0ae0146-ed1a-47b8-9d38-d39cf6e0b512
name:
type: string
example: rem
category:
type: string
example: ea
nullable: true
archived:
type: boolean
example: false
creates_pdf:
type: boolean
example: false
form_url:
type: string
example: 'https://lo.ls/C99cQnt'
send_email_copy_to:
type: string
example: null
nullable: true
allows_new_clients:
type: boolean
example: false
thank_you_url:
type: string
example: null
nullable: true
tags:
- Client
parameters:
-
in: path
name: siteId
description: 'The studio ID.'
example: '21225'
required: true
schema:
type: string
-
in: path
name: clientId
description: 'The client ID.'
example: '10000023'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/clients/{clientId}/custom-fields':
get:
summary: 'Get Client Custom Fields'
operationId: getClientCustomFields
description: "Retrieve all custom field values for a specific client.\nReturns field definition along with current value."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
custom_field:
id: EMERGENCY_CONTACT
name: 'Emergency Contact'
type: string
field_options: null
description: 'Person to contact in case of emergency'
value: 'John Doe - 555-1234'
-
custom_field:
id: THREE_CS
name: 'Three Cs'
type: single_select
field_options:
-
value: challenge
label: Challenge
is_active: true
sort_order: 1
-
value: commitment
label: Commitment
is_active: true
sort_order: 2
-
value: community
label: Community
is_active: true
sort_order: 3
description: 'Select primary motivation'
value: challenge
properties:
data:
type: array
example:
-
custom_field:
id: EMERGENCY_CONTACT
name: 'Emergency Contact'
type: string
field_options: null
description: 'Person to contact in case of emergency'
value: 'John Doe - 555-1234'
-
custom_field:
id: THREE_CS
name: 'Three Cs'
type: single_select
field_options:
- value: challenge
label: Challenge
is_active: true
sort_order: 1
- value: commitment
label: Commitment
is_active: true
sort_order: 2
- value: community
label: Community
is_active: true
sort_order: 3
description: 'Select primary motivation'
value: challenge
items:
type: object
properties:
custom_field:
type: object
properties:
id:
type: string
example: EMERGENCY_CONTACT
name:
type: string
example: 'Emergency Contact'
type:
type: string
example: string
field_options:
type: string
example: null
nullable: true
description:
type: string
example: 'Person to contact in case of emergency'
nullable: true
value:
type: string
example: 'John Doe - 555-1234'
tags:
- Client
post:
summary: 'Update Client Custom Fields'
operationId: updateClientCustomFields
description: "Batch update custom field values for a specific client.\nCan update multiple fields in a single request."
parameters: []
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
custom_field:
id: EMERGENCY_CONTACT
name: 'Emergency Contact'
type: string
value: 'Jane Doe - 555-5678'
properties:
data:
type: array
example:
-
custom_field:
id: EMERGENCY_CONTACT
name: 'Emergency Contact'
type: string
value: 'Jane Doe - 555-5678'
items:
type: object
properties:
custom_field:
type: object
properties:
id:
type: string
example: EMERGENCY_CONTACT
name:
type: string
example: 'Emergency Contact'
type:
type: string
example: string
value:
type: string
example: 'Jane Doe - 555-5678'
tags:
- Client
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
fields:
type: array
description: 'Array of field updates. Must have at least 1 items.'
example:
- id: EMERGENCY_CONTACT
value: 'John Doe - 555-1234'
- id: THREE_CS
value: challenge
items:
type: object
properties:
'*':
type: object
description: ''
example:
id: architecto
properties:
id:
type: string
description: 'The custom field ID (e.g., "EMERGENCY_CONTACT")'
example: architecto
value:
type: string
description: 'nullable The field value'
example: architecto
required:
- id
id:
type: string
description: 'The custom field ID/slug (e.g., "EMERGENCY_CONTACT", "THREE_CS"). Must match an existing stored value.'
example: EMERGENCY_CONTACT
value:
type: string
description: 'The value to set. Use null to clear the field. Type depends on field definition (string, boolean, date, etc.).'
example: 'John Doe - 555-1234'
nullable: true
required:
- id
required:
- fields
parameters:
-
in: path
name: siteId
description: "The studio's site identifier (e.g., MindBody site ID)."
example: '100001'
required: true
schema:
type: string
-
in: path
name: clientId
description: "The client's external identifier (e.g., MindBody client ID)."
example: '100000001'
required: true
schema:
type: string
'/api/franchise/v1/{siteId}/clients/{clientId}/notes':
post:
summary: 'Create a Note'
operationId: createANote
description: "Adds a note to a Client, dated now. The note is plain text: HTML is shown as text, and line breaks are kept.\nTo categorize it, send the `id` of one of the studio's active note categories (see \"List Note Categories\").\nEach call creates a new note, so do not retry a request that already succeeded.\nThe note has no staff author; LoopSpark shows its author as \"Integration\"."
parameters: []
responses:
201:
description: ''
content:
application/json:
schema:
type: object
example:
data:
id: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90
note: 'Called about the 6-week challenge.
' note_category_id: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: '2026-09-28T14:05:00+00:00' properties: data: type: object properties: id: type: string example: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 note: type: string example: 'Called about the 6-week challenge.
' note_category_id: type: string example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 nullable: true created_at: type: string example: '2026-09-28T14:05:00+00:00' nullable: true 422: description: '' content: application/json: schema: type: object example: message: 'The note category is not available for this studio.' errors: note_category_id: - 'The note category is not available for this studio.' properties: message: type: string example: 'The note category is not available for this studio.' errors: type: object properties: note_category_id: type: array example: - 'The note category is not available for this studio.' items: type: string tags: - Client requestBody: required: true content: application/json: schema: type: object properties: note: type: string description: 'The note text, at least 2 characters. Plain text; line breaks are kept.' example: 'Called about the 6-week challenge.' note_category_id: type: string description: "Optional. The id of one of the studio's active note categories." example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 nullable: true required: - note parameters: - in: path name: siteId description: 'The studio ID.' example: '21225' required: true schema: type: string - in: path name: clientId description: 'The client ID.' example: '10000023' required: true schema: type: string '/api/franchise/v1/{siteId}/clients/{clientId}/messages': post: summary: 'Send a Text Message' operationId: sendATextMessage description: "Sends one SMS to a Client from the studio's texting number, in the same conversation thread staff use in LoopSpark.\nPlaceholders are filled in as in LoopSpark: write the name in double curly braces, for example FIRST_NAME. The message can be at most 3 SMS segments long, counted before placeholders are filled in.\nOpt-outs (STOP) and the usual opt-out notice work exactly as for a staff send, and the text counts against the studio's SMS bundle.\nA `201` means the text was queued; delivery happens asynchronously. Each call sends a new text, so do not retry a request that already succeeded.\nThe text has no staff sender; the LoopSpark web app shows its sender as \"Integration\".\nReturns `422` when the person is muted, has opted out of texts, or has no valid mobile number, or when the text is empty once placeholders are filled in.\nReturns `403` when the studio is suspended." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 discussion_id: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: '2026-10-02T14:05:00+00:00' properties: data: type: object properties: id: type: string example: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 discussion_id: type: string example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: type: string example: '2026-10-02T14:05:00+00:00' nullable: true 422: description: '' content: application/json: schema: type: object example: message: 'This client cannot be contacted by text message' errors: message: - 'This client cannot be contacted by text message' properties: message: type: string example: 'This client cannot be contacted by text message' errors: type: object properties: message: type: array example: - 'This client cannot be contacted by text message' items: type: string tags: - Client requestBody: required: true content: application/json: schema: type: object properties: message: type: string description: 'The text to send, at most 3 SMS segments before placeholders are filled in. Placeholders (a name such as FIRST_NAME in double curly braces) are filled in.' example: 'Hi there, see you at the 6pm class!' required: - message parameters: - in: path name: siteId description: 'The studio ID.' example: '21225' required: true schema: type: string - in: path name: clientId description: 'The client ID.' example: '10000023' required: true schema: type: string '/api/franchise/v1/{siteId}/contacts': get: summary: 'Contacts list' operationId: contactsList description: 'Retrieve a list of all the contacts for a specific Studio. The results are paginated' parameters: - in: query name: per_page description: 'The amount of contacts to return. Default: `250`. Must be at least 1. Must not be greater than 250.' example: 10.0 required: false schema: type: number description: 'The amount of contacts to return. Default: `250`. Must be at least 1. Must not be greater than 250.' example: 10.0 - in: query name: page description: 'The page number. Must be at least 1.' example: 1.0 required: false schema: type: number description: 'The page number. Must be at least 1.' example: 1.0 - in: query name: sort_by description: 'Sorts the results by either `id` or `creation_date`. Default: `id`.' example: id required: false schema: type: string description: 'Sorts the results by either `id` or `creation_date`. Default: `id`.' example: id enum: - creation_date - id - in: query name: sort_direction description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.' example: asc required: false schema: type: string description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.' example: asc enum: - asc - desc - in: query name: email description: 'Return only contacts with the selected email. Empty for all contacts . Must be a valid email address.' example: '' required: false schema: type: string description: 'Return only contacts with the selected email. Empty for all contacts . Must be a valid email address.' example: '' - in: query name: mobile_phone description: 'Return only contacts with the selected phone number. Phone format is 12223334444.' example: '' required: false schema: type: string description: 'Return only contacts with the selected phone number. Phone format is 12223334444.' example: '' - in: query name: opted_out_emails description: '`true` will return contacts opted out from email communications. `false` will show contacts that have not opted out. Do not pass the filter to show all.' example: true required: false schema: type: boolean description: '`true` will return contacts opted out from email communications. `false` will show contacts that have not opted out. Do not pass the filter to show all.' example: true - in: query name: opted_out_sms description: '`true` will return contacts opted out from SMS communications. `false` will show contacts that have not opted out. Do not pass the filter to show all.' example: true required: false schema: type: boolean description: '`true` will return contacts opted out from SMS communications. `false` will show contacts that have not opted out. Do not pass the filter to show all.' example: true - in: query name: tags description: 'Filter contacts by assigned tag(s). Array.' example: - signed-up required: false schema: type: array description: 'Filter contacts by assigned tag(s). Array.' example: - signed-up items: type: string responses: 200: description: '' content: application/json: schema: type: object example: data: - id: lead-mhamill@marvin.net team_id: '8863' profile_url: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net' email: mhamill@marvin.net active: false first_name: Rhett last_name: Kuhn mobile_phone: '13573900260' can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null is_prospect: true created_at: '2026-10-03T08:00:36+00:00' tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] client: null - id: lead-conn.brisa@yahoo.com team_id: '751' profile_url: 'https://loopspark.com/go/client/751/lead-conn.brisa@yahoo.com' email: conn.brisa@yahoo.com active: false first_name: Ethelyn last_name: Lesch mobile_phone: '13570269273' can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null is_prospect: true created_at: '2026-10-03T08:00:36+00:00' tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] client: null properties: data: type: array example: - id: lead-mhamill@marvin.net team_id: '8863' profile_url: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net' email: mhamill@marvin.net active: false first_name: Rhett last_name: Kuhn mobile_phone: '13573900260' can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null is_prospect: true created_at: '2026-10-03T08:00:36+00:00' tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] client: null - id: lead-conn.brisa@yahoo.com team_id: '751' profile_url: 'https://loopspark.com/go/client/751/lead-conn.brisa@yahoo.com' email: conn.brisa@yahoo.com active: false first_name: Ethelyn last_name: Lesch mobile_phone: '13570269273' can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null is_prospect: true created_at: '2026-10-03T08:00:36+00:00' tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] client: null items: type: object properties: id: type: string example: lead-mhamill@marvin.net team_id: type: string example: '8863' nullable: true profile_url: type: string example: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net' email: type: string example: mhamill@marvin.net nullable: true active: type: boolean example: false first_name: type: string example: Rhett nullable: true last_name: type: string example: Kuhn nullable: true mobile_phone: type: string example: '13573900260' nullable: true can_contact_by_email: type: boolean example: true can_contact_by_sms: type: boolean example: true unsubscribed_email_at: type: string example: null nullable: true unsubscribed_sms_at: type: string example: null nullable: true is_prospect: type: boolean example: true created_at: type: string example: '2026-10-03T08:00:36+00:00' nullable: true tags: type: array example: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' items: type: object properties: name: type: string example: Member assigned_at: type: string example: '2025-01-15T09:30:00+00:00' nullable: true custom_fields: type: array example: [] client: type: string example: null nullable: true tags: - Contacts parameters: - in: path name: siteId description: 'The ID of the Studio' example: '123' required: true schema: type: string '/api/franchise/v1/{siteId}/contacts/{contactId}': get: summary: 'Get a Contact' operationId: getAContact description: 'Returns the information about a specific Contact' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: lead-carter.raleigh@kreiger.info team_id: '3089' profile_url: 'https://loopspark.com/go/client/3089/lead-carter.raleigh@kreiger.info' email: carter.raleigh@kreiger.info active: false first_name: Callie last_name: Towne mobile_phone: '13576039800' can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null is_prospect: true created_at: '2026-10-03T08:00:36+00:00' tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] client: null properties: data: type: object properties: id: type: string example: lead-carter.raleigh@kreiger.info team_id: type: string example: '3089' nullable: true profile_url: type: string example: 'https://loopspark.com/go/client/3089/lead-carter.raleigh@kreiger.info' email: type: string example: carter.raleigh@kreiger.info nullable: true active: type: boolean example: false first_name: type: string example: Callie nullable: true last_name: type: string example: Towne nullable: true mobile_phone: type: string example: '13576039800' nullable: true can_contact_by_email: type: boolean example: true can_contact_by_sms: type: boolean example: true unsubscribed_email_at: type: string example: null nullable: true unsubscribed_sms_at: type: string example: null nullable: true is_prospect: type: boolean example: true created_at: type: string example: '2026-10-03T08:00:36+00:00' nullable: true tags: type: array example: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' items: type: object properties: name: type: string example: Member assigned_at: type: string example: '2025-01-15T09:30:00+00:00' nullable: true custom_fields: type: array example: [] client: type: string example: null nullable: true tags: - Contacts put: summary: 'Update a Contact' operationId: updateAContact description: 'Updates the information of a Contact' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: lead-mhamill@marvin.net team_id: '8863' profile_url: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net' email: mhamill@marvin.net active: false first_name: Rhett last_name: Kuhn mobile_phone: '13573900260' can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null is_prospect: true created_at: '2026-10-03T08:00:36+00:00' tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] client: null properties: data: type: object properties: id: type: string example: lead-mhamill@marvin.net team_id: type: string example: '8863' nullable: true profile_url: type: string example: 'https://loopspark.com/go/client/8863/lead-mhamill@marvin.net' email: type: string example: mhamill@marvin.net nullable: true active: type: boolean example: false first_name: type: string example: Rhett nullable: true last_name: type: string example: Kuhn nullable: true mobile_phone: type: string example: '13573900260' nullable: true can_contact_by_email: type: boolean example: true can_contact_by_sms: type: boolean example: true unsubscribed_email_at: type: string example: null nullable: true unsubscribed_sms_at: type: string example: null nullable: true is_prospect: type: boolean example: true created_at: type: string example: '2026-10-03T08:00:36+00:00' nullable: true tags: type: array example: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' items: type: object properties: name: type: string example: Member assigned_at: type: string example: '2025-01-15T09:30:00+00:00' nullable: true custom_fields: type: array example: [] client: type: string example: null nullable: true 422: description: 'Trying to SMS opt in a contact that manually opted out' content: application/json: schema: type: object example: error: true message: 'The contact cannot be opted-in to SMS because they sent the opt-out text' properties: error: type: boolean example: true message: type: string example: 'The contact cannot be opted-in to SMS because they sent the opt-out text' tags: - Contacts requestBody: required: false content: application/json: schema: type: object properties: subscribed_email: type: boolean description: 'Unsubscribes an entity from email communications if false. Subscribes if true.' example: false subscribed_sms: type: boolean description: 'Unsubscribes an entity from SMS communications if false. Subscribes if true.' example: false period_count: type: number description: 'Manually set the period count for this entity. Must be at least 0.' example: 27 club_count: type: number description: 'Manually set the club count for this entity (requires manual_club_count to be enabled for the studio). Must be at least 0.' example: 5.0 referrer: type: object description: 'Object containing referrer information with optional properties: first_name, last_name, email, phone, location.' example: first_name: John last_name: Doe email: john.doe@example.com phone: 555-123-4567 location: 'New York' properties: first_name: type: string description: '' example: John nullable: true last_name: type: string description: '' example: Doe nullable: true email: type: string description: 'Must be a valid email address.' example: john.doe@example.com nullable: true phone: type: string description: '' example: 555-123-4567 nullable: true location: type: string description: '' example: 'New York' nullable: true parameters: - in: path name: siteId description: 'The studio ID.' example: '21225' required: true schema: type: string - in: path name: contactId description: 'The contact ID.' example: '10000023' required: true schema: type: string '/api/franchise/v1/{siteId}/contacts/{contactId}/tags': post: summary: 'Add a Tag' operationId: addATag description: 'Assigns a Tag to a specific Contact' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: '646980841' team_id: '4071' profile_url: 'https://loopspark.com/go/client/4071/646980841' email: emanuel.emmerich@yahoo.com active: true first_name: Kirsten last_name: Ward mobile_phone: '13577071833' can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null is_prospect: false created_at: null tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] client: id: '646980841' team_id: '4071' profile_url: 'https://loopspark.com/go/client/4071/646980841' email: emanuel.emmerich@yahoo.com active: true first_name: Kirsten last_name: Ward mobile_phone: '13577071833' ltv: 0 phone_home: null phone_work: null referred_by: null address: city: Sibylmouth address: "79388 Cristobal Ways\nCruickshankview, GA 41591-5182" postal_code: 60787-7092 state: CA emergency_contact: email: colt.balistreri@hotmail.com name: 'Mrs. Abbey Gaylord MD' phone: '13573113802' relationship: wife birthday: '1990-05-05T12:02:12+00:00' creation_date: '2025-03-26T01:00:14+00:00' refreshed_at: null tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null unsubscribed_sms_text: false referrer: first_name: null last_name: null email: null phone: null location: null stats: period_count: null club_count: 0 open_discussions: 0 open_todos: 0 social: twitter: [] linkedin: [] facebook: [] instagram: [] properties: data: type: object properties: id: type: string example: '646980841' team_id: type: string example: '4071' nullable: true profile_url: type: string example: 'https://loopspark.com/go/client/4071/646980841' email: type: string example: emanuel.emmerich@yahoo.com nullable: true active: type: boolean example: true first_name: type: string example: Kirsten nullable: true last_name: type: string example: Ward nullable: true mobile_phone: type: string example: '13577071833' nullable: true can_contact_by_email: type: boolean example: true can_contact_by_sms: type: boolean example: true unsubscribed_email_at: type: string example: null nullable: true unsubscribed_sms_at: type: string example: null nullable: true is_prospect: type: boolean example: false created_at: type: string example: null nullable: true tags: type: array example: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' items: type: object properties: name: type: string example: Member assigned_at: type: string example: '2025-01-15T09:30:00+00:00' nullable: true custom_fields: type: array example: [] client: type: object properties: id: type: string example: '646980841' team_id: type: string example: '4071' nullable: true profile_url: type: string example: 'https://loopspark.com/go/client/4071/646980841' email: type: string example: emanuel.emmerich@yahoo.com nullable: true active: type: boolean example: true first_name: type: string example: Kirsten nullable: true last_name: type: string example: Ward nullable: true mobile_phone: type: string example: '13577071833' nullable: true ltv: type: integer example: 0 phone_home: type: string example: null nullable: true phone_work: type: string example: null nullable: true referred_by: type: string example: null nullable: true address: type: object properties: city: type: string example: Sibylmouth nullable: true address: type: string example: "79388 Cristobal Ways\nCruickshankview, GA 41591-5182" nullable: true postal_code: type: string example: 60787-7092 nullable: true state: type: string example: CA nullable: true emergency_contact: type: object properties: email: type: string example: colt.balistreri@hotmail.com nullable: true name: type: string example: 'Mrs. Abbey Gaylord MD' nullable: true phone: type: string example: '13573113802' nullable: true relationship: type: string example: wife nullable: true birthday: type: string example: '1990-05-05T12:02:12+00:00' nullable: true creation_date: type: string example: '2025-03-26T01:00:14+00:00' nullable: true refreshed_at: type: string example: null nullable: true tags: type: array example: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' items: type: object properties: name: type: string example: Member assigned_at: type: string example: '2025-01-15T09:30:00+00:00' nullable: true custom_fields: type: array example: [] can_contact_by_email: type: boolean example: true can_contact_by_sms: type: boolean example: true unsubscribed_email_at: type: string example: null nullable: true unsubscribed_sms_at: type: string example: null nullable: true unsubscribed_sms_text: type: boolean example: false referrer: type: object properties: first_name: type: string example: null nullable: true last_name: type: string example: null nullable: true email: type: string example: null nullable: true phone: type: string example: null nullable: true location: type: string example: null nullable: true stats: type: object properties: period_count: type: string example: null nullable: true club_count: type: integer example: 0 open_discussions: type: integer example: 0 open_todos: type: integer example: 0 social: type: object properties: twitter: type: array example: [] linkedin: type: array example: [] facebook: type: array example: [] instagram: type: array example: [] nullable: true tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: tag: type: string description: 'The tag. Must be at least 1 character.' example: Member required: - tag delete: summary: 'Remove a Tag' operationId: removeATag description: "Removes a Tag from a specific Contact.\nIf the Contact does not have the Tag assigned, it will return an error `400`" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: '1187404954' team_id: '4071' profile_url: 'https://loopspark.com/go/client/4071/1187404954' email: emanuel.emmerich@yahoo.com active: true first_name: Kirsten last_name: Ward mobile_phone: '13577071833' can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null is_prospect: false created_at: null tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] client: id: '1187404954' team_id: '4071' profile_url: 'https://loopspark.com/go/client/4071/1187404954' email: emanuel.emmerich@yahoo.com active: true first_name: Kirsten last_name: Ward mobile_phone: '13577071833' ltv: 0 phone_home: null phone_work: null referred_by: null address: city: Sibylmouth address: "79388 Cristobal Ways\nCruickshankview, GA 41591-5182" postal_code: 60787-7092 state: CA emergency_contact: email: colt.balistreri@hotmail.com name: 'Mrs. Abbey Gaylord MD' phone: '13573113802' relationship: wife birthday: '1990-05-05T12:02:12+00:00' creation_date: '2025-03-26T01:00:14+00:00' refreshed_at: null tags: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' custom_fields: [] can_contact_by_email: true can_contact_by_sms: true unsubscribed_email_at: null unsubscribed_sms_at: null unsubscribed_sms_text: false referrer: first_name: null last_name: null email: null phone: null location: null stats: period_count: null club_count: 0 open_discussions: 0 open_todos: 0 social: twitter: [] linkedin: [] facebook: [] instagram: [] properties: data: type: object properties: id: type: string example: '1187404954' team_id: type: string example: '4071' nullable: true profile_url: type: string example: 'https://loopspark.com/go/client/4071/1187404954' email: type: string example: emanuel.emmerich@yahoo.com nullable: true active: type: boolean example: true first_name: type: string example: Kirsten nullable: true last_name: type: string example: Ward nullable: true mobile_phone: type: string example: '13577071833' nullable: true can_contact_by_email: type: boolean example: true can_contact_by_sms: type: boolean example: true unsubscribed_email_at: type: string example: null nullable: true unsubscribed_sms_at: type: string example: null nullable: true is_prospect: type: boolean example: false created_at: type: string example: null nullable: true tags: type: array example: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' items: type: object properties: name: type: string example: Member assigned_at: type: string example: '2025-01-15T09:30:00+00:00' nullable: true custom_fields: type: array example: [] client: type: object properties: id: type: string example: '1187404954' team_id: type: string example: '4071' nullable: true profile_url: type: string example: 'https://loopspark.com/go/client/4071/1187404954' email: type: string example: emanuel.emmerich@yahoo.com nullable: true active: type: boolean example: true first_name: type: string example: Kirsten nullable: true last_name: type: string example: Ward nullable: true mobile_phone: type: string example: '13577071833' nullable: true ltv: type: integer example: 0 phone_home: type: string example: null nullable: true phone_work: type: string example: null nullable: true referred_by: type: string example: null nullable: true address: type: object properties: city: type: string example: Sibylmouth nullable: true address: type: string example: "79388 Cristobal Ways\nCruickshankview, GA 41591-5182" nullable: true postal_code: type: string example: 60787-7092 nullable: true state: type: string example: CA nullable: true emergency_contact: type: object properties: email: type: string example: colt.balistreri@hotmail.com nullable: true name: type: string example: 'Mrs. Abbey Gaylord MD' nullable: true phone: type: string example: '13573113802' nullable: true relationship: type: string example: wife nullable: true birthday: type: string example: '1990-05-05T12:02:12+00:00' nullable: true creation_date: type: string example: '2025-03-26T01:00:14+00:00' nullable: true refreshed_at: type: string example: null nullable: true tags: type: array example: - name: Member assigned_at: '2025-01-15T09:30:00+00:00' items: type: object properties: name: type: string example: Member assigned_at: type: string example: '2025-01-15T09:30:00+00:00' nullable: true custom_fields: type: array example: [] can_contact_by_email: type: boolean example: true can_contact_by_sms: type: boolean example: true unsubscribed_email_at: type: string example: null nullable: true unsubscribed_sms_at: type: string example: null nullable: true unsubscribed_sms_text: type: boolean example: false referrer: type: object properties: first_name: type: string example: null nullable: true last_name: type: string example: null nullable: true email: type: string example: null nullable: true phone: type: string example: null nullable: true location: type: string example: null nullable: true stats: type: object properties: period_count: type: string example: null nullable: true club_count: type: integer example: 0 open_discussions: type: integer example: 0 open_todos: type: integer example: 0 social: type: object properties: twitter: type: array example: [] linkedin: type: array example: [] facebook: type: array example: [] instagram: type: array example: [] nullable: true 400: description: '' content: application/json: schema: type: object example: error: true message: 'The contact does not have the tag signed-up' properties: error: type: boolean example: true message: type: string example: 'The contact does not have the tag signed-up' tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: tag: type: string description: 'The tag. Must be at least 1 character.' example: signed-up-flow required: - tag parameters: - in: path name: siteId description: 'The studio ID' example: '21225' required: true schema: type: string - in: path name: contactId description: 'The contact ID' example: '10000023' required: true schema: type: string '/api/franchise/v1/{siteId}/contacts/{contactId}/custom-fields': get: summary: 'Get Contact Custom Fields' operationId: getContactCustomFields description: "Retrieve all custom field values for a specific contact.\nReturns field definition along with current value." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: EMERGENCY_CONTACT value: 'Jane Doe - 555-1234' properties: data: type: array example: - id: EMERGENCY_CONTACT value: 'Jane Doe - 555-1234' items: type: object properties: id: type: string example: EMERGENCY_CONTACT value: type: string example: 'Jane Doe - 555-1234' tags: - Contacts post: summary: 'Update Contact Custom Fields' operationId: updateContactCustomFields description: "Batch update custom field values for a specific contact.\nCan update multiple fields in a single request." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: EMERGENCY_CONTACT value: 'Jane Doe - 555-5678' properties: data: type: array example: - id: EMERGENCY_CONTACT value: 'Jane Doe - 555-5678' items: type: object properties: id: type: string example: EMERGENCY_CONTACT value: type: string example: 'Jane Doe - 555-5678' tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: fields: type: array description: 'Array of field updates. Must have at least 1 items.' example: - id: EMERGENCY_CONTACT value: 'John Doe - 555-1234' - id: THREE_CS value: challenge items: type: object properties: '*': type: object description: '' example: id: architecto properties: id: type: string description: 'The custom field ID (e.g., "EMERGENCY_CONTACT")' example: architecto value: type: string description: 'nullable The field value' example: architecto required: - id id: type: string description: 'The custom field ID/slug (e.g., "EMERGENCY_CONTACT", "THREE_CS"). Must match an existing stored value.' example: EMERGENCY_CONTACT value: type: string description: 'The value to set. Use null to clear the field. Type depends on field definition (string, boolean, date, etc.).' example: 'John Doe - 555-1234' nullable: true required: - id required: - fields parameters: - in: path name: siteId description: "The studio's site identifier (e.g., MindBody site ID)." example: '100001' required: true schema: type: string - in: path name: contactId description: "The contact's external identifier (e.g., MindBody client ID)." example: '100000001' required: true schema: type: string '/api/franchise/v1/{siteId}/contacts/{contactId}/notes': post: summary: 'Create a Note' operationId: createANote description: "Adds a note to a Contact (a Client or a Prospect), found by its contact `id`, dated now. The note is plain text: HTML is shown as text, and line breaks are kept.\nTo categorize it, send the `id` of one of the studio's active note categories (see \"List Note Categories\").\nEach call creates a new note, so do not retry a request that already succeeded.\nThe note has no staff author; LoopSpark shows its author as \"Integration\"." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 note: 'Called about the 6-week challenge.
' note_category_id: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: '2026-09-28T14:05:00+00:00' properties: data: type: object properties: id: type: string example: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 note: type: string example: 'Called about the 6-week challenge.
' note_category_id: type: string example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 nullable: true created_at: type: string example: '2026-09-28T14:05:00+00:00' nullable: true 422: description: '' content: application/json: schema: type: object example: message: 'The note category is not available for this studio.' errors: note_category_id: - 'The note category is not available for this studio.' properties: message: type: string example: 'The note category is not available for this studio.' errors: type: object properties: note_category_id: type: array example: - 'The note category is not available for this studio.' items: type: string tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: note: type: string description: 'The note text, at least 2 characters. Plain text; line breaks are kept.' example: 'Called about the 6-week challenge.' note_category_id: type: string description: "Optional. The id of one of the studio's active note categories." example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 nullable: true required: - note parameters: - in: path name: siteId description: 'The studio ID.' example: '21225' required: true schema: type: string - in: path name: contactId description: 'The contact ID (a client or a prospect).' example: '10000023' required: true schema: type: string '/api/franchise/v1/{siteId}/contacts/{contactId}/messages': post: summary: 'Send a Text Message' operationId: sendATextMessage description: "Sends one SMS to a Contact (a Client or a Prospect), found by its contact `id`, from the studio's texting number, in the same conversation thread staff use in LoopSpark.\nPlaceholders are filled in as in LoopSpark: write the name in double curly braces, for example FIRST_NAME. The message can be at most 3 SMS segments long, counted before placeholders are filled in.\nOpt-outs (STOP) and the usual opt-out notice work exactly as for a staff send, and the text counts against the studio's SMS bundle.\nA `201` means the text was queued; delivery happens asynchronously. Each call sends a new text, so do not retry a request that already succeeded.\nThe text has no staff sender; the LoopSpark web app shows its sender as \"Integration\".\nReturns `422` when the person is muted, has opted out of texts, or has no valid mobile number, or when the text is empty once placeholders are filled in.\nReturns `403` when the studio is suspended." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 discussion_id: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: '2026-10-02T14:05:00+00:00' properties: data: type: object properties: id: type: string example: 3f0d6a52-8a4e-4c43-9b1e-6f3c2a1d7e90 discussion_id: type: string example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 created_at: type: string example: '2026-10-02T14:05:00+00:00' nullable: true 422: description: '' content: application/json: schema: type: object example: message: 'This client cannot be contacted by text message' errors: message: - 'This client cannot be contacted by text message' properties: message: type: string example: 'This client cannot be contacted by text message' errors: type: object properties: message: type: array example: - 'This client cannot be contacted by text message' items: type: string tags: - Contacts requestBody: required: true content: application/json: schema: type: object properties: message: type: string description: 'The text to send, at most 3 SMS segments before placeholders are filled in. Placeholders (a name such as FIRST_NAME in double curly braces) are filled in.' example: 'Hi there, see you at the 6pm class!' required: - message parameters: - in: path name: siteId description: 'The studio ID.' example: '21225' required: true schema: type: string - in: path name: contactId description: 'The contact ID (a client or a prospect).' example: '10000023' required: true schema: type: string /api/franchise/v1/custom-fields: get: summary: 'Get Custom Fields' operationId: getCustomFields description: 'Retrieve all custom field definitions for this franchise.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: EMERGENCY_CONTACT name: 'Emergency Contact' type: string field_options: null description: 'Person to contact in case of emergency' visible_in_ui: true editable_by_staff: true sort_order: 0 - id: MEMBERSHIP_TYPE name: 'Membership Type' type: single_select field_options: - value: basic label: Basic is_active: true sort_order: 1 - value: premium label: Premium is_active: true sort_order: 2 description: 'Choose membership level' visible_in_ui: true editable_by_staff: false sort_order: 1 properties: data: type: array example: - id: EMERGENCY_CONTACT name: 'Emergency Contact' type: string field_options: null description: 'Person to contact in case of emergency' visible_in_ui: true editable_by_staff: true sort_order: 0 - id: MEMBERSHIP_TYPE name: 'Membership Type' type: single_select field_options: - value: basic label: Basic is_active: true sort_order: 1 - value: premium label: Premium is_active: true sort_order: 2 description: 'Choose membership level' visible_in_ui: true editable_by_staff: false sort_order: 1 items: type: object properties: id: type: string example: EMERGENCY_CONTACT name: type: string example: 'Emergency Contact' type: type: string example: string field_options: type: string example: null nullable: true description: type: string example: 'Person to contact in case of emergency' nullable: true visible_in_ui: type: boolean example: true editable_by_staff: type: boolean example: true sort_order: type: integer example: 0 tags: - 'Custom Fields' '/api/franchise/v1/{siteId}/tags_deferred': post: summary: 'Add deferred tag' operationId: addDeferredTag description: "Add one or multiple deferred tag rules for a specific Studio.\nLoopSpark will automatically add the chosen tag when the rule is applied." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - client_id: '776' tag: eius valid_since: '2026-10-03T08:00:36+00:00' - client_id: '575' tag: corporis valid_since: '2026-10-03T08:00:36+00:00' properties: data: type: array example: - client_id: '776' tag: eius valid_since: '2026-10-03T08:00:36+00:00' - client_id: '575' tag: corporis valid_since: '2026-10-03T08:00:36+00:00' items: type: object properties: client_id: type: string example: '776' tag: type: string example: eius valid_since: type: string example: '2026-10-03T08:00:36+00:00' tags: - 'Deferred Tags' requestBody: required: false content: application/json: schema: type: object properties: clients: type: array description: '' example: - [] items: type: object properties: id: type: string description: 'The MBO UniqueID of the client, or the `ID` of a Prospect.' example: '1000017' tag: type: string description: 'The name of the tag to eventually add to this client. The Tag is not required to exist at the moment, it will be created the first time thi rule is applied. Must be at least 3 characters.' example: 'true' required: - id - tag parameters: - in: path name: siteId description: 'The studio ID' example: '21225' required: true schema: type: string '/api/franchise/v1/{siteId}/tags_deferred/{uniqueid}': delete: summary: 'Remove Deferred Tag rule' operationId: removeDeferredTagRule description: 'Removes a defered tag rule for a specific Client' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: error: false deleted: true success: true properties: error: type: boolean example: false deleted: type: boolean example: true success: type: boolean example: true 400: description: '' content: application/json: schema: type: object example: error: true message: 'No rule was found with that unique id and type combination' properties: error: type: boolean example: true message: type: string example: 'No rule was found with that unique id and type combination' tags: - 'Deferred Tags' requestBody: required: true content: application/json: schema: type: object properties: tag: type: string description: 'The name of the tag of the deferred tag rule.' example: beginner required: - tag parameters: - in: path name: siteId description: 'The studio ID' example: '21225' required: true schema: type: string - in: path name: uniqueid description: 'The MBO UniqueID of the Client, or the `ID` of a Prospect' example: '10000012' required: true schema: type: string '/api/franchise/v1/{siteId}/note-categories': get: summary: 'List Note Categories' operationId: listNoteCategories description: "The studio's active note categories. Send a category's `id` as `note_category_id` when creating a note." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 name: 'Objection Note' properties: data: type: array example: - id: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 name: 'Objection Note' items: type: object properties: id: type: string example: 9b2f0c1e-4c1a-4a53-9a5e-2f7f3d1c8b10 name: type: string example: 'Objection Note' tags: - 'Note Categories' parameters: - in: path name: siteId description: 'The studio ID' example: '21225' required: true schema: type: string /api/franchise/v1/search: get: summary: 'Search Contacts' operationId: searchContacts description: 'Search for a Contact across the whole franchise.' parameters: - in: query name: per_page description: 'The amount of contacts to return. Default: `50`. Must be at least 1. Must not be greater than 50.' example: 10.0 required: false schema: type: number description: 'The amount of contacts to return. Default: `50`. Must be at least 1. Must not be greater than 50.' example: 10.0 - in: query name: page description: 'The page number. Must be at least 1.' example: 1.0 required: false schema: type: number description: 'The page number. Must be at least 1.' example: 1.0 - in: query name: sort_by description: 'Sorts the results by `id` or `email`. Default: `email`.' example: id required: false schema: type: string description: 'Sorts the results by `id` or `email`. Default: `email`.' example: id enum: - email - id - in: query name: sort_direction description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.' example: asc required: false schema: type: string description: 'Sorts the results `asc` for ascending order, `desc` for descending order. Default: `asc`.' example: asc enum: - asc - desc - in: query name: email description: 'Return only Contacts with the selected email. Required if mobile_phone not present. This field is required whenmobile_phone is not present. Must be a valid email address.'
example: ''
required: false
schema:
type: string
description: 'Return only Contacts with the selected email. Required if mobile_phone not present. This field is required when mobile_phone is not present. Must be a valid email address.'
example: ''
-
in: query
name: mobile_phone
description: 'Return only Contacts with the selected phone number. Phone format is 12223334444. This field is required when email is not present.'
example: ''
required: false
schema:
type: string
description: 'Return only Contacts with the selected phone number. Phone format is 12223334444. This field is required when email is not present.'
example: ''
-
in: query
name: tags
description: 'Filter Contacts by assigned tag(s). Array.'
example:
- signed-up
required: false
schema:
type: array
description: 'Filter Contacts by assigned tag(s). Array.'
example:
- signed-up
items:
type: string
-
in: query
name: site_ids
description: 'Filter Contacts only from a list of siteIDs .'
example:
- ''
required: false
schema:
type: array
description: 'Filter Contacts only from a list of siteIDs .'
example:
- ''
items:
type: string
responses:
200:
description: ''
content:
application/json:
schema:
type: object
example:
data:
-
id: '822569775'
team_id: '6789'
profile_url: 'https://loopspark.com/go/client/6789/822569775'
email: kconsidine@hotmail.com
active: true
first_name: Pauline
last_name: Schultz
mobile_phone: '13577773167'
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
is_prospect: false
created_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
client:
id: '822569775'
team_id: '6789'
profile_url: 'https://loopspark.com/go/client/6789/822569775'
email: kconsidine@hotmail.com
active: true
first_name: Pauline
last_name: Schultz
mobile_phone: '13577773167'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'North Eileen'
address: "4706 Madisen Avenue Suite 636\nNew Josianetown, WV 49408-0159"
postal_code: 79150-6985
state: CA
emergency_contact:
email: mitchell.matilda@yahoo.com
name: 'Mina Bauch'
phone: '13573073143'
relationship: wife
birthday: '1972-08-25T23:37:54+00:00'
creation_date: '2023-10-10T09:48:20+00:00'
refreshed_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
-
id: '26665356'
team_id: '9537'
profile_url: 'https://loopspark.com/go/client/9537/26665356'
email: schmitt.eleanore@nienow.com
active: true
first_name: Kenna
last_name: Ortiz
mobile_phone: '13579799206'
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
is_prospect: false
created_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
client:
id: '26665356'
team_id: '9537'
profile_url: 'https://loopspark.com/go/client/9537/26665356'
email: schmitt.eleanore@nienow.com
active: true
first_name: Kenna
last_name: Ortiz
mobile_phone: '13579799206'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'New Greyson'
address: "6747 Wolf Light\nNew Brookeburgh, TX 37725"
postal_code: 56023-5576
state: CA
emergency_contact:
email: ritchie.dorris@klocko.com
name: 'Trinity Swaniawski'
phone: '13572063041'
relationship: wife
birthday: '1987-05-12T05:35:52+00:00'
creation_date: '2024-05-14T05:57:03+00:00'
refreshed_at: null
tags:
-
name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
properties:
data:
type: array
example:
-
id: '822569775'
team_id: '6789'
profile_url: 'https://loopspark.com/go/client/6789/822569775'
email: kconsidine@hotmail.com
active: true
first_name: Pauline
last_name: Schultz
mobile_phone: '13577773167'
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
is_prospect: false
created_at: null
tags:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
client:
id: '822569775'
team_id: '6789'
profile_url: 'https://loopspark.com/go/client/6789/822569775'
email: kconsidine@hotmail.com
active: true
first_name: Pauline
last_name: Schultz
mobile_phone: '13577773167'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'North Eileen'
address: "4706 Madisen Avenue Suite 636\nNew Josianetown, WV 49408-0159"
postal_code: 79150-6985
state: CA
emergency_contact:
email: mitchell.matilda@yahoo.com
name: 'Mina Bauch'
phone: '13573073143'
relationship: wife
birthday: '1972-08-25T23:37:54+00:00'
creation_date: '2023-10-10T09:48:20+00:00'
refreshed_at: null
tags:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
-
id: '26665356'
team_id: '9537'
profile_url: 'https://loopspark.com/go/client/9537/26665356'
email: schmitt.eleanore@nienow.com
active: true
first_name: Kenna
last_name: Ortiz
mobile_phone: '13579799206'
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
is_prospect: false
created_at: null
tags:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
client:
id: '26665356'
team_id: '9537'
profile_url: 'https://loopspark.com/go/client/9537/26665356'
email: schmitt.eleanore@nienow.com
active: true
first_name: Kenna
last_name: Ortiz
mobile_phone: '13579799206'
ltv: 0
phone_home: null
phone_work: null
referred_by: null
address:
city: 'New Greyson'
address: "6747 Wolf Light\nNew Brookeburgh, TX 37725"
postal_code: 56023-5576
state: CA
emergency_contact:
email: ritchie.dorris@klocko.com
name: 'Trinity Swaniawski'
phone: '13572063041'
relationship: wife
birthday: '1987-05-12T05:35:52+00:00'
creation_date: '2024-05-14T05:57:03+00:00'
refreshed_at: null
tags:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
custom_fields: []
can_contact_by_email: true
can_contact_by_sms: true
unsubscribed_email_at: null
unsubscribed_sms_at: null
unsubscribed_sms_text: false
referrer:
first_name: null
last_name: null
email: null
phone: null
location: null
stats:
period_count: 12
club_count: 0
open_discussions: 0
open_todos: 0
social:
twitter: []
linkedin: []
facebook: []
instagram: []
items:
type: object
properties:
id:
type: string
example: '822569775'
team_id:
type: string
example: '6789'
nullable: true
profile_url:
type: string
example: 'https://loopspark.com/go/client/6789/822569775'
email:
type: string
example: kconsidine@hotmail.com
nullable: true
active:
type: boolean
example: true
first_name:
type: string
example: Pauline
nullable: true
last_name:
type: string
example: Schultz
nullable: true
mobile_phone:
type: string
example: '13577773167'
nullable: true
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
unsubscribed_email_at:
type: string
example: null
nullable: true
unsubscribed_sms_at:
type: string
example: null
nullable: true
is_prospect:
type: boolean
example: false
created_at:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
client:
type: object
properties:
id:
type: string
example: '822569775'
team_id:
type: string
example: '6789'
nullable: true
profile_url:
type: string
example: 'https://loopspark.com/go/client/6789/822569775'
email:
type: string
example: kconsidine@hotmail.com
nullable: true
active:
type: boolean
example: true
first_name:
type: string
example: Pauline
nullable: true
last_name:
type: string
example: Schultz
nullable: true
mobile_phone:
type: string
example: '13577773167'
nullable: true
ltv:
type: integer
example: 0
phone_home:
type: string
example: null
nullable: true
phone_work:
type: string
example: null
nullable: true
referred_by:
type: string
example: null
nullable: true
address:
type: object
properties:
city:
type: string
example: 'North Eileen'
nullable: true
address:
type: string
example: "4706 Madisen Avenue Suite 636\nNew Josianetown, WV 49408-0159"
nullable: true
postal_code:
type: string
example: 79150-6985
nullable: true
state:
type: string
example: CA
nullable: true
emergency_contact:
type: object
properties:
email:
type: string
example: mitchell.matilda@yahoo.com
nullable: true
name:
type: string
example: 'Mina Bauch'
nullable: true
phone:
type: string
example: '13573073143'
nullable: true
relationship:
type: string
example: wife
nullable: true
birthday:
type: string
example: '1972-08-25T23:37:54+00:00'
nullable: true
creation_date:
type: string
example: '2023-10-10T09:48:20+00:00'
nullable: true
refreshed_at:
type: string
example: null
nullable: true
tags:
type: array
example:
- name: Member
assigned_at: '2025-01-15T09:30:00+00:00'
items:
type: object
properties:
name:
type: string
example: Member
assigned_at:
type: string
example: '2025-01-15T09:30:00+00:00'
nullable: true
custom_fields:
type: array
example: []
can_contact_by_email:
type: boolean
example: true
can_contact_by_sms:
type: boolean
example: true
unsubscribed_email_at:
type: string
example: null
nullable: true
unsubscribed_sms_at:
type: string
example: null
nullable: true
unsubscribed_sms_text:
type: boolean
example: false
referrer:
type: object
properties:
first_name:
type: string
example: null
nullable: true
last_name:
type: string
example: null
nullable: true
email:
type: string
example: null
nullable: true
phone:
type: string
example: null
nullable: true
location:
type: string
example: null
nullable: true
stats:
type: object
properties:
period_count:
type: integer
example: 12
nullable: true
club_count:
type: integer
example: 0
open_discussions:
type: integer
example: 0
open_todos:
type: integer
example: 0
social:
type: object
properties:
twitter:
type: array
example: []
linkedin:
type: array
example: []
facebook:
type: array
example: []
instagram:
type: array
example: []
nullable: true
tags:
- Search