# Custom APIs - Serverless Functions

At this point, you've learned how to build indexing programs that are executed as the network closes its ledgers enabling real-time indexing solutions, but that's not the only feature made possible through the ZephyrVM. Mercury's cloud execution environment also enables you to create *serverless functions* inside your already existing indexing programs.

In this section, we will learn how to set up fully custom APIs with Zephyr. This will be done thanks to *serverless functions* that are defined on the program and called on reques&#x74;*.* We will start with a general introduction to serverless functions, followed by step-by-step explanations on how to implement the various use cases powered by them, which, as mentioned earlier, include:

* Designing customizable dashboards.
* Implementing querying APIs, which can be fully customized for composing stored and ledger data.
* Creating custom RPC-alike endpoints, useful for simulations and on-demand "getLedger" APIs.

&#x20;
