Owner: Dev Team | Last Updated: 2026-02-21 | Status: Current
Scope: Public API for the embed widget and external clients. For the internal REST API see REST API.
https://your-domain.com/api/v1
All endpoints (except sign-in and health-check) require a Sanctum token:
Authorization: Bearer {token}
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| POST | /sign-in |
No | Authentication |
| POST | /sign-out |
Token | Sign out |
| GET | /health-check |
No | Health check |
| GET | /xp |
Token | List Experiences |
| GET | /xp/{id} |
Token | Experience details |
| GET | /xp/available |
Token | Available Experiences |
| POST | /payments/create |
Token | Create payment intent |
| POST | /payments/update |
Token | Update payment |
| POST | /payments/capture |
Token | Capture payment |
| PUT | /leads/{lead} |
Token | Update lead |
Authentication and obtaining an API token.
{
"email": "user@example.com",
"password": "password"
}
{
"token": "1|abc123def456...",
"user": { ... }
}
Service health check.
{
"status": "ok"
}
List of available Experiences (tours/cruises).
| Parameter | Type | Required | Description |
|---|---|---|---|
page |
integer | No | Page number |
per_page |
integer | No | Items per page (default: 6) |
{
"data": [
{
"id": 1,
"name": "Sunset Harbor Cruise",
"headline": "Experience the NYC skyline at sunset",
"price": 49.99,
"status": true,
"media": [ ... ],
"pricing": [ ... ],
"availability": { ... }
}
],
"meta": {
"current_page": 1,
"total": 15
}
}
Details of a specific Experience.
{
"id": 1,
"name": "Sunset Harbor Cruise",
"description": "...",
"price": 49.99,
"media": [ ... ],
"pricing": [
{ "name": "Adult", "amount": 49.99 },
{ "name": "Child", "amount": 29.99 }
],
"timeDates": [ ... ],
"duration": { ... },
"capacity": { ... },
"ageGroup": { ... },
"additionalServices": [ ... ]
}
Creating a Stripe Payment Intent for a new booking.
{
"experiences": [
{
"experience_id": 1,
"date": "2026-03-15",
"time": "18:00",
"items": [
{ "name": "Adult", "qty": 2 },
{ "name": "Child", "qty": 1 }
]
}
],
"customer": {
"name": "John",
"surname": "Doe",
"email": "john@example.com",
"phone": "+1234567890"
},
"coupon_code": "SPRING2026",
"gift_card_code": "GC-ABC123"
}
{
"client_secret": "pi_xxx_secret_yyy",
"payment_intent_id": "pi_xxx",
"cost": {
"subtotal": 129.97,
"discount": -19.50,
"gift_card": -10.00,
"tax": 8.91,
"total": 109.38
}
}
Updating the amount of an existing Payment Intent.
Capturing an authorized payment and creating a booking.
Updating lead data from the embed widget.
{
"first_name": "Jane",
"last_name": "Smith",
"email": "jane@example.com",
"phone": "+1987654321",
"experiences": [ ... ]
}
| Status | Code | Description |
|---|---|---|
| 401 | Unauthorized | Invalid or missing token |
| 403 | Forbidden | Insufficient permissions |
| 404 | Not Found | Resource not found |
| 422 | Validation Error | Data validation error |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Server Error | Internal server error |
| Date | Author | Change |
|---|---|---|
| 2026-02-21 | Documentation Team | Initial creation |
Prev: Authentication | Next: REST API | Up: API Reference