REST API reference

Mariana Tek API

15 endpoints for Mariana Tek. Each one is a POST with a JSON body, called with your API key.

Base URL
https://cotlet.dev/api/v1/mariana-tek
Connects with
Your own Mariana Tek Admin account (studio owner or employee); what your agent can do follows your role
Integration page
Mariana Tek
Mariana Tek Endpoints
Endpoint Access Description
list_locations read Your studio locations with address and time zone.
list_classes read Classes on the schedule of a location, with time, class type, instructor and open spots.
get_class_roster read Reservations in a class with spot, payment used and status, plus the waitlist and standby list.
find_customer read Search customer accounts by name, email or phone, as Find Customer does.
get_customer read Customer profile: contact details, tags, notes, active memberships and credit packages.
list_customer_reservations read Upcoming reservations or reservation history of a customer, with class, instructor, payment used and status.
list_customer_credits read Credit packages of a customer with remaining credits, expiration and usage history.
book_reservation write Reserve a spot for a customer in a class, paid with one of the customer's memberships or credits.
add_to_waitlist write Add a customer to the waitlist of a full class.
cancel_reservation write Cancel a reservation. Inside the late cancel window you choose whether the penalty applies.
check_in_customer write Mark a reservation as checked in.
give_complimentary_credits write Add complimentary credits of one credit type to a customer's account.
add_customer_note write Add a note to a customer account.
assign_substitute write Put a substitute instructor on a class. Customers are not emailed; use message_class for that.
message_class write Email everyone in a class, including waitlist and standby, from the studio's default address.

POST https://cotlet.dev/api/v1/mariana-tek/list_locations

Returns every studio location your Admin account can see. Use location_id from each item in list_classes. Times in other tools use the location's time zone.

Parameters

No parameters.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/list_locations \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("mariana-tek", "list_locations")
Node.js
const result = await cotlet.call('mariana-tek', 'list_locations');
CLI
cotlet call mariana-tek list_locations

Example response

{
  "locations": [
    {
      "location_id": "loc_01",
      "name": "Downtown Studio",
      "address": "120 Main St, Brooklyn, NY",
      "time_zone": "America/New_York"
    },
    {
      "location_id": "loc_02",
      "name": "Riverside Studio",
      "address": "48 River Rd, Hoboken, NJ",
      "time_zone": "America/New_York"
    }
  ]
}

POST https://cotlet.dev/api/v1/mariana-tek/list_classes

Returns the classes of one location between two dates, earliest first. Filter by instructor to find all classes of one person. Each item has the class_id that the roster and booking tools take, and the number of open spots.

Parameters

Parameters: list_classes
NameTypeDescription
location_id string Location ID from list_locations. Default: your main location.
from required date First day, inclusive.
to date Last day, inclusive. Default: same as from.
instructor string Only classes taught by this instructor (name).

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/list_classes \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-10-01"}'
Python
result = client.call("mariana-tek", "list_classes", {"from":"2026-10-01"})
Node.js
const result = await cotlet.call('mariana-tek', 'list_classes', {"from":"2026-10-01"});
CLI
cotlet call mariana-tek list_classes --data '{"from":"2026-10-01"}'

Example response

{
  "classes": [
    {
      "class_id": "418203",
      "name": "Pilates Sculpt",
      "start": "2026-10-17T09:00:00-04:00",
      "instructor": "Sam Ortiz",
      "capacity": 3,
      "spots_open": 0,
      "waitlist": 1
    },
    {
      "class_id": "418230",
      "name": "HIIT 45",
      "start": "2026-10-17T18:00:00-04:00",
      "instructor": "Alex Rivera",
      "capacity": 20,
      "spots_open": 6,
      "waitlist": 0
    }
  ]
}

POST https://cotlet.dev/api/v1/mariana-tek/get_class_roster

Returns the roster of one class: every reservation with the spot (Pick-A-Spot layouts only), the payment used and its status, then the waitlist and the standby list. Waitlisted customers are not on the class until Mariana Tek auto-fills a freed spot or staff add them. Use reservation_id from each item to check in or cancel.

Parameters

Parameters: get_class_roster
NameTypeDescription
class_id required string Class ID from list_classes.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/get_class_roster \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"class_id":"class_8c41d2"}'
Python
result = client.call("mariana-tek", "get_class_roster", {"class_id":"class_8c41d2"})
Node.js
const result = await cotlet.call('mariana-tek', 'get_class_roster', {"class_id":"class_8c41d2"});
CLI
cotlet call mariana-tek get_class_roster --data '{"class_id":"class_8c41d2"}'

Example response

{
  "class_id": "418203",
  "class": "Pilates Sculpt",
  "capacity": 3,
  "reservations": [
    {
      "reservation_id": "7710342",
      "customer_id": "90517",
      "customer": "Jamie Park",
      "spot": "1",
      "payment_used": "Unlimited Monthly",
      "status": "reserved"
    },
    {
      "reservation_id": "7710343",
      "customer_id": "90544",
      "customer": "Riley Chen",
      "spot": "2",
      "payment_used": "10 Class Pack",
      "status": "reserved"
    },
    {
      "reservation_id": "7710344",
      "customer_id": "90561",
      "customer": "Morgan Diaz",
      "spot": "3",
      "payment_used": "Intro Offer",
      "status": "reserved"
    }
  ],
  "waitlist": [
    {
      "customer_id": "90602",
      "customer": "Casey Wong",
      "payment_option": "5 Class Pack"
    }
  ],
  "standby": []
}

POST https://cotlet.dev/api/v1/mariana-tek/find_customer

Searches customer accounts by name, email or phone number and returns the matches with their customer_id. Pass customer_id to get_customer and the booking tools.

Parameters

Parameters: find_customer
NameTypeDescription
query required string Name, email or phone number.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/find_customer \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"query"}'
Python
result = client.call("mariana-tek", "find_customer", {"query":"query"})
Node.js
const result = await cotlet.call('mariana-tek', 'find_customer', {"query":"query"});
CLI
cotlet call mariana-tek find_customer --data '{"query":"query"}'

Example response

{
  "customers": [
    {
      "customer_id": "90517",
      "name": "Jamie Park",
      "email": "jamie@example.com",
      "phone": "+1 555 0100"
    }
  ]
}

POST https://cotlet.dev/api/v1/mariana-tek/get_customer

Returns one customer account with contact details, tags, notes, active memberships and credit packages. Each membership or package has an id you pass as payment_option_id when booking.

Parameters

Parameters: get_customer
NameTypeDescription
customer_id required string Customer ID from find_customer.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/get_customer \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer_id":"customer_8c41d2"}'
Python
result = client.call("mariana-tek", "get_customer", {"customer_id":"customer_8c41d2"})
Node.js
const result = await cotlet.call('mariana-tek', 'get_customer', {"customer_id":"customer_8c41d2"});
CLI
cotlet call mariana-tek get_customer --data '{"customer_id":"customer_8c41d2"}'

Example response

{
  "customer_id": "90517",
  "name": "Jamie Park",
  "email": "jamie@example.com",
  "tags": [
    "founding member"
  ],
  "notes": [],
  "memberships": [
    {
      "payment_option_id": "mbr_2231",
      "name": "Unlimited Monthly",
      "status": "active"
    }
  ],
  "credit_packages": []
}

POST https://cotlet.dev/api/v1/mariana-tek/list_customer_reservations

Returns the reservations of one customer, upcoming by default, soonest first. Switch scope to history to see past classes with their final status. Use reservation_id from each item to cancel.

Parameters

Parameters: list_customer_reservations
NameTypeDescription
customer_id required string Customer ID from find_customer.
scope enum upcoming or history. Default: upcoming.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/list_customer_reservations \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer_id":"customer_8c41d2"}'
Python
result = client.call("mariana-tek", "list_customer_reservations", {"customer_id":"customer_8c41d2"})
Node.js
const result = await cotlet.call('mariana-tek', 'list_customer_reservations', {"customer_id":"customer_8c41d2"});
CLI
cotlet call mariana-tek list_customer_reservations --data '{"customer_id":"customer_8c41d2"}'

Example response

{
  "reservations": [
    {
      "reservation_id": "7710401",
      "class_id": "418251",
      "class": "Pilates Sculpt",
      "start": "2026-10-19T07:00:00-04:00",
      "instructor": "Sam Ortiz",
      "payment_used": "Unlimited Monthly",
      "status": "reserved"
    }
  ]
}

POST https://cotlet.dev/api/v1/mariana-tek/list_customer_credits

Returns the credit packages of one customer with credits remaining, the expiration date and how the credits were used. Complimentary credits are included. Set status to expired to see packages that have run out.

Parameters

Parameters: list_customer_credits
NameTypeDescription
customer_id required string Customer ID from find_customer.
status enum active or expired. Default: active.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/list_customer_credits \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer_id":"customer_8c41d2"}'
Python
result = client.call("mariana-tek", "list_customer_credits", {"customer_id":"customer_8c41d2"})
Node.js
const result = await cotlet.call('mariana-tek', 'list_customer_credits', {"customer_id":"customer_8c41d2"});
CLI
cotlet call mariana-tek list_customer_credits --data '{"customer_id":"customer_8c41d2"}'

Example response

{
  "credit_packages": [
    {
      "name": "10 Class Pack",
      "credits_remaining": 2,
      "expires_on": "2026-10-31",
      "usage": [
        {
          "class": "HIIT 45",
          "date": "2026-10-08"
        }
      ]
    }
  ]
}

Book reservation

write Confirm

POST https://cotlet.dev/api/v1/mariana-tek/book_reservation

Books one customer into one class and pays with a membership or credit package of that customer. Leave payment_option_id out to use the first valid option. For Pick-A-Spot classes pass spot, otherwise any open spot is used. The reservation is pending until Mariana Tek confirms it. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: book_reservation
NameTypeDescription
class_id required string Class ID from list_classes.
customer_id required string Customer ID from find_customer.
payment_option_id string Membership or credit package from get_customer. Default: the first valid option.
spot string Spot for Pick-A-Spot layouts. Default: any open spot.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/book_reservation \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"class_id":"418203","customer_id":"90517","payment_option_id":"mbr_2231"}'
Python
result = client.call("mariana-tek", "book_reservation", {"class_id":"418203","customer_id":"90517","payment_option_id":"mbr_2231"})
Node.js
const result = await cotlet.call('mariana-tek', 'book_reservation', {"class_id":"418203","customer_id":"90517","payment_option_id":"mbr_2231"});
CLI
cotlet call mariana-tek book_reservation --data '{"class_id":"418203","customer_id":"90517","payment_option_id":"mbr_2231"}'

Example response

{
  "reservation_id": "7710342",
  "class_id": "418203",
  "class": "Pilates Sculpt",
  "start": "2026-10-17T09:00:00-04:00",
  "customer": "Jamie Park",
  "payment_used": "Unlimited Monthly",
  "spot": "1",
  "status": "pending"
}

Add to waitlist

write Confirm

POST https://cotlet.dev/api/v1/mariana-tek/add_to_waitlist

Puts one customer on the waitlist of a class that is full, with the payment option you choose. The customer is not booked yet: inside the waitlist auto-fill window Mariana Tek moves the top customer in when a spot frees up; after it, staff add people by hand. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: add_to_waitlist
NameTypeDescription
class_id required string Class ID from list_classes.
customer_id required string Customer ID from find_customer.
payment_option_id string Membership or credit package from get_customer. Default: the first valid option.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/add_to_waitlist \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"class_id":"class_8c41d2","customer_id":"customer_8c41d2"}'
Python
result = client.call("mariana-tek", "add_to_waitlist", {"class_id":"class_8c41d2","customer_id":"customer_8c41d2"})
Node.js
const result = await cotlet.call('mariana-tek', 'add_to_waitlist', {"class_id":"class_8c41d2","customer_id":"customer_8c41d2"});
CLI
cotlet call mariana-tek add_to_waitlist --data '{"class_id":"class_8c41d2","customer_id":"customer_8c41d2"}'

Example response

{
  "class_id": "418203",
  "customer_id": "90602",
  "customer": "Casey Wong",
  "payment_option": "5 Class Pack",
  "status": "waitlisted",
  "position": 1
}

Cancel reservation

write Confirm

POST https://cotlet.dev/api/v1/mariana-tek/cancel_reservation

Cancels one reservation. Inside the late cancel window, waive_penalty true cancels without the fee (a Graced Cancel) if your role has that permission; without it the fee applies. The cancellation stays in the customer's history. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: cancel_reservation
NameTypeDescription
reservation_id required string Reservation ID from get_class_roster or list_customer_reservations.
waive_penalty boolean Cancel without the late cancel fee, if your role allows it. Default: false.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/cancel_reservation \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reservation_id":"7710401","waive_penalty":true}'
Python
result = client.call("mariana-tek", "cancel_reservation", {"reservation_id":"7710401","waive_penalty":True})
Node.js
const result = await cotlet.call('mariana-tek', 'cancel_reservation', {"reservation_id":"7710401","waive_penalty":true});
CLI
cotlet call mariana-tek cancel_reservation --data '{"reservation_id":"7710401","waive_penalty":true}'

Example response

{
  "reservation_id": "7710401",
  "class_id": "418251",
  "status": "graced_cancel",
  "penalty_applied": false
}

Check in customer

write Confirm

POST https://cotlet.dev/api/v1/mariana-tek/check_in_customer

Marks one reservation as checked in. It takes a reservation_id, so waitlisted customers cannot be checked in. Nothing is sent to the customer. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: check_in_customer
NameTypeDescription
reservation_id required string Reservation ID from get_class_roster or list_customer_reservations.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/check_in_customer \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reservation_id":"reservation_8c41d2"}'
Python
result = client.call("mariana-tek", "check_in_customer", {"reservation_id":"reservation_8c41d2"})
Node.js
const result = await cotlet.call('mariana-tek', 'check_in_customer', {"reservation_id":"reservation_8c41d2"});
CLI
cotlet call mariana-tek check_in_customer --data '{"reservation_id":"reservation_8c41d2"}'

Example response

{
  "reservation_id": "7710342",
  "class_id": "418203",
  "customer": "Jamie Park",
  "status": "checked_in"
}

POST https://cotlet.dev/api/v1/mariana-tek/give_complimentary_credits

Gives one customer a quantity of one credit type, like Give Credits on the Credits tab in Admin. The credit type must be active in your studio. Credits expire at midnight local time on the date you set, and the reason is saved on the account. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: give_complimentary_credits
NameTypeDescription
customer_id required string Customer ID from find_customer.
credit_type required string Credit type name, as set up in your studio.
quantity required integer Number of credits.
expires_on required date Expiration, at midnight local time.
reason required string Reason saved on the account.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/give_complimentary_credits \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer_id":"90517","credit_type":"Class Credit","quantity":1,"expires_on":"2026-11-11","reason":"Class cut short"}'
Python
result = client.call("mariana-tek", "give_complimentary_credits", {"customer_id":"90517","credit_type":"Class Credit","quantity":1,"expires_on":"2026-11-11","reason":"Class cut short"})
Node.js
const result = await cotlet.call('mariana-tek', 'give_complimentary_credits', {"customer_id":"90517","credit_type":"Class Credit","quantity":1,"expires_on":"2026-11-11","reason":"Class cut short"});
CLI
cotlet call mariana-tek give_complimentary_credits --data '{"customer_id":"90517","credit_type":"Class Credit","quantity":1,"expires_on":"2026-11-11","reason":"Class cut short"}'

Example response

{
  "customer_id": "90517",
  "credit_type": "Class Credit",
  "quantity": 1,
  "expires_on": "2026-11-16",
  "reason": "Class cut short by power outage",
  "status": "given"
}

POST https://cotlet.dev/api/v1/mariana-tek/add_customer_note

Adds a note to one customer account. It sends nothing to the customer or anyone else, so add_customer_note runs without asking first.

Parameters

Parameters: add_customer_note
NameTypeDescription
customer_id required string Customer ID from find_customer.
text required string Note text.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/add_customer_note \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer_id":"customer_8c41d2","text":"text"}'
Python
result = client.call("mariana-tek", "add_customer_note", {"customer_id":"customer_8c41d2","text":"text"})
Node.js
const result = await cotlet.call('mariana-tek', 'add_customer_note', {"customer_id":"customer_8c41d2","text":"text"});
CLI
cotlet call mariana-tek add_customer_note --data '{"customer_id":"customer_8c41d2","text":"text"}'

Example response

{
  "customer_id": "90517",
  "note": "Travelling Oct 19 to 23, late cancels waived by studio.",
  "status": "added"
}

Assign substitute

write Confirm

POST https://cotlet.dev/api/v1/mariana-tek/assign_substitute

Sets a substitute instructor on one class. It changes the instructor only and sends no email; use message_class to tell the class. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: assign_substitute
NameTypeDescription
class_id required string Class ID from list_classes.
instructor required string Substitute instructor name.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/assign_substitute \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"class_id":"418230","instructor":"Taylor Kim"}'
Python
result = client.call("mariana-tek", "assign_substitute", {"class_id":"418230","instructor":"Taylor Kim"})
Node.js
const result = await cotlet.call('mariana-tek', 'assign_substitute', {"class_id":"418230","instructor":"Taylor Kim"});
CLI
cotlet call mariana-tek assign_substitute --data '{"class_id":"418230","instructor":"Taylor Kim"}'

Example response

{
  "class_id": "418230",
  "class": "HIIT 45",
  "instructor": "Taylor Kim",
  "previous_instructor": "Alex Rivera",
  "customers_notified": false
}

Message class

write Confirm

POST https://cotlet.dev/api/v1/mariana-tek/message_class

Emails everyone booked in one class, plus the waitlist and standby customers, from the studio's default address. The response counts the recipients. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: message_class
NameTypeDescription
class_id required string Class ID from list_classes.
message required string Message text.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/mariana-tek/message_class \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"class_id":"class_8c41d2","message":"message"}'
Python
result = client.call("mariana-tek", "message_class", {"class_id":"class_8c41d2","message":"message"})
Node.js
const result = await cotlet.call('mariana-tek', 'message_class', {"class_id":"class_8c41d2","message":"message"});
CLI
cotlet call mariana-tek message_class --data '{"class_id":"class_8c41d2","message":"message"}'

Example response

{
  "class_id": "418230",
  "recipients": 14,
  "reservations": 12,
  "waitlist": 2,
  "standby": 0,
  "status": "sent"
}