# Controller API Reference

## Overview

The Controller API is the primary way of interacting with Captivate from a data controller. If you are building your own data controller, make sure you read the [Controller Setup Page](/captivate-api/captivate-controller-reference.md) to learn how to set up your input definition with an XML file and where to put your own HTML files and other assets.

JavaScript-based data controllers are usually hosted by an HTML file loaded into a browser (either Captivate’s built in browser, or a local browser on your computer or mobile device).

Your HTML file should provide some form of UI as well as the JavaScript code to make use of our exposed API.

If you want to access Captivate’s API from outside of the context of an HTML file in a browser, first, get familiar with how the Controller API works, and then head over to our [External API Reference.](/captivate-api/advanced-api-reference.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://developers.newbluefx.com/captivate-api/javascript-api-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.
