# Reference

- [Site Settings](https://docs.klai.studio/reference/site-settings.md)
- [Navigation](https://docs.klai.studio/reference/site-settings/navigationoverview.md)
- [App Model](https://docs.klai.studio/reference/site-settings/app-model.md): The App Model functions similar to a page's data model, except that it is accessible to every page in your site. You can also reference data in the App Model from elements that are not bound to a page
- [DOM Header Insertions](https://docs.klai.studio/reference/site-settings/dom-header-insertions.md): This are is used to add third part code into your app.
- [Global Named Actions](https://docs.klai.studio/reference/site-settings/site-wide-named-actions.md)
- [Site Structure](https://docs.klai.studio/reference/site-settings/site-structure.md): Klai Studio app's do have some small opinionated design elements. Understanding the undunderlying structure will help you to design better apps.
- [Slots / Code Injection](https://docs.klai.studio/reference/site-settings/slots-code-injection.md): Reference for BetterForms slot names and where each slot renders in the app UI.
- [Page Settings](https://docs.klai.studio/reference/form-settings.md)
- [Data Model](https://docs.klai.studio/reference/form-settings/data-model.md)
- [Card / Window Modals](https://docs.klai.studio/reference/form-settings/card-modals.md): Card modals display other pages as their content.
- [Validation](https://docs.klai.studio/reference/form-settings/validationoverview.md)
- [Custom Validators](https://docs.klai.studio/reference/form-settings/validationoverview/clientside.md)
- [SEO Meta Tags](https://docs.klai.studio/reference/form-settings/seo-meta-tags.md)
- [Misc Page Settings](https://docs.klai.studio/reference/form-settings/misc-page-settings.md)
- [Page Elements](https://docs.klai.studio/reference/components-overview.md)
- [App Layout Overview](https://docs.klai.studio/reference/components-overview/copy-of-site-structure.md): Quick pointer to the canonical BetterForms app layout overview.
- [BetterForms Elements](https://docs.klai.studio/reference/components-overview/betterforms-elements.md)
- [Checkbox](https://docs.klai.studio/reference/components-overview/betterforms-elements/checkbox.md)
- [Checklist](https://docs.klai.studio/reference/components-overview/betterforms-elements/checklist.md)
- [Cleave.js Input Masking](https://docs.klai.studio/reference/components-overview/betterforms-elements/cleave.md)
- [DateTime Picker](https://docs.klai.studio/reference/components-overview/betterforms-elements/datetimepicker.md)
- [Google Address Autocomplete](https://docs.klai.studio/reference/components-overview/betterforms-elements/googleaddress.md)
- [Image Display Element](https://docs.klai.studio/reference/components-overview/betterforms-elements/image.md)
- [Input](https://docs.klai.studio/reference/components-overview/betterforms-elements/input.md)
- [Masked Input](https://docs.klai.studio/reference/components-overview/betterforms-elements/masked.md)
- [Range Slider (noUiSlider)](https://docs.klai.studio/reference/components-overview/betterforms-elements/nouislider.md)
- [Radios](https://docs.klai.studio/reference/components-overview/betterforms-elements/radios.md)
- [Select](https://docs.klai.studio/reference/components-overview/betterforms-elements/select.md)
- [Advanced Select (selectEx)](https://docs.klai.studio/reference/components-overview/betterforms-elements/selectex.md)
- [TextArea](https://docs.klai.studio/reference/components-overview/betterforms-elements/textarea.md)
- [Common](https://docs.klai.studio/reference/components-overview/common.md)
- [Input](https://docs.klai.studio/reference/components-overview/common/input.md)
- [Button](https://docs.klai.studio/reference/components-overview/common/button.md)
- [Data Table](https://docs.klai.studio/reference/components-overview/common/tables2.md)
- [HTML](https://docs.klai.studio/reference/components-overview/common/html.md)
- [Grouping Elements](https://docs.klai.studio/reference/components-overview/grouping-elements.md)
- [Tabs](https://docs.klai.studio/reference/components-overview/grouping-elements/tabs_form.md): Organize complex forms using a standard tab element
- [Panel](https://docs.klai.studio/reference/components-overview/grouping-elements/panel.md)
- [accordion](https://docs.klai.studio/reference/components-overview/grouping-elements/accordion.md)
- [accordion2](https://docs.klai.studio/reference/components-overview/grouping-elements/accordion-1.md)
- [listrows](https://docs.klai.studio/reference/components-overview/grouping-elements/listrows.md)
- [Uploading Files](https://docs.klai.studio/reference/components-overview/uploading-files.md)
- [dropzone](https://docs.klai.studio/reference/components-overview/uploading-files/dropzone.md)
- [dropzone to S3](https://docs.klai.studio/reference/components-overview/uploading-files/dropzone-to-s3.md): How to use the dropzone element to upload files directly to an AWS S3 bucket.
- [uploadCare](https://docs.klai.studio/reference/components-overview/uploading-files/uploadcare.md)
- [Uppy File Upload Widget Integration with AWS S3](https://docs.klai.studio/reference/components-overview/uploading-files/uppy-file-upload-widget-integration-with-aws-s3.md)
- [Misc Elements](https://docs.klai.studio/reference/components-overview/misc-elements.md)
- [Plain Text / Code Editor](https://docs.klai.studio/reference/components-overview/misc-elements/aceeditor.md)
- [signature](https://docs.klai.studio/reference/components-overview/misc-elements/signature.md)
- [fullCalendar](https://docs.klai.studio/reference/components-overview/misc-elements/fullcalendar.md): Implementation of www.fullcalendar.io calendaring component. Component based on https://github.com/CroudTech/vue-fullcalendar
- [rangeSlider](https://docs.klai.studio/reference/components-overview/misc-elements/rangeslider.md)
- [Payment Gateways](https://docs.klai.studio/reference/components-overview/payment-gateways.md)
- [Authorize.net](https://docs.klai.studio/reference/components-overview/payment-gateways/authorize.md)
- [PayPal](https://docs.klai.studio/reference/components-overview/payment-gateways/paypal.md)
- [Stripe](https://docs.klai.studio/reference/components-overview/payment-gateways/stripe.md)
- [Adding Custom Page Elements](https://docs.klai.studio/reference/components-overview/3rd-party-elements.md)
- [Actions Processor](https://docs.klai.studio/reference/actions-processor.md)
- [Named Actions (Action Scripts)](https://docs.klai.studio/reference/actions-processor/actions_named.md)
- [Actions](https://docs.klai.studio/reference/actions-processor/actions_overview.md)
- [runUtilityHook](https://docs.klai.studio/reference/actions-processor/actions_overview/runutilityhook.md)
- [path](https://docs.klai.studio/reference/actions-processor/actions_overview/path.md)
- [debounce](https://docs.klai.studio/reference/actions-processor/actions_overview/debounce.md): Ver +bf-0.01.4
- [throttle](https://docs.klai.studio/reference/actions-processor/actions_overview/throttle.md): Ver +bf-0.01.4
- [showAlert](https://docs.klai.studio/reference/actions-processor/actions_overview/showalert.md)
- [showModal / hideModal](https://docs.klai.studio/reference/actions-processor/actions_overview/showmodal.md): Displays a full screen modal dialogue with customizable buttons
- [function](https://docs.klai.studio/reference/actions-processor/actions_overview/function-1.md)
- [clipboard](https://docs.klai.studio/reference/actions-processor/actions_overview/clipboard.md)
- [cookie](https://docs.klai.studio/reference/actions-processor/actions_overview/cookie.md)
- [setFocus](https://docs.klai.studio/reference/actions-processor/actions_overview/setfocus.md)
- [scrollTo](https://docs.klai.studio/reference/actions-processor/actions_overview/scrollto.md)
- [wait](https://docs.klai.studio/reference/actions-processor/actions_overview/wait.md): pause the actions queue for an amount of time specified
- [emit](https://docs.klai.studio/reference/actions-processor/actions_overview/emit.md)
- [validate](https://docs.klai.studio/reference/actions-processor/actions_overview/validate.md)
- [channelJoinAnon](https://docs.klai.studio/reference/actions-processor/actions_overview/channeljoinanonymous.md): Adds user to anonymous channel
- [channelLeaveAnon](https://docs.klai.studio/reference/actions-processor/actions_overview/channelleaveanon.md): Removes user from anonymous channel
- [messageSend](https://docs.klai.studio/reference/actions-processor/actions_overview/messagesend.md)
- [messageSendAnonChannel](https://docs.klai.studio/reference/actions-processor/actions_overview/messagesendanonchannel.md)
- [consoleError](https://docs.klai.studio/reference/actions-processor/actions_overview/consoleerror.md)
- [showStripeCheckout](https://docs.klai.studio/reference/actions-processor/actions_overview/showstripecheckout.md)
- [showCardModal / hideCardModal](https://docs.klai.studio/reference/actions-processor/actions_overview/showcardmodal.md): Opens or closes a BetterForms card modal that renders another page.
- [runOnCompleteHook](https://docs.klai.studio/reference/actions-processor/actions_overview/runoncompletehook.md): Runs the form completion hook and waits for it to finish before continuing the action queue.
- [mapInfoWindow](https://docs.klai.studio/reference/actions-processor/actions_overview/mapinfowindow.md): Emits a map info-window event to components listening for map interactions.
- [authLoginOauth / oauthLoginHook](https://docs.klai.studio/reference/actions-processor/actions_overview/authloginoauth.md): Finalizes an OAuth login after the provider redirects back into BetterForms.
- [pwaCustomInstall](https://docs.klai.studio/reference/actions-processor/actions_overview/pwacustominstall.md): Captures the browser install prompt so your app can trigger installation later with custom UI.
- [pwaPromptInstall](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapromptinstall.md): Triggers the stored PWA install prompt and runs callbacks for accept or dismiss outcomes.
- [pwaPromptPushPermission](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapromptpushpermission.md): Requests push-notification permission and registers the browser subscription with BetterForms.
- [pwaPushNotificationSend](https://docs.klai.studio/reference/actions-processor/actions_overview/pwapushnotificationsend.md): Sends a push notification through BetterForms to registered browser subscriptions.
- [llmToolCall](https://docs.klai.studio/reference/actions-processor/actions_overview/llmtoolcall.md): Dispatches LLM-requested frontend tools by mapping them to BetterForms named actions.
- [llmToolCallResponse](https://docs.klai.studio/reference/actions-processor/actions_overview/llmtoolcallresponse.md): Sends the result of a frontend tool workflow back to the BetterForms LLM tool-response service.
- [llmQueryStop](https://docs.klai.studio/reference/actions-processor/actions_overview/llmquerystop.md): Requests that an active BetterForms LLM query stream stop gracefully.
- [assistantStop](https://docs.klai.studio/reference/actions-processor/actions_overview/assistantstop.md): Requests that an active BetterForms assistants stream stop gracefully.
- [Authentication Actions](https://docs.klai.studio/reference/actions-processor/authentication-actions.md)
- [Script Hooks](https://docs.klai.studio/reference/hooksoverview.md)
- [Globals Variables](https://docs.klai.studio/reference/hooksoverview/filemaker-globals.md)
- [$$BF\_Model](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_model.md)
- [$$BF\_App](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_app.md)
- [$$BF\_State](https://docs.klai.studio/reference/hooksoverview/filemaker-globals/usdusdbf_state.md): The state object holds various data related to the browser environment.
- [Keeping Keys Private](https://docs.klai.studio/reference/hooksoverview/payloadobject.md)
- [Reducing Payload Size](https://docs.klai.studio/reference/hooksoverview/env_vars.md)
- [API Callback Endpoint](https://docs.klai.studio/reference/hooksoverview/callback.md)
- [Common Hooks](https://docs.klai.studio/reference/hooksoverview/commonoverview.md)
- [Scoped Hooks](https://docs.klai.studio/reference/hooksoverview/hooks.md): Scoped hooks are specific to the page on which they are initiated and contain relevant data about the page context
- [Lifecycle Hooks](https://docs.klai.studio/reference/hooksoverview/lifecycle-hooks.md)
- [Authentication](https://docs.klai.studio/reference/authentication.md): High-level overview of BetterForms authentication strategies and building blocks.
- [Basic Authentication](https://docs.klai.studio/reference/authentication/basic-auth.md): Email/password authentication using the internal Users table in the helper file.
- [User Registration & Verification](https://docs.klai.studio/reference/authentication/basic-auth/user-registration.md): Step-by-step for user sign-up and email verification using Basic Authentication.
- [Password Management](https://docs.klai.studio/reference/authentication/basic-auth/password-management.md): Password reset flows for end users in Basic Authentication.
- [Managing User Accounts](https://docs.klai.studio/reference/authentication/managing-users.md)
- [Custom Login Pages](https://docs.klai.studio/reference/authentication/custom-login-pages.md)
- [Query & Cookie Based Auth](https://docs.klai.studio/reference/authentication/query-cookie-auth.md): Using smart links (query tokens) and cookie-based sessions for streamlined authentication.
- [OAuth](https://docs.klai.studio/reference/authentication/oauth.md): OAuth sign-in with Google, Auth0, and Okta.
- [JWT Expiration](https://docs.klai.studio/reference/authentication/jwt-expiration.md): Configure per-tenant JWT authentication token expiry and domain audience.
- [Security Best Practices](https://docs.klai.studio/reference/authentication/security-best-practices.md): Recommended practices for securing authentication flows in BetterForms.
- [Klai Utility Functions](https://docs.klai.studio/reference/bf-utility-function-ver-0.9.20+.md): BetterForm has a collection of helper Java Script functions that are used within JavaScript to allow  easy access to common complex code.
- [Dynamic Library Loading](https://docs.klai.studio/reference/bf-utility-function-ver-0.9.20+/bf-dynamic-library-loading.md): Dynamic library loading functionality for BetterForms - Load external JavaScript libraries, ESM modules, and CSS files from CDN dynamically within function actions.
- [APIs & Services](https://docs.klai.studio/reference/apis-and-services.md)
- [Messaging](https://docs.klai.studio/reference/apis-and-services/messaging.md): Messaging is intended to be used for real-time features, such as notifications, chat or auto updates. Messaging also allows data to be pushed from FileMaker into your BetterForms apps.
- [Adding users to channels](https://docs.klai.studio/reference/apis-and-services/messaging/adding-users-to-channels.md): You can add users to channels either by calling a FileMaker script in the Helper File, or by calling a REST API endpoint of your BetterForms domain.
- [Removing users from channels](https://docs.klai.studio/reference/apis-and-services/messaging/removing-users-from-channels.md): Similar to adding users, you can remove users either by a REST API call, or via a FileMaker script in your helper file.
- [Sending messages](https://docs.klai.studio/reference/apis-and-services/messaging/sending-messages.md): Once your users are subscribed to a channel or two, you can send messages to them!
- [Get connected users](https://docs.klai.studio/reference/apis-and-services/messaging/get-all-users-connected.md)
- [Get active channels](https://docs.klai.studio/reference/apis-and-services/messaging/get-active-channels.md)
- [Core APIs](https://docs.klai.studio/reference/apis-and-services/core-apis.md)
- [Klai Server Proxy](https://docs.klai.studio/reference/apis-and-services/core-apis/server-proxy.md)
- [BetterForms Error Pages API](https://docs.klai.studio/reference/apis-and-services/core-apis/error-pages-api.md)
- [Klai Streaming Proxy](https://docs.klai.studio/reference/apis-and-services/streaming-proxy.md)
- [Klai Streaming API (Chat)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-api-chat.md)
- [Klai Streaming API (Assistants)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-assistants-api.md)
- [Klai Streaming API (LLM Query)](https://docs.klai.studio/reference/apis-and-services/streaming-proxy/bf-streaming-api-llm-query.md)
- [Guides & Integrations](https://docs.klai.studio/reference/apis-and-services/integrations.md)
- [Creating Components with Third-Party Libraries](https://docs.klai.studio/reference/apis-and-services/integrations/creating-components-with-third-party-libraries.md)
- [Web Awesome Components in BetterForms](https://docs.klai.studio/reference/apis-and-services/integrations/web-awesome-components.md): Use Web Awesome components inside BetterForms with self-contained bfcomponents that lazy-load the library and styles.
- [ApexCharts - Getting started](https://docs.klai.studio/reference/apis-and-services/integrations/apexcharts-getting-started.md)
- [Creating a PWA](https://docs.klai.studio/reference/apis-and-services/integrations/creating-a-pwa.md)
- [Setting up Auth0](https://docs.klai.studio/reference/apis-and-services/integrations/setting-up-auth0.md)
- [Create an S3 Bucket on AWS](https://docs.klai.studio/reference/apis-and-services/integrations/create-an-s3-bucket-on-aws.md)
- [Development & Best Practices](https://docs.klai.studio/reference/best-practices.md)
- [Developer Mode](https://docs.klai.studio/reference/best-practices/developer-mode.md)
- [JavaScript Libraries](https://docs.klai.studio/reference/best-practices/javascript-libraries.md)
- [Practices for File Downloads](https://docs.klai.studio/reference/best-practices/practices-for-file-downloads.md)
- [Rollbacks and Version Control](https://docs.klai.studio/reference/best-practices/rollbacks-and-version-control.md)
- [Customizing & Styling](https://docs.klai.studio/reference/styling.md): There are many ways to customize a BetterForms site to suit the needs of your application!
- [SEO & Social Sharing](https://docs.klai.studio/reference/styling/seo-and-social-sharing.md)
- [Custom Components](https://docs.klai.studio/reference/styling/custom-components.md): Components are chunks of reusable code. They allow you to define code in a single place and reuse it throughout your app. Components can be references through HTML or with Klai JSON schema
- [Components Editor](https://docs.klai.studio/reference/styling/custom-components/components-editor.md)
- [Component Best Practices](https://docs.klai.studio/reference/styling/custom-components/component-best-practices.md): Good components need to be designed well. Taking the time to think of future use cases significantly enhances the components usability.
- [Support & Maintenance](https://docs.klai.studio/reference/support-and-maintenance.md)
- [Connection Trouble Shooting Guide](https://docs.klai.studio/reference/support-and-maintenance/connection-trouble-shooting-guide.md)
- [Updating the Helper File](https://docs.klai.studio/reference/support-and-maintenance/updating-the-helper-file.md)
- [Klai Error Codes](https://docs.klai.studio/reference/support-and-maintenance/bf-error-codes.md): Klai Studio can throw various errors due to code or configuration. Errors can appear in the Helper File, Developer Tools ( when enabled) or the browser console.
- [Security](https://docs.klai.studio/reference/security.md)
- [Custom Domains](https://docs.klai.studio/reference/security/custom-domains.md)
- [Security White Paper](https://docs.klai.studio/reference/security/white-paper.md)
- [Firewalls](https://docs.klai.studio/reference/security/security.md)
- [Technology Stack](https://docs.klai.studio/reference/security/technology-stack.md): Software and tools we use to run Klai Studio!
- [Compatibility](https://docs.klai.studio/reference/security/compatibility.md): As of version 0.9.43 BetterForms is compatible with the following versions or newer. Older version may be supported but may have some limiting features as of Oct 22nd, 2020:
- [Enterprise](https://docs.klai.studio/reference/enterprise.md)
- [Klai Enterprise Documentation](https://docs.klai.studio/reference/enterprise/bf-enterprise-documentation.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.klai.studio/reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
