UiPath Documentation
functions
latest
false
Functions user guide
  • Overview
    • About Functions
  • JavaScript functions
    • Getting started
    • Building JavaScript functions
    • HTTP triggers and routing
    • Function context
    • Accessing platform services
    • Testing and debugging
  • Python functions
  • Deploy and run

Getting started

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 uip CLI 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:

FilePurpose
functions/hello.tsYour function logic — one function per file. Starts as a runnable example.
functions/_*.tsShared helpers. A leading underscore marks a file as a helper, so it gets no entry point and no trigger.
uipath.jsonMaps function names to their entry points.
package.json, tsconfig.jsonStandard 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​

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated