# Public API Builder

The Public API Builder tool allows you to create *strictly typed* Public APIs for your Workers, allowing you to communicate with a Worker from an external source, such as a Worker's Caller, another LabVIEW application or from TestStand.

You can use the Public API builder tool to:

* Create and edit [Public API Requests](/workers-tools/workers-tools-menu/public-api-builder/public-requests.md)
* Create and edit [Public API Requests with Reply](/workers-tools/workers-tools-menu/public-api-builder/public-requests-w-reply.md)
* Create and edit [Public API Responses](/workers-tools/workers-tools-menu/public-api-builder/public-responses.md)
* [Override Public API MHL cases ](/workers-tools/workers-tools-menu/public-api-builder/override-mhl-cases.md)from a Worker base class into a Worker
* [Create Dynamically Load Worker VIs](#create-dynamically-load-worker-vi)

<figure><img src="/files/jGP10zobRfyvLCLquQxb" alt=""><figcaption><p>Workers Public API Builder tool</p></figcaption></figure>

## Create Dynamically Load Worker VI

Allows you to create a strictly typed Dynamically Load Worker VI that you can use to load an instance of a Worker at run-time from within another Worker's MHL.

Every Dynamically Load Worker VI filename takes the prefix: **dlw\_** (**d**ynamically **l**oad **w**orker), followed by the name of the Worker that owns the VI. An example of a Dynamically Load Worker Public API VI is shown below.

<figure><img src="/files/sKKOnxpYvgtty7Pfi10A" alt=""><figcaption><p>dlw_Worker D.vi</p></figcaption></figure>

A Dynamically Load Worker VI will dynamically load the Worker that owns the VI as a subWorker into the Worker that the VI is called from, and returns the loaded Worker's object containing the Worker's Public Properties. Initialization data that is to be received by the Dynamically Loaded Worker's \<Initialize> MHL case can be wired to the **Initialization Data** input. The Dynamically Loaded Worker requires an alias ( **Worker Alias** ) which must be unique to the Worker it is called from. If a Worker is already loaded with the same Alias, an error will be returned.

{% hint style="danger" %}
**Important**

This VI can only be called from within another Worker. To load a Worker from an external LabVIEW application or from TestStand, please use an [Asynchronous Launcher VI](/fundamental-concepts/launcher-vis.md#asynchronous-launcher-vis).
{% endhint %}

{% hint style="info" %}
**Good to know**

An example of how to use a Dynamically Load Worker VI can be found in the [Workers Fundamentals](/getting-started/example-projects.md) example project.
{% endhint %}


---

# 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.workersforlabview.io/workers-tools/workers-tools-menu/public-api-builder.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.
