- Overview
- JavaScript functions
- Python functions
- Deploy and run
Install the CLI, scaffold a JavaScript or TypeScript function project, and run your first function locally.
This page walks you through installing the CLI, scaffolding a project, and running your first JavaScript function locally.
Prerequisites
- Node.js 20 or later.
- The
uipCLI with the functions tool:
npm install -g @uipath/cli
uip tools install @uipath/function-tool
npm install -g @uipath/cli
uip tools install @uipath/function-tool
- A UiPath account with access to Orchestrator, for publishing and invoking.
Scaffold a project
uip function new my-functions -l ts
cd my-functions
uip function new my-functions -l ts
cd my-functions
TypeScript is the default; pass -l js for JavaScript, or --empty to skip the sample function.
The scaffold creates:
| File | Purpose |
|---|---|
functions/hello.ts | Your function logic — one function per file. Starts as a runnable example. |
functions/_*.ts | Shared helpers. A leading underscore marks a file as a helper, so it gets no entry point and no trigger. |
uipath.json | Maps function names to their entry points. |
package.json, tsconfig.json | Standard project files. |
Write your first function
import { defineFunction, defineSchema } from "@uipath/coded-functions-js-sdk";
interface HelloInput {
name: string;
}
interface HelloOutput {
message: string;
}
export default defineFunction({
name: "hello",
method: "POST",
path: "/hello",
input: defineSchema<HelloInput>(),
output: defineSchema<HelloOutput>(),
handler: async (input) => ({ message: `Hello, ${input.name}!` }),
});
import { defineFunction, defineSchema } from "@uipath/coded-functions-js-sdk";
interface HelloInput {
name: string;
}
interface HelloOutput {
message: string;
}
export default defineFunction({
name: "hello",
method: "POST",
path: "/hello",
input: defineSchema<HelloInput>(),
output: defineSchema<HelloOutput>(),
handler: async (input) => ({ message: `Hello, ${input.name}!` }),
});
defineSchema<T>() derives the JSON Schema from your TypeScript interface, so the same type declares the contract and types the handler. In JavaScript projects, pass a JSON Schema object instead.
The method and path make this function callable over HTTP. Omit both and it runs only as a job — see Building JavaScript functions.
Run it locally
uip function serve
uip function serve
This starts a hot-reload server on http://localhost:7070. Call the function:
curl -X POST http://localhost:7070/hello \
-H "Content-Type: application/json" \
-d '{"name":"Alice"}'
# {"message":"Hello, Alice!"}
curl -X POST http://localhost:7070/hello \
-H "Content-Type: application/json" \
-d '{"name":"Alice"}'
# {"message":"Hello, Alice!"}
To reach Orchestrator from a local run, put UIPATH_ACCESS_TOKEN, UIPATH_BASE_URL, UIPATH_ORG_ID and UIPATH_TENANT_ID in a .env file at the project root. serve loads it on both supported runtimes.
Next steps
- Building JavaScript functions — contracts, errors, and the two function shapes.
- HTTP triggers and routing — routes, path parameters, and calling a deployed function.
- Packaging and publishing — deploy to Orchestrator.
- CLI reference — every command and flag.