YOGO API

Your data,
on your terms.

The YOGO MCP server connects your studio directly to Claude Desktop, Claude Code and Gemini — ask in natural language, get answers in seconds. Or use the underlying REST API to build your own integrations with CRM, BI stack or staff app.

REST & JSON MCP-ready EU-hosted
first-call.sh
# Asked in Claude with YOGO MCP
> How many customers signed up
  last month?

# Claude calls the MCP tool:
list_customers(auto_paginate: true)

< 147 new customers in April — 23%
  more than March. Want a breakdown?
# A first call — fetch your customers
curl https://api.yogobooking.com/customers \
  -H "X-API-KEY: your_api_key_here"
// A first call — fetch your customers
const res = await fetch(
  'https://api.yogobooking.com/customers',
  { headers: { 'X-API-KEY': process.env.YOGO_KEY } }
);

const { data, hasMore, next } = await res.json();
Real integrations

Examples you can build this week.

This isn't theory. This is exactly what the YOGO API is designed for. Each integration takes a developer a few days of work — and saves you manual labor for the rest of your studio's lifetime.

Scheduling

Sync classes as shifts to Planday, Tamigo or Sameworks.

Pull the class schedule out of YOGO and create shifts automatically in your scheduling system. The teacher sees their YOGO classes as proper shifts alongside the rest of the team — and the payroll export matches what was actually taught.

GET /classes GET /teachers nightly sync
// Daily: create shifts in Planday
const classes = await paginate(
  `${YOGO}/classes?from=today&to=+14d`
);

for (const c of classes) {
  for (const teacherId of c.teacherIds) {
    await planday.shifts.create({
      employeeId: mapTeacher(teacherId),
      departmentId: DEPT,
      startDateTime: c.startsAt,
      endDateTime: c.endsAt
    });
  }
}
Teacher swap in Claude

Reassign teachers from a chat — without opening the admin panel.

Ask Claude in natural language. It finds the class and the teacher via list_classes and list_teachers, then runs set_class_teachers. Every write is logged in the audit log and can be retrieved via list_write_logs.

list_classes list_teachers set_class_teachers list_write_logs
# Example prompt in Claude Desktop
> Put Mette on Vinyasa Thursday 07:00.

# Claude finds the class and teacher:
list_classes({ from: "2026-05-14", to: "2026-05-14" })
list_teachers({ search: "Mette" })

# Writes the change:
set_class_teachers({
  classId: 12345,
  teacherIds: [678]
})

# Audit log:
list_write_logs({ entityType: "class.teachers" })
CRM & email

Sync members into HubSpot, Mailchimp or Klaviyo.

Run a nightly job that pulls all customers with their booking history and pushes them into your marketing platform. Segment on actual behaviour — active, lapsed, newly signed up — and send relevant campaigns.

GET /customers GET /bookings cursor pagination
# Nightly: sync customers to Mailchimp
let cursor;
do {
  const res = await fetch(
    `${YOGO}/customers?after=${cursor || ''}`,
    { headers: { 'X-API-KEY': KEY } }
  ).then(r => r.json());

  await mailchimp.lists.batchSubscribe(
    LIST_ID,
    res.data.map(toMailchimpMember)
  );

  cursor = res.hasMore ? extractAfter(res.next) : null;
} while (cursor);
BI & reporting

Live dashboard in Power BI or Looker Studio.

Pull bookings and class data into your BI stack — combined with finance data from your accounting system, fitness data from Strava, or whatever else you run. Finally, a holistic management report.

GET /classes GET /bookings GET /customers
# Daily ETL → Power BI dataset
const bookings = await paginate(
  `${YOGO}/bookings?from=${yesterday}`
);

// Bookings + class expansion (requires expand=class)
const bookings = await paginate(
  `${YOGO}/bookings?from=yesterday&to=today&expand=class`
);

const rows = bookings.map(b => ({
  date: b.class.startsAt,
  className: b.class.className,
  status: b.cancelledAt ? 'cancelled'
        : b.checkedInAt ? 'checked-in'
        : 'booked',
  customerId: b.customerId
}));

await powerbi.pushRows(DATASET, rows);
Staff app

Push teachers and classes into your branded staff app.

Sync the class schedule and teacher records to your staff app — for example Monotree — so the team has today's shifts, contact info and class details in their pocket, alongside onboarding and internal communications. One app, one source of truth.

GET /classes GET /teachers nightly sync
// Daily push to Monotree
const classes = await paginate(
  `${YOGO}/classes?from=today&to=+14d&expand=classType,room`
);

const shifts = classes.map(c => ({
  date: c.startsAt,
  title: c.classType.name,
  teacherIds: c.teacherIds,
  room: c.room.name
}));

await monotree.shifts.upsert(shifts);
KK
Inspiration · Open source

Kristian built an sGTM integration — and open-sourced it.

Kristian Krogh Bang has built an open-source pipeline that polls /orders, /bookings and /customers every 60 seconds and forwards the data to server-side GTM — and from there to GA4, Meta CAPI, Klaviyo or whatever you run. The whole project is Apache 2.0 licensed on GitHub. A solid reference if you want to build something similar.

AI-ready · MCP

Your entire studio.
In one chat.

The YOGO MCP server runs at mcp.yogobooking.com/mcp and exposes every REST endpoint as an MCP tool. Connect it to Claude Desktop, Claude Code or Gemini using your existing API key — same auth, same audit log. No glue code, no servers for you to run.

yogo-mcp · connected
L
You
What classes are on the schedule next week?
C
Claude
Let me check the schedule.
tool_calllist_classes(from: "2026-05-11", expand: "teachers")
C
Claude
You have 24 classes next week. Vinyasa Thursday 07:00 has no teacher assigned — want me to put Mette on it?

Your whole studio as tools

Customers, teachers, orders, bookings, classes — every REST endpoint is exposed as an MCP tool. Including set_class_teachers for reassigning teachers straight from chat.

Same API key, same rules

The MCP server uses your existing API key as a bearer token. Same plan gating and same audit log via list_write_logs.

Connected in 5 minutes

Claude Desktop, Claude Code and Gemini are supported. Add the server with a single CLI command or a config file — no code required.

ChatGPT and Claude.ai web are not supported yet — they require OAuth 2.1, which we are working on. Use Claude Desktop or Claude Code in the meantime.
Pricing

One flat price. Everything included.

API access is an add-on to the Studio and Studio+App plans.

€79 / month

Requires an active Studio or Studio+App plan.

  • Complete public documentation
  • Access to all existing endpoints
  • New endpoints as they ship — at no extra cost
  • EU-hosted, GDPR compliant

The fine print

We provide comprehensive API documentation, but we do not offer support for the integration process itself. This means you need the capacity to build and maintain your integration in-house. We of course make sure the API is continuously maintained and updated on our end. If you have questions about how the API works, you are welcome to reach out.

Questions and answers

The things we get asked most.

What is the YOGO API?

The YOGO API is an official REST API for the YOGO Booking platform. It lets yoga studios, fitness centers and wellness businesses pull their own data — customers, orders, bookings, classes, teachers — and build integrations with CRM, email marketing, BI stack, scheduling and staff apps.

How much does the YOGO API cost?

API access costs €79 per month and is an add-on to YOGO's Studio and Studio+App plans. The price includes access to all existing endpoints, the MCP server, and future endpoints at no extra cost. Complete public documentation is freely available at docs.api.yogobooking.com.

What is the YOGO MCP server?

The YOGO MCP server is a Model Context Protocol server that exposes YOGO's REST endpoints as tools directly inside Claude Desktop, Claude Code and Gemini. It runs at mcp.yogobooking.com/mcp, uses your existing API key as a bearer token, and shares the same audit log as the REST API. Connecting it takes 5 minutes and requires no code.

What integrations can I build with the YOGO API?

Typical integrations include: syncing customer data to CRM (HubSpot, Klaviyo, Mailchimp), live dashboards in BI tools (Power BI, Looker Studio, BigQuery), scheduling where teachers appear as shifts (Planday, Tamigo, Sameworks), branded staff apps with today's classes (e.g. Monotree), custom booking widgets on your own site (Squarespace, Webflow, Next.js), and server-side analytics tracking (sGTM → GA4, Meta CAPI). A developer can typically build a standard integration in a few days of work.

Does YOGO offer support for the integration process itself?

No. We provide comprehensive API documentation, but we do not offer support for the integration process itself. This means you need the capacity to build and maintain your integration in-house, or hire an external developer. We of course make sure the API is continuously maintained and updated on our end, and you are welcome to contact us with questions about API functionality.

Which YOGO plans have API access?

API access is available as an add-on to the YOGO Studio and Studio+App plans. You need an active Studio or Studio+App plan, and can then activate API access for €79/month.

Is the YOGO API GDPR compliant?

Yes. The YOGO API is EU-hosted and GDPR compliant. You retain full control over your own data — the API only exposes data from your own studio via an API key bound to your account.

Ready to build?

Start with the documentation.

The full, up-to-date documentation is publicly available. Get in touch when you're ready to activate API access on your account.