---
title: "Build booking widget iframe HTML"
method: POST
path: "/api/sites/multiscreen/{site_name}/booking/widget-embed"
tags: ["Native booking widget embed api"]
---

# Build booking widget iframe HTML

`POST /api/sites/multiscreen/{site_name}/booking/widget-embed`

## Request

- Base URL: `https://api.duda.co`
- URL: `https://api.duda.co/api/sites/multiscreen/{site_name}/booking/widget-embed`
- Auth: HTTP basic

Returns iframe markup for embedding the published site's booking widget. Requires a published site, a BOOKING_WIDGET page, and valid event identifiers.

## Path parameters

- `site_name` string, required

## Request body

- ApiBookingWidgetEmbedRequest
  - `appointment_type_ids` string[], required: Appointment type identifiers to show in the widget; each must exist for the site.
  - `choose_appointment_stage_config` ApiBookingWidgetEmbedChooseAppointmentStageConfig: Choose appointment stage configuration (titles and visibility)
    - `is_title_visible` boolean
    - `title` string
  - `choose_staff_member_stage_config` ApiBookingWidgetEmbedChooseStaffMemberStageConfig: Choose staff stage config
    - `is_stage_shown` boolean
    - `is_title_visible` boolean
    - `title` string
  - `design_config` ApiBookingWidgetEmbedDesignConfig: Colors and text styles of the booking flow. Every field is optional and overrides the value it maps to; omitted fields keep whatever design_style resolves to, which is the site theme unless design_style asks for another palette. Text style defaults: titles the site theme's H5 style, subtitles its paragraph style, paragraphs its default text style.
    - `background_color` string: Background color of the booking flow. Hex, rgb() or rgba(). Defaults to the site theme's 3rd color.
    - `paragraphs` ApiBookingWidgetEmbedTextStyle: Font family and size of one text token. Both fields are optional.
      - `font` string: Font family name, as named in the site's font list.
      - `font_size` string: Font size with a unit - px, pt, rem or em. A plain number is read as px.
    - `primary_color` string: Text, border and icon color. Hex, rgb() or rgba(). Defaults to the site theme's 1st color.
    - `secondary_color` string: Background color of the cards and the selected slots. Hex, rgb() or rgba(). Defaults to the site theme's 4th color.
    - `subtitles` ApiBookingWidgetEmbedTextStyle: Font family and size of one text token. Both fields are optional.
      - `font` string: Font family name, as named in the site's font list.
      - `font_size` string: Font size with a unit - px, pt, rem or em. A plain number is read as px.
    - `titles` ApiBookingWidgetEmbedTextStyle: Font family and size of one text token. Both fields are optional.
      - `font` string: Font family name, as named in the site's font list.
      - `font_size` string: Font size with a unit - px, pt, rem or em. A plain number is read as px.
  - `design_style` 'site-theme' | 'basic': Visual design style for the booking flow
  - `lang` string: Published site language (locale code), e.g. en, de, pt-br. Allowed values follow the Partner API locale list: https://developer.duda.co/reference/getting-started-with-the-duda-api
  - `show_free_price` boolean: Whether to show free price labels

## Response `200`

OK

- ApiBookingWidgetEmbedResponse
  - `iframe_html` string: Ready-to-use iframe HTML pointing at the published site's booking widget

## Other responses

- `400`: Non-OK response from the server
- `401`: Unauthorized request - missing or invalid credentials
- `429`: Rate limit exceeded - please refer to api documentation for limits

---

[API](https://skmtc.dev/duda/apis/duda-partner-api.md) - [All operations](https://skmtc.dev/duda/apis/duda-partner-api/llms.txt) - [OpenAPI document](https://skmtc.dev/duda/apis/duda-partner-api/revisions/52be4d41cb12?raw)
