# 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;


---

# 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.mercurydata.app/zephyr-full-customization/learn/custom-apis-serverless-functions.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.
