# geni app run-handler (/cli/resource/app/run-handler)



```sh
geni app run-handler <name> [id] [flags]
```

Dispatches one handler against the live app with the given input and prints the full result. Bypasses the cache — the same code path the iframe takes when a user clicks something. Use it to reproduce a failure or spot-check a handler before or after a publish. Exits nonzero on a handler error.

Runs against the **published** app, so [`publish`](/cli/resource/publish) first.

## Synopsis [#synopsis]

```sh
geni app run-handler listCustomers --input '{"limit":50}'
geni app run-handler tagCustomer wf_01HX --input '{"id":"cus_1","tag":"lead"}'
```

| Arg / Flag            | Notes                                                    |
| --------------------- | -------------------------------------------------------- |
| `<name>`              | Handler name (the `name` declared in `app.json`).        |
| `[id]`                | App id. Omit to use the marker in `--dir`.               |
| `--input <json>`      | Handler input as a JSON object. Defaults to `{}`.        |
| `--timeout <seconds>` | Server-side wait before timing out. Default 60, max 300. |
| `--dir <path>`        | Resource directory. Defaults to cwd.                     |
| `--json`              | Machine-readable output.                                 |

Inspect past runs with [`app invocations`](/cli/resource/app/invocations).
