---
title: "List what a node still needs"
method: GET
path: "/v1/projects/{project_id}/playbook-cases/{case_id}/missing"
tags: ["Playbooks"]
---

# List what a node still needs

`GET /v1/projects/{project_id}/playbook-cases/{case_id}/missing`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/projects/{project_id}/playbook-cases/{case_id}/missing`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

Returns the manual inputs still unset, or refused by their schema, upstream of `node_id`, grouped in waves: nothing in a later wave can run before the earlier ones' required inputs are filled. Optional inputs are listed with `required: false`; they never block a node.

## Path parameters

- `case_id` string, required

## Query parameters

- `node_id` string, required

## Response `200`

The missing inputs, by wave

- PlaybookCaseMissing
  - `case_id` string
  - `node_id` string
  - `waves` array[]: Missing inputs grouped by the wave of the node that holds them
    - PlaybookMissingInput[]
      - `node_id` string
      - `input` string
      - `schema` object: The JSON Schema a value must satisfy
      - `description` string
      - `required` boolean: Whether the node waits for this input; an optional one never blocks it

## Other responses

- `400`: Bad request — node_id names no node of the case's version
- `401`: Unauthorized
- `404`: Case not found

---

[API](https://skmtc.dev/naturali/apis/naturali-ai-api.md) · [All operations](https://skmtc.dev/naturali/apis/naturali-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/naturali/apis/naturali-ai-api/revisions/e4905b78f422?raw)
