Examples

End-to-end recipes.

Real workflows: composing a dinner with AI, shipping it live, and taking your first booking.

1. Compose, create, and publish

Generate a dinner concept with AI, create it as a draft, then publish it live. Three requests:

# Step 1: Compose an AI dinner concept
curl -X POST https://curatedlove.party/api/v1/compose \
  -H "Authorization: Bearer cl_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A tapas night celebrating Spanish wines and small plates. Host it for 12 in an intimate loft setting."
  }'

# Response (example):
# {
#   "draft": {
#     "title": "Spanish Wine & Tapas Evening",
#     "description": "An intimate evening of Spanish wines paired...",
#     "menuTheme": "Spanish tapas",
#     "suggestedPriceCents": 7500,
#     "tags": ["tapas", "wine", "spanish"],
#     "faqs": [
#       { "q": "Is this vegetarian-friendly?", "a": "Most plates are..." }
#     ]
#   }
# }

# Step 2: Create the event as a draft (copy fields from compose response)
curl -X POST https://curatedlove.party/api/v1/events \
  -H "Authorization: Bearer cl_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Spanish Wine & Tapas Evening",
    "date": "2026-07-25T19:30",
    "description": "An intimate evening of Spanish wines paired with small plates.",
    "menuTheme": "Spanish tapas",
    "venueName": "The Loft",
    "venueAddress": "123 Main St, Brooklyn, NY",
    "capacity": 12,
    "priceCents": 7500,
    "durationMin": 120,
    "tags": ["tapas", "wine", "spanish"],
    "faqs": [
      { "q": "Is this vegetarian-friendly?", "a": "Most plates are..." }
    ]
  }'

# Response (example):
# {
#   "event": {
#     "id": "evt_abc123def456",
#     "slug": "spanish-wine-tapas-evening",
#     "title": "Spanish Wine & Tapas Evening",
#     "status": "draft",
#     "date": "2026-07-25T19:30",
#     "capacity": 12,
#     "priceCents": 7500,
#     ...
#   }
# }

# Step 3: Publish the event (use id from step 2)
curl -X POST https://curatedlove.party/api/v1/events/evt_abc123def456/publish \
  -H "Authorization: Bearer cl_live_your_key"

# Response (example):
# {
#   "event": {
#     "id": "evt_abc123def456",
#     "status": "published",
#     ...
#   }
# }

2. Book a free event

Create a booking for a free event (priceCents = 0) — a distinct event from the paid tapas night above. Free events confirm instantly and return {booking:{...}}; a paid event instead returns {checkoutUrl, bookingId} for the guest to complete checkout:

curl -X POST https://curatedlove.party/api/v1/bookings \
  -H "Authorization: Bearer cl_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "eventId": "evt_free_dinner",
    "name": "Jane Doe",
    "email": "jane@example.com",
    "seats": 2,
    "notes": "Vegetarian"
  }'

# Response (instantly confirmed for free events):
# {
#   "booking": {
#     "id": "bkg_xyz789",
#     "status": "confirmed",
#     "seats": 2
#   }
# }

3. Same recipes via MCP

Use any MCP client to run the same API calls. Connect with your key, then call tools:

// 1. Compose
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "compose_event",
    "arguments": {
      "prompt": "A tapas night celebrating Spanish wines..."
    }
  }
}

// 2. Create
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "create_event",
    "arguments": {
      "title": "Spanish Wine & Tapas Evening",
      "date": "2026-07-25T19:30",
      "description": "...",
      "capacity": 12,
      "priceCents": 7500
    }
  }
}

// 3. Publish
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "publish_event",
    "arguments": {
      "id": "evt_abc123def456"
    }
  }
}

// 4. Book (a free event — evt_abc123def456 above is paid and would
//    return {checkoutUrl, bookingId} instead of an instantly-confirmed booking)
{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "create_booking",
    "arguments": {
      "eventId": "evt_free_dinner",
      "name": "Jane Doe",
      "email": "jane@example.com",
      "seats": 2
    }
  }
}
Examples | CuratedLove Developers