SmartBook API
Samme REST som gjestesidene bruker. Ikke et tredjeparts agent-SDK.
Base URL: https://smartbook.now/api/v1
JSON med mindre annet er oppgitt. POST /bookings, /bookings/cancel og /payments/create-intent krever Origin på smartbook.now og x-csrf-token som matcher csrf-token-cookien. Feltnavn er camelCase (serviceId, startTime, bookingId).
Maskinlesbare spesifikasjoner: openapi.json · llms-full.txt · llms.txt
/api/v1/services?slug={businessSlug}Aktive, offentlige tjenester for en kjent slug. Partneroppføringer er utelatt. Pris er price_nok (NOK).
Respons
{
"data": [
{
"id": "uuid",
"name": "Herreklipp",
"duration_minutes": 30,
"price_nok": 499,
"is_multi_day": false,
"confirmation_mode": "auto",
"capacity": 1
}
]
}/api/v1/packages?slug={businessSlug}Aktive pakker for bedriften.
Respons
{
"data": [
{
"id": "uuid",
"name": "Weekend stay",
"primaryServiceId": "uuid",
"totalPriceNok": 3200,
"items": []
}
]
}/api/v1/availability?serviceId={id}&date={YYYY-MM-DD}Tidsluker for én dato. data er en liste av objekter (startTime, endTime, available), ikke klokkeslett-strenger. Bruk range for overnatting.
Respons
{
"data": [
{
"startTime": "2026-10-03T08:00:00.000Z",
"endTime": "2026-10-03T08:30:00.000Z",
"available": true,
"remaining": 1
}
],
"timezone": "Europe/Oslo"
}/api/v1/availability/range?serviceId={id}&checkIn={YYYY-MM-DD}&checkOut={YYYY-MM-DD}Tilgjengelighet og pris for flerdagers opphold (is_multi_day).
Respons
{
"data": {
"available": true,
"nights": 2,
"startTime": "2026-10-03T14:00:00.000Z",
"endTime": "2026-10-05T11:00:00.000Z",
"totalPriceNok": 2400,
"pricePerNightNok": 1200,
"availableResources": [],
"conflicts": []
},
"timezone": "Europe/Oslo"
}/api/v1/bookingsOpprett bestilling. Krever Origin + x-csrf-token (cookie csrf-token). startTime er ISO-8601, ikke date+time. customerPhone er påkrevd. Betaling skjer i et senere steg.
Request body
{
"serviceId": "uuid",
"startTime": "2026-10-03T08:00:00.000Z",
"customerName": "Ola Nordmann",
"customerEmail": "ola@example.com",
"customerPhone": "+4791234567"
}Respons
{
"data": {
"id": "uuid",
"status": "pending",
"start_time": "2026-10-03T08:00:00.000Z",
"end_time": "2026-10-03T08:30:00.000Z",
"price_nok": 499,
"org_id": "uuid"
},
"manageToken": "opaque-guest-token"
}/api/v1/bookings/cancelKanseller med manageToken fra opprettelse, ikke booking-id. CSRF påkrevd.
Request body
{
"token": "opaque-guest-token"
}Respons
{
"data": {
"status": "cancelled",
"refundAmount": 0
}
}/api/v1/payments/create-intentStripe-økt for en ubetalt bestilling. Body er bookingId. Beløp beregnes på server. Krever innlogget gjest eller header x-management-token, pluss CSRF. Vipps er av.
Request body
{
"bookingId": "uuid"
}Respons
{
"data": {
"provider": "stripe",
"kind": "embedded",
"clientSecret": "pi_xxx_secret_xxx"
}
}/api/v1/ai/chatGjestechat på booking-siden. Feltet heter slug (ikke business_slug). CSRF-unntatt. Svaret er en Vercel AI SDK-datastrøm, ikke SSE med {"content"}.
Request body
{
"messages": [
{
"role": "user",
"content": "Hvilke tjenester tilbyr dere?"
}
],
"slug": "min-bedrift"
}Respons
Vercel AI SDK data stream (toDataStreamResponse). Intended for the booking widget.