---
title: "List runnable node apps"
method: GET
path: "/node-apps"
tags: ["Node Apps"]
---

# List runnable node apps

`GET /node-apps`

List node apps visible to the authenticated user that can be executed through the public API.

## Query parameters

- `limit` integer — Number of items to return (1-1000, default: 100)
- `cursor` string, date-time — Cursor for pagination
- `owner` 'all' | 'workspace' — Filter node apps by owner. Use "workspace" to return only node apps shared with the current workspace.

## Response `200`

Runnable node apps

- object
  - `items` object[], required
    - `id` string, required — Unique identifier for the node app
    - `author_id` string, required — ID of the node app author
    - `workspace_id` string, required — ID of the workspace that owns the node app
    - `name` string, required — Name of the node app
    - `slug` string, required — URL-friendly identifier for the node app
    - `description` string, required — Description of the node app
    - `scope` string, required — Visibility scope: "public", "user", or "workspace"
    - `created_at` string, required — Creation timestamp
    - `updated_at` string, required — Last update timestamp
    - `version` number, required — Selected node app version number
    - `version_created_at` string, required — Creation timestamp of this version
    - `username` string, required — Username of the node app creator
    - `example_outputs` string[], nullable, required — Example output URLs
    - `input_openapi_schema` object, nullable, required — OpenAPI 3.1 JSON Schema
      - `type` 'object', required
      - `properties` object, required
      - `required` string[]
    - `output_openapi_schema` object, nullable, required — OpenAPI 3.1 JSON Schema
      - `type` 'object', required
      - `properties` object, required
      - `required` string[]
    - `node_app_version_id` string, required — Node app version ID to pass to /node-apps/{id}/execute
  - `next_cursor` string, nullable, required

## Other responses

- `400` — Invalid pagination parameters
- `401` — Unauthorized

## Changes

- **2026-09-05** `27a8a554d4fd` — 1 breaking, 1 warning, 1 info
  - the response property `next_cursor` became nullable for the status `200`
  - changed the pattern of the `query` request parameter `cursor` from `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$` to `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$`
  - response property `next_cursor` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`

[Change history](https://skmtc.dev/krea/apis/krea-api/changes/node-apps/get.md)

---

[API](https://skmtc.dev/krea/apis/krea-api.md) · [All operations](https://skmtc.dev/krea/apis/krea-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/krea/krea-api/revisions/27a8a554d4fd/schema)
