---
title: "Record that the user applied or dismissed a proposal"
method: POST
path: "/assistant/proposals/{proposalId}"
tags: ["Assistant"]
---

# Record that the user applied or dismissed a proposal

`POST /assistant/proposals/{proposalId}`

The frontend applies proposals through its existing flows (widgets through the dashboard page state, a report through POST /reports/generations) and then reports the outcome here, so the proposal part's status is persisted. pending → applied | dismissed; repeating the current status is accepted; changing a settled proposal is a 409. result is an optional JSON object stored with the proposal (for example the created report's id). Requires org.view_dashboard; 404 for another user's proposal.

## Path parameters

- `proposalId` string, required

## Request body

- AssistantProposalUpdateRequest
  - `result` object
  - `status` string, required — applied or dismissed

## Response `200`

The proposal's status

- AssistantProposalUpdateResponse
  - `data` object, required
    - `proposalId` string, required
    - `status` string, required — pending, applied or dismissed

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — The proposal was already applied or dismissed

## Changes

- **2026-10-01** `b4751fd15397` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/assistant/proposals/:proposalId/post.md)

---

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