# Getting Started

"UbiFunctions" is a serverless computing environment for IoT. Also known as FaaS (Functions as a Service), it lets you run custom functions on demand directly from Ubidots.

Although originally designed as a custom decoding tool, it has grown into an integration and analytics powerhouse.

![](/files/-MiUdQW45kGPwsIq39xc)

### Definition

An UbiFunction is user-defined NodeJS or Python code that runs on-demand, and can be invoked using any of these methods:

* Making an HTTP GET or POST request to the UbiFunction’s URL
* Publishing data through MQTT to the UbiFunction's URL
* Configuring an Ubidots event action
* A time-trigger specified by the user

### When to use UbiFunctions?

Customers commonly use UbiFunctions to:

* Extract data from third-party APIs and insert it into Ubidots
* Build a custom HTTP API gateway to receive data in a custom format
* Extract data from Ubidots, run a custom analysis or transformation, and insert the results back into Ubidots

### How to add UbiFunctions to my account?

This module is available on the [Industrial plan](https://help.ubidots.com/en/articles/7827108-plans-billing-understanding-the-advantages-of-the-industrial-plan) and above. To upgrade to an Industrial plan:

1. Select **My Profile** from the user dropdown in the top-right corner of your Admin App.
2. Select **Billing** from the left navigation panel.
3. Click **Change plan**, then select the **Industrial** plan or above.
4. Click **Update Plan** to save the change and activate UbiFunctions.

### Billing

The UbiFunctions module includes a limited number of executions and is billed based on usage:

* Includes 1 thousand executions per month
* When an execution exceeds 2 seconds, it counts as 2 or more executions in 2-second increments
* Executions are billed at **$5 per million executions.**


---

# 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://dev.ubidots.com/ubifunctions/getting-started.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.
