> ## Documentation Index
> Fetch the complete documentation index at: https://docs.famulor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update web widget

> **Required scope:** `assistants:write`. You can change `assistant_id` to point the widget at another assistant in the same workspace. Phone verification requires explicit acceptance of the current verification SMS credit price. Previously issued browser permissions expire after at most 7 days and are revoked when this widget configuration changes.



## OpenAPI

````yaml /api-reference/openapi.json patch /widget-connectors/{id}
openapi: 3.1.0
info:
  title: Famulor API
  version: 1.0.0
  description: >-
    REST API for Famulor. Authenticate with an API key (`fam_...`, created under
    **Settings → API Keys**) or an OAuth 2.0 access token (`fam_at_...`) as a
    Bearer token.


    Every response uses a consistent envelope: `{ "data": ... , "meta": { ... }
    }` on success and `{ "error": { "code", "message" } }` on failure. List
    endpoints paginate with `?limit=` (default 50, max 200) and `?offset=`;
    `meta.pagination.total` carries the total match count.


    REST operations require API Access through the workspace plan or a recurring
    add-on. Without it, regular operations return `403 api_access_required`. The
    invoice-payment and billing-portal operations remain available with a valid
    `billing:write` credential after a failed plan payment so an authorized
    owner, admin, or billing member can recover billing.


    The same customer-facing capabilities are available as MCP tools at
    `https://app.famulor.io/mcp` (Model Context Protocol, streamable HTTP) using
    the same credentials, scopes, and workspace access. MCP availability is
    controlled separately by Connect AI / MCP, not by API Access.
servers:
  - url: https://app.famulor.io/api/v1
    description: Hosted platform.
  - url: https://{domain}/api/v1
    description: White-label tenant domain — same paths, tenant branding.
    variables:
      domain:
        default: app.famulor.io
        description: Your white-label tenant domain.
security:
  - bearerAuth: []
tags:
  - name: Account
    description: Self-inspection of the calling credential.
  - name: Migrations
    description: Preview and import data from supported legacy platforms.
  - name: Assistants
    description: Create and manage voice assistants.
  - name: Tools
    description: >-
      Reusable tools (HTTP APIs and external MCP servers) assistants can call
      mid-conversation.
  - name: Voices
    description: Browse the text-to-speech voice library.
  - name: Calls
    description: Start outbound calls and read call history, transcripts and recordings.
  - name: History
    description: Unified conversation history across calls, messaging and assistant emails.
  - name: Campaigns
    description: Outbound calling campaigns with a compliant power dialer.
  - name: Leads
    description: Manage Audience contacts across campaigns, channels and Call QA metrics.
  - name: Segments
    description: >-
      Saved, dynamic lead filters — reusable audience definitions used for
      Audience search and campaign lead assignment.
  - name: Suppression
    description: Cross-channel marketing opt-outs and active workspace suppression records.
  - name: Callbacks
    description: >-
      Scheduled callbacks booked by the Schedule callback tool across voice,
      chat, and email.
  - name: Phone Numbers
    description: Marketplace numbers and customer-provided numbers.
  - name: Famulor Loop
    description: >-
      Personal business-phone access, directory, presence, devices, and Loop
      call recents.
  - name: SIP Trunks
    description: Bring your own SIP provider and numbers.
  - name: Carrier Connections
    description: Connect a supported carrier account and import its existing phone numbers.
  - name: Knowledge Bases
    description: RAG knowledge bases and documents for assistants.
  - name: Settings
    description: Workspace-level settings such as caller-memory defaults.
  - name: Billing
    description: Balance and transaction ledger of the API key's workspace.
  - name: Automations
    description: >-
      Native workspace automations — list, create, update, trigger. Requires
      Automations in the workspace plan.
  - name: Milian Missions
    description: Recurring jobs that Milian runs unattended on schedule.
  - name: Integrations
    description: >-
      Calendar integrations (Cal.com, Calendly, Acuity Scheduling, Google
      Calendar, Outlook, native booking engine). Assign them to assistants to
      provide availability and booking tools, plus provider-supported
      appointment lookup, cancellation, and rescheduling.
  - name: Bookings
    description: >-
      Native booking engine — event types with weekly availability, public
      booking pages at /book/{workspace}/{slug}, and the bookings they produce.
  - name: Dashboards
    description: >-
      Custom analytics dashboards, reusable widgets, and tenant-scoped
      performance analytics. Requires Custom dashboards in the workspace plan.
  - name: Catalog
    description: >-
      Read-only platform catalogs — available models, supported assistant
      languages, and prompt templates.
  - name: Simulations
    description: Assistant simulation tests (plan-gated).
  - name: Versions
    description: Assistant configuration version history.
  - name: Caller IDs
    description: Outbound caller ID verification.
  - name: Widgets
    description: Web widget connectors.
  - name: Messaging
    description: >-
      Telegram, Slack, and Messenger text bots linked to assistants (Chat SDK).
      Includes conversation delay, inactivity end, and conversation-ended
      webhooks.
  - name: QA
    description: Cohort AI Quality Assurance runs over call transcripts.
  - name: White Label
    description: >-
      Manage white-label customer accounts, defaults, credit transfers and
      customer plan offers. Each endpoint documents its required scope and
      workspace eligibility.
  - name: API Keys
    description: >-
      Self-service API keys for the calling workspace or a same-brand workspace
      where the credential's user is owner/admin. A key can only mint further
      keys with a scope subset of its own.
  - name: Workspaces
    description: >-
      List visible workspaces, create an additional workspace for the key owner,
      and mint a dedicated credential for a selected owner/admin workspace.
  - name: SMS
    description: Outbound SMS from workspace phone numbers.
  - name: Milian
    description: >-
      Ask Milian, the AI co-worker in your workspace, and start voice sessions
      with it.
  - name: Translation
    description: >-
      Live translation sessions that interpret a conversation between two
      languages.
paths:
  /widget-connectors/{id}:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
    patch:
      tags:
        - Widgets
      summary: Update web widget
      description: >-
        **Required scope:** `assistants:write`. You can change `assistant_id` to
        point the widget at another assistant in the same workspace. Phone
        verification requires explicit acceptance of the current verification
        SMS credit price. Previously issued browser permissions expire after at
        most 7 days and are revoked when this widget configuration changes.
      operationId: updateWidgetConnector
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                assistant_id:
                  type: string
                  format: uuid
                  description: Assistant that answers voice and chat from this widget.
                name:
                  type: string
                allowed_origins:
                  type: array
                  description: >-
                    Replaces the allowlist. Empty array blocks third-party
                    hosts.
                  items:
                    type: string
                voice_enabled:
                  type: boolean
                chat_enabled:
                  type: boolean
                is_active:
                  type: boolean
                theme:
                  $ref: '#/components/schemas/WidgetTheme'
                phone_verification_enabled:
                  type: boolean
                  default: false
                  description: >-
                    Require the selected email or SMS verification before chat
                    or voice. Available in root workspaces, including a
                    reseller’s own workspace; unavailable to reseller customer
                    workspaces.
                phone_verification_accepted_credits:
                  type: number
                  nullable: true
                  exclusiveMinimum: 0
                  description: >-
                    Explicitly accept the current per-SMS price from the widget
                    list response. Currently 80 credits per accepted send,
                    including resends; code checks and valid remembered visits
                    are free.
                verification_method:
                  type: string
                  enum:
                    - sms
                    - email
                  default: sms
                  description: >-
                    Verify visitors by SMS or email. Email uses the platform
                    sender without additional credits.
      responses:
        '200':
          description: Updated widget.
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/WidgetConnector'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          $ref: '#/components/responses/RequestProtectionUnavailable'
      security:
        - BearerAuth: []
components:
  schemas:
    WidgetTheme:
      type: object
      description: >-
        Widget appearance. launcher_label_i18n is derived from launcher_label
        and is read-only — never persist client-supplied maps.
      properties:
        chat_reply_delay:
          type: object
          description: >-
            Minimum display wait per chat reply. Disabled shows replies as soon
            as they arrive; typing dots still show while waiting. Dynamic
            automatically selects 1-10 seconds for each reply. Voice is
            unchanged.
          properties:
            mode:
              type: string
              enum:
                - disabled
                - fixed
                - dynamic
              default: disabled
            seconds:
              type: number
              minimum: 0
              maximum: 10
              default: 3
              description: Fixed wait in seconds.
        screen_sharing_enabled:
          type: boolean
          default: false
          description: >-
            Allow visitors to share a screen, window or tab for AI visual help
            during widget chat and voice sessions. Sharing always requires the
            visitor's browser permission, can be stopped at any time and does
            not capture system audio. Requires both Web widget and Widget screen
            sharing in the workspace plan; actual shared time incurs the
            displayed credit surcharge in addition to voice and avatar charges.
            Image uploads are controlled separately.
        chat_attachments_enabled:
          type: boolean
          default: true
          description: >-
            Let visitors attach images and documents in chat (PNG, JPG, WEBP,
            GIF, PDF, DOCX, TXT, MD, CSV, JSON; up to 10 MB each, 5 per
            message). Images are shown to the assistant; documents are read as
            text. Attachments appear in the call history transcript.
        launcher_icon:
          type: string
          enum:
            - milian
            - chat_bubbles
            - question
            - smiley
            - team
            - hand_wave
            - avatar
            - logo
          description: >-
            Floating launcher icon. Default milian (mesh orb). avatar uses the
            selected assistant’s current profile picture; logo uses the widget
            header logo. Missing images fall back to the orb. With
            launcher_label none the icon shows without text.
        launcher_label:
          type: string
          enum:
            - none
            - help
            - ask_anything
            - assistance
            - support
            - live_chat
            - need_help
          default: none
          description: >-
            Preset launcher label. Translated for the visitor language. Default
            none (no text).
        launcher_label_i18n:
          type: object
          additionalProperties:
            type: string
          readOnly: true
          description: Derived visitor translations; never persist client-supplied maps.
        primary_color:
          type: string
          description: Accent / launcher color (hex).
        title:
          type: string
        greeting_text:
          type: string
        position:
          type: string
          enum:
            - bottom-right
            - bottom-left
          description: Floating launcher corner. Ignored when display_mode is inline.
        display_mode:
          type: string
          enum:
            - floating
            - inline
        logo_url:
          type: string
          format: uri
        launcher_text:
          type: string
          description: >-
            Optional custom launcher text used when launcher_label is none
            (avatar-only glass CTA).
        presence_mode:
          type: string
          enum:
            - visualizer
            - avatar
        logo_source:
          type: string
          enum:
            - assistant
            - custom
          default: assistant
          description: >-
            Header logo source. New widgets default to assistant unless logo_url
            is supplied without a source, which selects custom. assistant
            follows the selected assistant’s current profile picture. custom
            uses logo_url and preserves an uploaded logo independently. Existing
            widgets without this field keep their custom logo.
    WidgetConnector:
      type: object
      properties:
        id:
          type: string
          format: uuid
        public_key:
          type: string
        assistant_id:
          type: string
          format: uuid
        name:
          type: string
        allowed_origins:
          type: array
          items:
            type: string
        voice_enabled:
          type: boolean
        chat_enabled:
          type: boolean
        is_active:
          type: boolean
        theme:
          $ref: '#/components/schemas/WidgetTheme'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        phone_verification_enabled:
          type: boolean
          default: false
          description: >-
            Require the selected email or SMS verification before chat or voice.
            Available in root workspaces, including a reseller’s own workspace;
            unavailable to reseller customer workspaces.
        phone_verification_accepted_credits:
          type: number
          nullable: true
          exclusiveMinimum: 0
          description: >-
            Explicitly accept the current per-SMS price from the widget list
            response. Currently 80 credits per accepted send, including resends;
            code checks and valid remembered visits are free.
        verification_method:
          type: string
          enum:
            - sms
            - email
          default: sms
          description: >-
            Verify visitors by SMS or email. Email uses the platform sender
            without additional credits.
    ErrorEnvelope:
      type: object
      description: Error envelope returned by every /api/v1 endpoint on failure.
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              enum:
                - unauthorized
                - forbidden
                - api_access_required
                - not_found
                - invalid_request
                - rate_limited
                - conflict
                - telephony_configuration_error
                - telephony_unavailable
                - destination_forbidden
                - internal_error
                - service_unavailable
              description: >-
                Stable, machine-readable error code. `service_unavailable` is
                returned by POST /bookings and GET
                /booking-event-types/{id}/slots specifically when the
                availability engine could not be reached (see
                AvailabilityOrProtectionUnavailable).
            message:
              type: string
              description: Human-readable description of the error.
  responses:
    RateLimited:
      description: Too many requests. Retry after the indicated delay.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
            minimum: 1
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error:
              code: rate_limited
              message: Too many requests. Retry after the indicated delay.
    RequestProtectionUnavailable:
      description: Request protection is temporarily unavailable.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
            minimum: 1
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error:
              code: internal_error
              message: Request protection is temporarily unavailable.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        API key (`fam_...`, created under **Settings → API Keys**) or an OAuth
        2.0 access token (`fam_at_...`). REST operations also require API Access
        for the credential's workspace. Keys can be restricted to scopes such as
        `assistants:read`, `calls:write`, `campaigns:write`, `automations:read`,
        `dashboards:read`, `dashboards:write`, `leads:write`, `segments:write`,
        `loop:read`, `loop:write`, `phone_numbers:write`, `sip_trunks:write`,
        `knowledge:write`, `voices:read`, `billing:read`, `billing:write`,
        `settings:write`, `platform:read`, `platform:write`; a `*:write` scope
        implies the matching `*:read`. Automation and dashboard endpoints also
        accept the legacy `calls:*` scope. Keys without scope restrictions have
        full access within the workspace's available capabilities.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.