Log inGet started

service

Updated 5 September 2026

The service namespace — 21 functions.

globals/service/authenticated

service.authenticated() -> boolean

Whether a platform identity (JWT) is available to attach to service calls. Returns only a boolean — never the token.

Returns boolean — True if a caller identity is available.

if not service.authenticated() then error("link ZeroMind") end

globals/service/balance

service.balance() -> string?

Read the caller's credit balance from ZeroMind. Returns a promise handle for task.await() resolving the balance JSON, or nil when the gateway is unconfigured or no caller identity is available.

Returns string? — Promise handle for task.await(), or nil if not ready.

local h = service.balance(); local raw = h and task.await(h)

globals/service/gatewayConfigured

service.gatewayConfigured() -> boolean

Whether the ZeroMind service gateway has been configured. Service handlers use this to distinguish "gateway not configured" from "not signed in" when invoke returns nil.

Returns boolean — True if the gateway base URL is set.

if not service.gatewayConfigured() then error("no gateway") end

globals/service/invoke

service.invoke(offering: string, endpoint: string, opts: InvokeOpts?) -> string?

Invoke a provider offering's logical endpoint through ZeroMind. Returns a promise handle for task.await() resolving the InvokeResponse JSON, or nil when the gateway is unconfigured or no caller identity is available. The JWT and real upstream URL are never exposed to Luau.

Parameters

  • offering string — Fully-qualified offering identity provider/name (e.g. "origozero/mesh_gen").
  • endpoint string — Logical endpoint name (e.g. "create_preview").
  • opts InvokeOpts (optional){ params?, headers?, body?, idempotency_key? }.

Returns string? — Promise handle for task.await(), or nil if not ready.

local h = service.invoke("origozero/mesh_gen", "create_preview", { body = { prompt = p } })

globals/service/jobStatus

service.jobStatus(jobId: string) -> string?

Poll a submitted service job. Returns a promise handle for task.await() resolving the JobStatusResponse JSON { job_id, status, result?, error? }: status walks pending/running -> succeeded (with result, the same InvokeResponse invoke returns) or failed (with error). nil when the gateway is unconfigured or no caller identity is available.

Parameters

  • jobId string — Job id returned by submitJob.

Returns string? — Promise handle resolving the job status JSON, or nil if not ready.

local h = service.jobStatus(jobId); local raw = h and task.await(h)

globals/service/submitJob

service.submitJob(offering: string, endpoint: string, opts: InvokeOpts?) -> string?

Submit a durable async invocation of an offering endpoint. Same arguments as invoke, but the provider round-trip runs server-side (off this connection), so a slow synchronous provider or a dropped link no longer loses the result. Returns a promise handle for task.await() resolving { job_id, status }; poll it with jobStatus. nil when the gateway is unconfigured or no caller identity is available.

Parameters

  • offering string — Fully-qualified offering identity provider/name (e.g. "origozero/mesh_gen").
  • endpoint string — Logical endpoint name (e.g. "create_preview").
  • opts InvokeOpts (optional){ params?, headers?, body?, idempotency_key? }.

Returns string? — Promise handle resolving { job_id, status }, or nil if not ready.

local h = service.submitJob("origozero/mesh_gen", "create_preview", { body = { prompt = p } })

modules/service/README

require("@builtin/modules/api/engine/service") -- service (also available as global 'service')

Credit-metered service invoke. Public Luau surface over the __service Internal FFI namespace.

Usage: local service = require("@builtin/modules/api/engine/service") Also available as global: service

modules/service/authenticated

authenticated(): boolean

Whether a platform identity (JWT) is available to attach to service calls. Returns only a boolean — never the token.

if not service.authenticated() then error("link ZeroMind") end

modules/service/balance

balance(): string?

Read the caller's credit balance from ZeroMind. Returns a promise handle for task.await() resolving the balance JSON, or nil when the gateway is unconfigured or no caller identity is available.

local h = service.balance(); local raw = h and task.await(h)

modules/service/configureGateway

configureGateway(baseUrl: string): boolean

TRUSTED ONLY. Set the ZeroMind base URL that service.invoke and service.balance target. The trusted-VM auth bootstrap calls this with the resolved issuer.

Parameters

  • baseUrl string — ZeroMind base URL (e.g. "https://origozero.ai").
service.configureGateway("https://origozero.ai")

modules/service/configureWorld

configureWorld(guid: string): boolean

TRUSTED ONLY. Set the bound world guid attached to metered service invocations, so the credit ledger attributes each charge to the world it happened in. The trusted-VM world-load hook calls this on every bind so a runtime world switch re-points attribution.

Parameters

  • guid string — The bound world's guid.
service.configureWorld(world.guid())

modules/service/gatewayConfigured

gatewayConfigured(): boolean

Whether the ZeroMind service gateway has been configured. Service handlers use this to distinguish "gateway not configured" from "not signed in" when invoke returns nil.

if not service.gatewayConfigured() then error("no gateway") end

modules/service/invoke

invoke(offering: string, endpoint: string, opts: InvokeOpts?): string?

Invoke a provider offering's logical endpoint through ZeroMind. Returns a promise handle for task.await() resolving the InvokeResponse JSON, or nil when the gateway is unconfigured or no caller identity is available. The JWT and real upstream URL are never exposed to Luau.

Parameters

  • offering string — Fully-qualified offering identity provider/name (e.g. "origozero/mesh_gen").
  • endpoint string — Logical endpoint name (e.g. "create_preview").
  • opts InvokeOpts? (optional){ params?, headers?, body?, idempotency_key? }.
local h = service.invoke("origozero/mesh_gen", "create_preview", { body = { prompt = p } })

modules/service/jobStatus

jobStatus(jobId: string): string?

Poll a submitted service job. Returns a promise handle for task.await() resolving the JobStatusResponse JSON { job_id, status, result?, error? }: status walks pending/running -> succeeded (with result, the same InvokeResponse invoke returns) or failed (with error). nil when the gateway is unconfigured or no caller identity is available.

Parameters

  • jobId string — Job id returned by submitJob.
local h = service.jobStatus(jobId); local raw = h and task.await(h)

modules/service/submitJob

submitJob(offering: string, endpoint: string, opts: InvokeOpts?): string?

Submit a durable async invocation of an offering endpoint. Same arguments as invoke, but the provider round-trip runs server-side (off this connection), so a slow synchronous provider or a dropped link no longer loses the result. Returns a promise handle for task.await() resolving { job_id, status }; poll it with jobStatus. nil when the gateway is unconfigured or no caller identity is available.

Parameters

  • offering string — Fully-qualified offering identity provider/name (e.g. "origozero/mesh_gen").
  • endpoint string — Logical endpoint name (e.g. "create_preview").
  • opts InvokeOpts? (optional){ params?, headers?, body?, idempotency_key? }.
local h = service.submitJob("origozero/mesh_gen", "create_preview", { body = { prompt = p } })

typed/builtin//modules/api/engine/service/service/authenticated

service.authenticated() -> boolean

Whether a platform identity (JWT) is available to attach to service calls. Returns only a boolean — never the token.

Returns boolean — True if a caller identity is available.

if not service.authenticated() then error("link ZeroMind") end

typed/builtin//modules/api/engine/service/service/balance

service.balance() -> string?

Read the caller's credit balance from ZeroMind. Returns a promise handle for task.await() resolving the balance JSON, or nil when the gateway is unconfigured or no caller identity is available.

Returns string? — Promise handle for task.await(), or nil if not ready.

local h = service.balance(); local raw = h and task.await(h)

typed/builtin//modules/api/engine/service/service/gatewayConfigured

service.gatewayConfigured() -> boolean

Whether the ZeroMind service gateway has been configured. Service handlers use this to distinguish "gateway not configured" from "not signed in" when invoke returns nil.

Returns boolean — True if the gateway base URL is set.

if not service.gatewayConfigured() then error("no gateway") end

typed/builtin//modules/api/engine/service/service/invoke

service.invoke(offering: string, endpoint: string, opts: InvokeOpts?) -> string?

Invoke a provider offering's logical endpoint through ZeroMind. Returns a promise handle for task.await() resolving the InvokeResponse JSON, or nil when the gateway is unconfigured or no caller identity is available. The JWT and real upstream URL are never exposed to Luau.

Parameters

  • offering string — Fully-qualified offering identity provider/name (e.g. "origozero/mesh_gen").
  • endpoint string — Logical endpoint name (e.g. "create_preview").
  • opts InvokeOpts (optional){ params?, headers?, body?, idempotency_key? }.

Returns string? — Promise handle for task.await(), or nil if not ready.

local h = service.invoke("origozero/mesh_gen", "create_preview", { body = { prompt = p } })

typed/builtin//modules/api/engine/service/service/jobStatus

service.jobStatus(jobId: string) -> string?

Poll a submitted service job. Returns a promise handle for task.await() resolving the JobStatusResponse JSON { job_id, status, result?, error? }: status walks pending/running -> succeeded (with result, the same InvokeResponse invoke returns) or failed (with error). nil when the gateway is unconfigured or no caller identity is available.

Parameters

  • jobId string — Job id returned by submitJob.

Returns string? — Promise handle resolving the job status JSON, or nil if not ready.

local h = service.jobStatus(jobId); local raw = h and task.await(h)

typed/builtin//modules/api/engine/service/service/submitJob

service.submitJob(offering: string, endpoint: string, opts: InvokeOpts?) -> string?

Submit a durable async invocation of an offering endpoint. Same arguments as invoke, but the provider round-trip runs server-side (off this connection), so a slow synchronous provider or a dropped link no longer loses the result. Returns a promise handle for task.await() resolving { job_id, status }; poll it with jobStatus. nil when the gateway is unconfigured or no caller identity is available.

Parameters

  • offering string — Fully-qualified offering identity provider/name (e.g. "origozero/mesh_gen").
  • endpoint string — Logical endpoint name (e.g. "create_preview").
  • opts InvokeOpts (optional){ params?, headers?, body?, idempotency_key? }.

Returns string? — Promise handle resolving { job_id, status }, or nil if not ready.

local h = service.submitJob("origozero/mesh_gen", "create_preview", { body = { prompt = p } })
  • api
  • reference