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
}
}
}