OpheliaDocs
Search docs⌘K
DashboardCreate an account
Verticals

Fitness

Provider-specific behavior for the fitness vertical.

"vertical": "fitness"MindbodyOTP
termA class type or activity, e.g. "yoga", "spin", "pilates".lifecycleRequires metadata.payment (card, taken up front), including the billing payment.state and payment.country; without them the booking fails with error_code "missing_billing_fields". metadata.password is optional: it signs an existing member in with their Mindbody password. Without it, Ophelia signs the member in with a code Mindbody sends them (usually by email), and a new member gets an account. Booking a class enrolls the member; when Mindbody asks for a code, the booking returns status "requires_action" with next_action.type = "otp"; submit the code to /continue to confirm. Confirmed classes cannot be cancelled through Ophelia.
curl
# Search
curl -X POST https://api.opheliaos.com/v1/venues/search \
-H "Authorization: Bearer YOUR_LIVE_KEY" \
-H "Content-Type: application/json" \
-d '{
"vertical": "fitness",
"term": "yoga",
"location": "San Francisco, CA",
"datetime": "2026-11-14T23:00:00Z"
}'
# → venues[].image = "https://prodapilymberfitness.mindbodyonline.com/photos/..."
curl
# Book — fitness requires metadata.payment (card taken up front), including the
# billing state and country. metadata.password is optional: it signs an existing
# member in; without it Mindbody sends the member a code (usually by email).
# Returns "status": "requires_action", type "otp" when Mindbody asks for a code.
curl -X POST "https://api.opheliaos.com/v1/bookings" \
-H "Authorization: Bearer YOUR_LIVE_KEY" \
-H "Idempotency-Key: fitness-001" \
-H "Content-Type: application/json" \
-d '{
"vertical": "fitness",
"venue_id": "ven_87654321",
"datetime": "2026-11-14T23:00:00Z",
"customer": {
"name": "Jane Smith",
"phone_number": "+15555555555",
"email": "jane.smith.diner@gmail.com"
},
"metadata": { "password": "MemberPass123!", "payment": { "card_number": "4111111111111111", "exp_month": "12", "exp_year": "2027", "cvv": "123", "name_on_card": "Jane Smith", "address_line1": "123 Market St", "city": "San Francisco", "state": "CA", "postal_code": "94103", "country": "US" } }
}'
curl
# Submit the code the member received — returns "status": "confirmed"
curl -X POST "https://api.opheliaos.com/v1/bookings/bkg_12345678/continue" \
-H "Authorization: Bearer YOUR_LIVE_KEY" \
-H "Content-Type: application/json" \
-d '{ "otp_code": "123456" }'