# Reference

- [Site Settings](https://docs.klai.studio/v1/reference/site-settings.md)
- [Navigation](https://docs.klai.studio/v1/reference/site-settings/navigationoverview.md)
- [Slots / Code Injection](https://docs.klai.studio/v1/reference/site-settings/slots-code-injection.md): There are many ways to inject code throughout your site. Slots are the primary method for doing this
- [App Model](https://docs.klai.studio/v1/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
- [Site-wide Named Actions](https://docs.klai.studio/v1/reference/site-settings/site-wide-named-actions.md)
- [Page Settings](https://docs.klai.studio/v1/reference/form-settings.md)
- [Data Model](https://docs.klai.studio/v1/reference/form-settings/data-model.md)
- [Card / Window Modals](https://docs.klai.studio/v1/reference/form-settings/card-modals.md): Card modals display other pages as their content.
- [Validation](https://docs.klai.studio/v1/reference/form-settings/validationoverview.md)
- [Custom Validators](https://docs.klai.studio/v1/reference/form-settings/validationoverview/clientside.md)
- [Misc Page Settings](https://docs.klai.studio/v1/reference/form-settings/misc-page-settings.md)
- [Page Elements](https://docs.klai.studio/v1/reference/components-overview.md)
- [Common](https://docs.klai.studio/v1/reference/components-overview/common.md)
- [Button](https://docs.klai.studio/v1/reference/components-overview/common/button.md)
- [Data Table](https://docs.klai.studio/v1/reference/components-overview/common/tables2.md)
- [HTML](https://docs.klai.studio/v1/reference/components-overview/common/html.md)
- [Grouping Elements](https://docs.klai.studio/v1/reference/components-overview/grouping-elements.md)
- [Tabs](https://docs.klai.studio/v1/reference/components-overview/grouping-elements/tabs_form.md): Organize complex forms using a standard tab element
- [panel](https://docs.klai.studio/v1/reference/components-overview/grouping-elements/untitled-1.md)
- [accordion](https://docs.klai.studio/v1/reference/components-overview/grouping-elements/accordion.md)
- [listrows](https://docs.klai.studio/v1/reference/components-overview/grouping-elements/listrows.md)
- [Uploading Files](https://docs.klai.studio/v1/reference/components-overview/uploading-files.md)
- [dropzone](https://docs.klai.studio/v1/reference/components-overview/uploading-files/dropzone.md)
- [dropzone to S3](https://docs.klai.studio/v1/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/v1/reference/components-overview/uploading-files/uploadcare.md)
- [Misc Elements](https://docs.klai.studio/v1/reference/components-overview/misc-elements.md)
- [Plain Text / Code Editor](https://docs.klai.studio/v1/reference/components-overview/misc-elements/aceeditor.md)
- [signature](https://docs.klai.studio/v1/reference/components-overview/misc-elements/signature.md)
- [fullCalendar](https://docs.klai.studio/v1/reference/components-overview/misc-elements/fullcalendar.md)
- [rangeSlider](https://docs.klai.studio/v1/reference/components-overview/misc-elements/rangeslider.md)
- [Payment Gateways](https://docs.klai.studio/v1/reference/components-overview/payment-gateways.md)
- [Authorize.net](https://docs.klai.studio/v1/reference/components-overview/payment-gateways/authorize.md)
- [PayPal](https://docs.klai.studio/v1/reference/components-overview/payment-gateways/paypal.md)
- [Stripe](https://docs.klai.studio/v1/reference/components-overview/payment-gateways/stripe.md)
- [Adding Custom Page Elements](https://docs.klai.studio/v1/reference/components-overview/3rd-party-elements.md)
- [Actions Processor](https://docs.klai.studio/v1/reference/actions-processor.md)
- [Named Actions](https://docs.klai.studio/v1/reference/actions-processor/actions_named.md)
- [Actions](https://docs.klai.studio/v1/reference/actions-processor/actions_overview.md)
- [runUtilityHook](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/runutilityhook.md)
- [path](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/path.md)
- [debounce](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/debounce.md): Ver +bf-0.01.4
- [throttle](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/throttle.md): Ver +bf-0.01.4
- [showAlert](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/showalert.md)
- [showModal / hideModal](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/showmodal.md): Displays a full screen modal dialogue with customizable buttons
- [function](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/function-1.md)
- [clipboard](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/clipboard.md)
- [cookie](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/cookie.md)
- [setFocus](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/setfocus.md)
- [wait](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/wait.md): pause the actions queue for an amount of time specified
- [emit](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/emit.md)
- [validate](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/validate.md)
- [channelJoinAnon](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/channeljoinanonymous.md): Adds user to anonymous channel
- [channelLeaveAnon](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/channelleaveanon.md): Removes user from anonymous channel
- [messageSend](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/messagesend.md)
- [messageSendAnonChannel](https://docs.klai.studio/v1/reference/actions-processor/actions_overview/messagesendanonchannel.md)
- [Authentication Actions](https://docs.klai.studio/v1/reference/actions-processor/authentication-actions.md)
- [Script Hooks](https://docs.klai.studio/v1/reference/hooksoverview.md)
- [Globals Variables](https://docs.klai.studio/v1/reference/hooksoverview/filemaker-globals.md)
- [$$BF\_Model](https://docs.klai.studio/v1/reference/hooksoverview/filemaker-globals/usdusdbf_model.md)
- [$$BF\_App](https://docs.klai.studio/v1/reference/hooksoverview/filemaker-globals/usdusdbf_app.md)
- [$$BF\_State](https://docs.klai.studio/v1/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/v1/reference/hooksoverview/payloadobject.md)
- [Reducing Payload Size](https://docs.klai.studio/v1/reference/hooksoverview/env_vars.md)
- [API Callback Endpoint](https://docs.klai.studio/v1/reference/hooksoverview/callback.md)
- [Common Hooks](https://docs.klai.studio/v1/reference/hooksoverview/commonoverview.md)
- [Scoped Hooks](https://docs.klai.studio/v1/reference/hooksoverview/hooks.md): Scoped hooks are specific to the page on which they are initiated and contain relevant data about the page context
- [Users & Authentication](https://docs.klai.studio/v1/reference/users-and-authentication.md): This section will guide you through how authentication is built into BetterForms and how you can customize its behavior to meet the needs of your app.
- [Managing User Accounts](https://docs.klai.studio/v1/reference/users-and-authentication/managing-users.md)
- [Custom Login Pages](https://docs.klai.studio/v1/reference/users-and-authentication/custom-login-pages.md)
- [Advanced Configuration](https://docs.klai.studio/v1/reference/advanced-configuration.md)
- [Custom Domains](https://docs.klai.studio/v1/reference/advanced-configuration/custom-domains.md)
- [BF Utility Functions](https://docs.klai.studio/v1/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.
- [BF Error Codes](https://docs.klai.studio/v1/reference/bf-error-codes.md): FM BetterForms can throw various errors due to code or configuration. Errors can appear in the Helper File, Developer Tools ( when enabled) or the browser console. For the lates list of error code see
- [Messaging](https://docs.klai.studio/v1/reference/messaging-ver-0.10.14+.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/v1/reference/messaging-ver-0.10.14+/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/v1/reference/messaging-ver-0.10.14+/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/v1/reference/messaging-ver-0.10.14+/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/v1/reference/messaging-ver-0.10.14+/get-all-users-connected.md)
- [Get active channels](https://docs.klai.studio/v1/reference/messaging-ver-0.10.14+/get-active-channels.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/v1/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.
