# Curate a List of Titles

You might have a need to write a controller that can completely manage the full list of titles. It might need to access all of the titles in the list, understand their status, control their playback, and display what they look like.

For example, you might want to interface a hardware controller to control the playback of graphics or create a simple web app that runs on a browser elsewhere in the network, empowering a second person to drive all graphics playout.

<figure><img src="/files/iEET5cCOI7DbKrYOfnU3" alt=""><figcaption></figcaption></figure>

#### Retrieve the title data and icons <a href="#retrieve-the-title-data-and-icons" id="retrieve-the-title-data-and-icons"></a>

The [`getTitleControlInfo`](/captivate-api/all-commands-reference/status-information.md#api-command-gettitlecontrolinfo) command makes this very easy to do.

```javascript
scheduler.scheduleCommand('getTitleControlInfo', { icon: true, width: 100, height: 70 }, {}, (reply) => {
  let titleInfo = JSON.parse(reply);
  // ... Parse titleInfo and extract information and images for each title in the list.
});
```

| Parameter            | Description                                                 |
| -------------------- | ----------------------------------------------------------- |
| `icon`               | indicates this should return icons for all the titles.      |
| `width` and `height` | set the size of the returned icons.                         |
| `input`              | when set, only returns titles connected to the named input. |
| `id`                 | when set, only returns the one title listed by id.          |

[The returned payload is relatively extensive](/captivate-api/all-commands-reference/status-information.md#api-command-gettitlecontrolinfo), so the best way to find out what’s possible is to look at the code and run in the debugger. Capture the returned JavaScript object with a breakpoint or print it to the console to see all your options.

Or use the [`JSON Command Tester`](/api-examples/json-command-tester.md)which displays all returned objects too.

#### Subscribe for Notifications <a href="#subscribe-for-notifications" id="subscribe-for-notifications"></a>

Use the “[subscribe](/captivate-api/all-commands-reference/notifications.md#api-command-subscribe)” command. In this case, it is being applied individually for each title.

```javascript
scheduler.scheduleCommand('subscribe', { id: title.id, sender: cleanedId, events: 'play, control, data' },
```


---

# 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/api-examples/sample-controllers-tour/05-curate-a-list-of-titles.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.
