← Terug naar Holdspace

Holdspace API

Discover and book wellness, yoga, and retreat spaces — no authentication required

Base URL

https://qdvqoeeucscjgpwiguom.supabase.co/functions/v1

Authentication

No authentication required. All endpoints are publicly accessible.

Discover Spaces

GET /api-discover

Search for wellness, yoga, retreat, and workshop spaces with optional filters.

Parameters

NameTypeRequiredDescription
citystringNoFilter by city (case-insensitive, e.g. "Amsterdam")
activitystringNoFilter by activity: Yoga, Pilates, Meditatie, Breathwork, Workshops, Coaching, Retreats, Dans
capacityintegerNoMinimum required capacity
overnightstringNo"true" to show only overnight-capable locations
langstringNoLanguage: nl (default), en, de, fr, es
limitintegerNoMax results 1-50 (default: 20)
offsetintegerNoPagination offset (default: 0)

Example Request

curl "https://qdvqoeeucscjgpwiguom.supabase.co/functions/v1/api-discover?city=Amsterdam&activity=Yoga&capacity=10&lang=en"

Example Response

{
  "meta": { "total": 3, "limit": 20, "offset": 0, "lang": "en", "api_version": "1.0.0" },
  "spaces": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Zen Yoga Loft",
      "description": "A spacious yoga studio with bamboo floors and natural light.",
      "city": "Amsterdam",
      "region": "Noord-Holland",
      "country": "NL",
      "capacity": 25,
      "square_meters": 80,
      "activities": ["Yoga", "Meditatie", "Breathwork"],
      "location": {
        "name": "Yoga House Amsterdam",
        "address": "Herengracht 100, 1015 BS Amsterdam",
        "overnight_possible": false,
        "lunch_available": true,
        "coordinates": { "lat": 52.3676, "lng": 4.9041 }
      },
      "links": {
        "detail": "https://holdspace.guru/space/a1b2c3d4-...",
        "book": "https://holdspace.guru/book/a1b2c3d4-..."
      }
    }
  ]
}

Create Booking

POST /api-book

Submit a booking request for a specific space and time slot. Created with "pending" status.

Request Body (JSON)

FieldTypeRequiredDescription
space_iduuidYesSpace ID from discover endpoint
start_datetimeISO 8601Yese.g. 2025-06-15T09:00:00+02:00
end_datetimeISO 8601YesBooking end time
customer_namestringYesFull name of booker
customer_emailemailYesEmail for confirmation
customer_phonestringNoPhone number
notesstringNoAdditional requirements
participant_countintegerNoExpected participants
room_indexintegerNoRoom index for multi-room (default: 0)

Example Request

curl -X POST "https://qdvqoeeucscjgpwiguom.supabase.co/functions/v1/api-book" \
  -H "Content-Type: application/json" \
  -d '{
    "space_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "start_datetime": "2025-06-15T09:00:00+02:00",
    "end_datetime": "2025-06-15T17:00:00+02:00",
    "customer_name": "Jan de Vries",
    "customer_email": "jan@voorbeeld.nl",
    "participant_count": 15
  }'

Success Response (201)

{
  "success": true,
  "booking": {
    "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
    "status": "pending",
    "space_name": "Zen Yoga Loft",
    "location_name": "Yoga House Amsterdam",
    "start_datetime": "2025-06-15T09:00:00+02:00",
    "end_datetime": "2025-06-15T17:00:00+02:00",
    "price": {
      "total_cents": 35000,
      "currency": "EUR",
      "formatted": "€350,00",
      "includes_vat": true
    }
  },
  "next_steps": {
    "message": "Booking created with 'pending' status. The owner will review it.",
    "detail_url": "https://holdspace.guru/pay/b2c3d4e5-..."
  }
}

Error Responses

StatusDescription
400Invalid or missing parameters
404Space not found
409Time slot not available

MCP Server

AI agents supporting Model Context Protocol (Claude, Cursor, Windsurf) can connect directly:

{
  "mcpServers": {
    "holdspace": {
      "url": "https://qdvqoeeucscjgpwiguom.supabase.co/functions/v1/mcp-server",
      "transport": "streamable-http"
    }
  }
}

Available Tools

ToolDescription
discover_spacesSearch spaces with filters (city, activity, capacity, overnight)
check_availabilityCheck availability for a specific date/time
book_spaceCreate a booking request

Rate Limits

EndpointLimit
GET /api-discover30 requests/minute per IP
POST /api-book5 requests/minute per IP