Skip to content
Select themeSelect language

`POST /api/suggestions/{id}/action` — act on a suggestion. The optional body carries the client's displayed-model consent token (#976).

POST
/api/suggestions/{id}/action
curl --request POST \
--url https://example.com/api/suggestions/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/action \
--header 'Content-Type: application/json' \
--data '{ "expected_model": "example" }'
id
required
string format: uuid
Media typeapplication/json

POST /api/suggestions/{id}/action body (#976 audit R1). Optional consent token: the model the CLIENT displayed when the user confirmed. A suggestion row is refreshed in place under a stable id, so without this a confirm modal reading “pin to sonnet” could apply an opus pin the analyzer swapped in between render and click. Absent = apply whatever the row currently says (automation callers).

object
expected_model
string | null
Examplegenerated
{
"expected_model": "example"
}
Media typeapplication/json
object
actioned_at
string | null format: date-time
actioned_by
string | null format: uuid
created_at
required
string format: date-time
details
required
dismissed_reason
string | null
evidence
required
id
required
string format: uuid
status
required
string
summary
required
string
type
required
string
updated_at
required
string format: date-time
workspace_id
required
string format: uuid
Examplegenerated
{
"actioned_at": "2026-04-15T12:00:00Z",
"actioned_by": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"created_at": "2026-04-15T12:00:00Z",
"details": "example",
"dismissed_reason": "example",
"evidence": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"status": "example",
"summary": "example",
"type": "example",
"updated_at": "2026-04-15T12:00:00Z",
"workspace_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}