---
title: "get kafka trigger"
method: GET
path: "/w/{workspace}/kafka_triggers/get/{path}"
tags: ["kafka_trigger"]
---

# get kafka trigger

`GET /w/{workspace}/kafka_triggers/get/{path}`

## Path parameters

- `workspace` string, required
- `path` string, required

## Query parameters

- `get_draft` boolean

## Response `200`

kafka trigger deleted

- object — Overlay fields added to every "get by path" response that accepts the `get_draft` query parameter. The deployed payload is sent untouched in the response body; the authed user's saved draft for this path — whatever shape the editor wrote — is attached as the sibling `draft` field when `get_draft=true` and a draft exists. The frontend pairs the two to present diff / reset / discard UI; the server never merges them. When `no_deployed=true` there is no deployed row at this path — the response body is a best-effort stand-in synthesized from the draft, and only `draft` is canonical. Callers should disable "diff vs deployed" UI in that case.
  - `path` string, required — The unique Windmill path for this trigger. Must be of the form `u/<user>/<path>` or `f/<folder>/<path>`. This is the trigger object path, not the HTTP route path.
  - `script_path` string, required — Path to the script or flow to execute when triggered
  - `permissioned_as` string, required — The user or group this trigger runs as (permissioned_as)
  - `extra_perms` object, required — Additional permissions for this trigger
  - `workspace_id` string, required — The workspace this trigger belongs to
  - `edited_by` string, required — Username of the last person who edited this trigger
  - `edited_at` string, date-time, required — Timestamp of the last edit
  - `is_flow` boolean, required — True if script_path points to a flow, false if it points to a script
  - `mode` 'enabled' | 'disabled' | 'suspended', required — job trigger mode
  - `labels` string[]
  - `draft_only` boolean — True when this row is a per-user draft with no deployed trigger at the same path. Set by list endpoints when `include_draft_only=true` synthesizes the row from the draft. Frontend renders a "Draft" badge.
  - `is_draft` boolean, required — True when the authed user has a per-user draft at this path (over a deployed row or a synthesized draft-only row). Frontend appends a `*` to the displayed name.
  - `kafka_resource_path` string, required — Path to the Kafka resource containing connection configuration
  - `group_id` string, required — Kafka consumer group ID for this trigger
  - `topics` string[], required — Array of Kafka topic names to subscribe to
  - `filters` TriggerFilter[], required — Filters to match incoming messages (only matching messages trigger the script). Each entry is either a leaf `{key, value}` (top-level field) or `{path, value}` (dotted path into nested objects), or a group `{any_of: [...]}` / `{all_of: [...]}` / `{none_of: [...]}` nesting more entries. Entries at the top level are combined with `filter_logic`.
    - union — Either a leaf filter, matching a field of the message (parsed as JSON) against a value by equality (or superset, when the value is an object or array) — addressed by `key` for a top-level field or `path` for a dotted path into nested objects — or a group nesting sub-filters under a boolean operator (`none_of` matches when none of its sub-filters do).
      - object
        - `key` string, required
        - `value` unknown, required
      - object
        - `path` string, required — Dotted path into nested objects, e.g. `a.b.c`. Does not traverse arrays.
        - `value` unknown, required
      - object
        - `any_of` TriggerFilter[], required
      - object
        - `all_of` TriggerFilter[], required
      - object
        - `none_of` TriggerFilter[], required
  - `filter_logic` 'and' | 'or' — Logic to apply when evaluating the top-level filters. 'and' requires all of them to match, 'or' requires any of them to match. Nested `any_of`/`all_of`/`none_of` groups carry their own logic.
  - `auto_offset_reset` 'latest' | 'earliest' — Initial offset behavior when consumer group has no committed offset. 'latest' starts from new messages only, 'earliest' starts from the beginning.
  - `auto_commit` boolean — When true (default), offsets are committed automatically after receiving each message. When false, you must manually commit offsets using the commit_offsets endpoint.
  - `server_id` string — ID of the server currently handling this trigger (internal)
  - `last_server_ping` string, date-time — Timestamp of last server heartbeat (internal)
  - `error` string — Last error message if the trigger failed
  - `error_handler_path` string — Path to a script or flow to run when the triggered job fails
  - `error_handler_args` ScriptArgs — The arguments to pass to the script or flow
  - `retry` Retry — unresolved $ref
  - `draft_saved_at` string, date-time
  - `no_deployed` boolean
  - `draft` object
  - `other_drafts_users` object[] — Other workspace users (and the legacy NULL-email row, if any) with a saved draft at the same path. Populated only on the authed user's "get by path" responses for kinds the editor surfaces a fork banner for (script, flow, app, raw_app). Empty / omitted for kinds without that UI.
    - `username` string, nullable — Workspace username of the draft owner. `null` represents the legacy workspace-level (NULL-email) row. Emails never leave the server.
    - `draft_saved_at` string, date-time, required — When this user's draft was last saved (`draft.created_at`), surfaced in the fork modal as "Last updated".

---

[API](https://skmtc.net/windmill/apis/windmill-api.md) · [All operations](https://skmtc.net/windmill/apis/windmill-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/windmill/windmill-api/revisions/cd9efd22928e/schema)
