STURLASON AS POLYFOTO – PUBLIC BOOKING INFORMATION Purpose: read current CV and passport photography offers and available appointments without JavaScript, account creation or an API key. This is a read-only interface. Booking itself continues through the existing website in a browser. Machine-readable entry points (GET): https://www.sturlason.pro/ai-booking.php?studio=oslo&service=cv_private https://www.sturlason.pro/ai-booking.php?studio=asker&service=cv_private https://www.sturlason.pro/ai-booking.php?studio=oslo&service=cv_extended https://www.sturlason.pro/ai-booking.php?studio=asker&service=cv_extended Add &format=json for structured JSON instead of plain text. OpenAPI description: https://www.sturlason.pro/ai-booking-openapi.json CV scope: one private customer paying at the appointment. Company contracts and CV groups must use normal booking choices. Passport photo support for one to four people is described below. Do not infer company prices from this interface. Each successful response contains the offer details, duration, studio address, retrieval timestamp and up to 12 upcoming times. Passport totals are null until a delivery package is selected; CV offers include the included image count. Optional extras are not included. Read any time surcharge per slot and verify the final price in the booking form. The source currently has inconsistent extra-image prices; this adapter deliberately makes no claim about those prices. Availability is fetched from the existing public booking-config.php using the same private-customer parameters as the normal booking. The adapter does not access customer records and does not return calendar event details, session cookies, CSRF tokens or hold tokens. Successful data is cached for at most 30 seconds. Check retrievedAt. Availability can change immediately afterward. HTTP 503 means the offer or calendar could not be verified. Do not treat this as no available appointments. An empty availableSlots list means no verified upcoming times in this response, not that every future appointment is occupied. HTTP 400 means invalid parameters; HTTP 405 means only GET is supported. Agent booking entry: https://www.sturlason.pro/booking.html?agent=other 1. Choose Privat. 2. Choose Oslo or Asker. 3. Choose Express CV-foto/headshot (cv_private) or CV-foto/headshot (cv_extended). 4. Select a currently available time. Selecting a time may create a temporary hold. Merely reading the public interface does not create a hold. 5. Enter the customer's details and send only as authorized by that customer. The browser booking form requires JavaScript. A search-only assistant may be able to read these offers and times without being able to complete a booking. In that case provide the booking link to the customer. Do not claim to have booked an appointment without evidence from the booking result and confirmation. Public service information: https://www.sturlason.pro/cv.html Contact: fotograf@sturlason.pro / +47 22 42 41 22 Privacy: https://www.sturlason.pro/personvern.html PASSPORT / ID / VISA PHOTO EXTENSION (v1.1) Passport photos are now supported by this read-only interface as well. https://www.sturlason.pro/ai-booking.php?studio=oslo&service=pass https://www.sturlason.pro/ai-booking.php?studio=asker&service=pass Optional passport parameters: people=1..4 (default 1) package=print|digital|print_digital (omitted: show options, no total price) extraSets=0..10 (extra sets of four prints PER PERSON, default 0) format=text|json Example: ?studio=oslo&service=pass&people=2&package=print_digital&extraSets=1 This calculates the same package and number of extra sets for each person. For different choices per person, use the normal booking portal. Extra prints require print or print_digital; digital-only extras are rejected. Unknown parameters, including country/document claims, are rejected. Prices are read from the current public booking page. A missing or inconsistent price produces HTTP 503. The total remains null until a package is selected. Availability uses service=pass, audience=pass and the requested number of people in the existing booking engine. Current duration is 5 minutes for one person and 10 minutes for two to four people; mismatched slots are excluded. For EACH PERSON, the booking form still requires the intended country/standard, document type (passport, visa or other) and delivery package. Extra print sets also require their own country/standard and document type. No claim is made that a specific photo will be accepted by an issuing authority. Do not infer nationality from the intended country/standard. In the existing booking form choose Passbilde, not Privat. Read current terms, select studio, enter the required choices, then select an available time. The existing booking engine applies its advance-booking and calendar rules. Passport offer details: https://www.sturlason.pro/pass.html AGENT ATTRIBUTION Use https://www.sturlason.pro/booking.html?agent=claude for Claude, ?agent=chatgpt for ChatGPT, ?agent=codex for Codex or ?agent=other. Keep the agent query parameter in the booking tab until submission. The same parameter is supported on booking_en.html. The resulting calendar booking is marked [AI-agent] and records the declared agent in its details. This is self-declared source attribution, not authenticated agent identity. An ordinary URL without agent= is not automatically detected as an AI booking. Reading this interface alone does not mark a subsequent booking; use the entry link.