Skip to content

Create function

View .md
POST

Create a new Zavu Function. The function starts in draft status. A dedicated API key is auto-provisioned and injected as the ZAVU_API_KEY secret so the function can call back into the Zavu API without manual setup.

Provide sourceCode to seed the draft. Call POST /v1/functions/{functionId}/deploy afterwards to publish.

Authorization

  • Authorizationheaderrequired

    Bearer YOUR_API_KEY. Create a key in the dashboard.

Body

application/json

  • slugstringrequired

    URL-safe identifier (lowercase, digits, hyphens). Must be unique per project.

    Limitsmin length 1 · max length 50
  • namestringrequired
    Limitsmax length 80
  • descriptionstring
    Limitsmax length 280
  • runtimestring

    Runtime the function is deployed on.

    One ofnodejs24
  • timeoutSecinteger

    Per-invocation timeout in seconds. Event and cron invocations are asynchronous, so a long timeout only bounds cost; a tool called during a live conversation holds up the reply, and a function exposed over HTTP is additionally bounded by the platform's HTTP response limit.

    Default30
    Limitsmin 1 · max 180
  • memoryMbinteger
    One of1282565121024
    Default256
  • httpEnabledboolean

    Whether to expose a public HTTPS URL for this function.

    Defaultfalse
  • filesobject

    The project's source files, keyed by path relative to the project root (e.g. index.ts, lib/orders.ts). Imports between them are resolved when the function is built, so a function can be split across as many files as it needs.

    Paths must be relative and use forward slashes; .., node_modules/ and package.json are rejected. npm packages are not uploaded here — declare them under dependencies and Zavu installs them. Limits: 200 files and 900,000 bytes for the whole tree.

    1 properties
    • {key}string
  • entrypointstring

    Which file in files is the entry point. Defaults to index.ts.

    Defaultindex.ts
  • sourceCodestring

    Shortcut for a single-file function: exactly equivalent to sending files with one entry named after entrypoint (index.ts by default). Fully supported — use whichever fits. If both are sent, files wins.

    Limitsmax length 900000
  • dependenciesobject

    npm dependencies. Keys are package names, values are semver ranges.

    1 properties
    • {key}string

Responses

201Function created.
  • functionobjectrequired

    A Zavu Function — user-supplied TypeScript that runs in Zavu Cloud and reacts to messaging events or HTTP requests.

    14 properties
    • idstringrequired
    • slugstringrequired

      URL-safe identifier, unique per project.

    • namestringrequired
    • descriptionstringnullable
    • runtimestringrequired

      Runtime the function is deployed on.

      One ofnodejs24
    • statusstringrequired

      Lifecycle status of a Zavu Function.

      One ofdraftbundlingdeployingactivefaileddisabled
    • timeoutSecintegerrequired

      Per-invocation timeout in seconds.

    • memoryMbintegerrequired

      Memory allocation in MB.

    • httpEnabledbooleanrequired

      Whether the function can be invoked over HTTPS via its public URL.

    • publicUrlstring<uri>nullable

      HTTPS endpoint, present only while httpEnabled is true. Null otherwise, including for a function that was previously exposed — the stored URL stops serving the moment HTTP is turned off, so it is never returned.

    • dependenciesobjectrequired

      npm dependencies installed in the function bundle. Keys are package names, values are semver ranges.

      1 properties
      • {key}string
    • activeDeploymentIdstringnullable

      ID of the deployment currently serving traffic.

    • createdAtstring<date-time>required
    • updatedAtstring<date-time>required
400Invalid request (e.g. duplicate slug, invalid dependencies).
  • codestringrequired
  • messagestringrequired
  • detailsobject
401Unauthorized.
  • codestringrequired
  • messagestringrequired
  • detailsobject
409A function with this `slug` already exists in the project. Slugs are unique per project.
  • codestringrequired
  • messagestringrequired
  • detailsobject