---
title: "Upsert workflow rule"
method: PUT
path: "/workflow-rule/{projectId}"
tags: ["Workflow Rules"]
---

# Upsert workflow rule

`PUT /workflow-rule/{projectId}`

Create a workflow rule, or update the target column of the existing rule for the same integration and event.

## Path parameters

- `projectId` string, required

## Request body

- object
  - `integrationType` string, required
  - `eventType` string, required
  - `columnId` string, required

## Response `200`

The created or updated rule

- WorkflowRuleRow
  - `id` string, required
  - `projectId` string, required
  - `integrationType` string, required
  - `eventType` string, required
  - `columnId` string, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400` — Invalid body, or unknown project
- `401` — Missing or invalid credentials
- `403` — No workspace access, or missing project:update permission

## Changes

- **2026-08-24** `08bbb5bedb5d` — 10 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
  - added the required property `columnId` to the response with the `200` status
  - …6 more
- **2026-07-11** `32cece1ebe43` — 2 breaking
  - request body became required
  - the response's body type/format changed from ``/`` to `object`/`` for status `200`
- **2026-02-21** `3a866dc99326` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/usekaneo/apis/kaneo-api/changes/workflow-rule/:projectId/put.md)

---

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