Public API for teachers, studios and classes
Read the same directory people see on MoveMentors: independent teachers, small studios and their upcoming classes. No sign-up, no key, plain JSON. Built so AI agents and small tools can point people to local classes without scraping.
Base URL
https://movementors.com/api/v1Every endpoint below starts here. A plain GET on it returns a JSON list of them all.
Try it
Find five pilates teachers. Paste this into a terminal:
curl "https://movementors.com/api/v1/mentors?category=pilates&limit=5"Endpoints
All read-only and free to call. Lists take page and limit (up to 50).
| Endpoint | What it returns |
|---|---|
| GET/api/v1/mentors | Search independent teachers by text, city or discipline. |
| GET/api/v1/mentors/{slug} | One teacher's public profile, disciplines, places and certifications. |
| GET/api/v1/studios | Search small studios. Add rentable=1 for rooms other teachers can rent. |
| GET/api/v1/studios/{slug} | One studio's public profile and locations. |
| GET/api/v1/classes | Upcoming sessions, online or in person, with dates, prices and hosts. |
| GET/api/v1/classes/{id} | One class with its schedule and host. |
| GET/api/v1/health | Whether the service is up. |
| GET/api/v1/openapi.json | The full OpenAPI 3.1 contract, for code generators and agents. |
Authentication
None for the endpoints on this page. To book a class or manage a schedule for someone, an agent uses our MCP server with OAuth, so the person approves it first.
Connect an AI assistantErrors
Every error comes back as JSON in the RFC 9457 problem format (application/problem+json), never as an HTML page. Read code to decide what to do, and hint for how to fix it.
400invalid_parameter
A query parameter is wrong. The param field names it.
404not_found
No such endpoint, teacher, studio or class.
405method_not_allowed
These endpoints only read. Use GET.
429rate_limited
Too many requests. Wait the number of seconds in Retry-After.
500internal_error
Something broke on our side. Retry, waiting a little longer each time.
HTTP/1.1 404 Not Found
Content-Type: application/problem+json
{
"type": "https://movementors.com/developers#error-not_found",
"title": "Not Found",
"status": 404,
"detail": "Teacher not found",
"instance": "/api/v1/mentors/unknown",
"code": "not_found",
"hint": "Check the path and identifier. GET /api/v1 lists every public endpoint.",
"error": "Teacher not found"
}Rate limits
Limits are per IP address: 100 requests a minute, plus 5,000 a day on list endpoints. Every response says where you stand, so you can slow down before you run out.
RateLimit-PolicyYour quotas, for example "burst";q=100;w=60.
RateLimitRequests left and seconds until each quota resets.
RateLimit-Limit / -Remaining / -ResetThe same for the quota closest to running out, in the older single-value form.
Retry-AfterOn a 429, how many seconds to wait.
Versioning
The version is in the path, so nothing changes under you without warning.
- New endpoints, parameters and fields are added to v1 in place. Your code keeps working.
- Anything that would break existing code, like removing or renaming a field, ships as /api/v2.
- Before a version is switched off, its responses carry a Deprecation header (RFC 9745) and a Sunset header (RFC 8594) with the date, at least 6 months ahead.
For agents and tools
Machine-readable entry points: GET /api/v1 · OpenAPI 3.1 · API catalog (RFC 9727) · llms.txt · MCP server card
Questions, or need a higher limit? Write to support@movementors.com