---
title: "React to a row’s thread"
method: POST
path: "/v1/tables/{tableId}/rows/{rowId}/reactions"
tags: ["Tables"]
---

# React to a row’s thread

`POST /v1/tables/{tableId}/rows/{rowId}/reactions`

## Request

- Base URL: `https://api.banksync.io`
- URL: `https://api.banksync.io/v1/tables/{tableId}/rows/{rowId}/reactions`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Leave (`on: true`) or take back (`on: false`) a reaction of a kind the table admits. A kind the table does not admit is a 422 `REACTION_NOT_ADMITTED`; BankSync’s tables admit none today, so the operation exists for the contracts that will.

## Path parameters

- `tableId` string, required: Table ID
- `rowId` string, required: Row ID

## Request body

- object
  - `kind` string, required
  - `on` boolean, required

## Response `200`

Whether the reaction changed

- object
  - `success` true, required
  - `changed` boolean, required

## Other responses

- `400`: Validation failed, or a read-only field was written — `code` names the refusal and `details[]` the offending field or cell
- `401`: Unauthorized
- `403`: Forbidden — missing scope, insufficient role, or plan limit reached
- `404`: Not found

---

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