ApiReferenceRecommendations
PATCH /v1/projects/:projectId/recommendations/:recommendationId
Acknowledge, dismiss, or mark a recommendation as acted-on. Idempotent.
PATCH
/v1/projects/{projectId}/recommendations/{recommendationId}Phase 1stable
- Auth
- Bearer
- Scope
- metrics:read
Flip a recommendation's status. Use this to clear a row out of your default status=open view (dismissed), record that an agent has handled it (acted_on), or just mark it as seen (acknowledged).
The endpoint is idempotent — re-PATCHing to the same status returns the same row without an additional state change. Status transition timestamps (acknowledged_at, dismissed_at, acted_on_at) are stamped on the first transition into each terminal state and preserved across later changes.
Path
projectIdstring (UUID)requiredProject the recommendation belongs to.recommendationIdstringrequiredWire id from the list endpoint (`rec_<uuid>`).
Body
statusstringrequiredTarget status.One of:open,acknowledged,dismissed,acted_onnotestringoptionalOptional free-text reason (≤1024 chars). Persisted alongside the row for audit.
Example request
curl -X PATCH \
"https://api.layers.com/v1/projects/prj_254a4ce1.../recommendations/rec_5e4d3c2b..." \
-H "Authorization: Bearer lp_..." \
-H "Content-Type: application/json" \
-d '{"status":"dismissed","note":"Covered by manual creative refresh"}'Response
200OK
{
"recommendationId": "rec_5e4d3c2b...",
"status": "dismissed",
"updatedAt": "2026-04-26T22:30:00Z"
}Notes
- The optimizer pipeline that generates recommendations refreshes
confidence,rationale, andevidenceon subsequent runs but never overwrites a partner-flipped status. Once you mark somethingdismissed, it stays dismissed even if the underlying signal persists. - A
dismissedrecommendation is hidden from the defaultstatus=openfilter on the list endpoint. Passstatus=dismissedto retrieve it. - Re-opening a dismissed row (
status=open) clearsdismissed_atsemantically (the row goes back to the default view) but keeps the audit trail innoteand the previous timestamp columns.
See also
GET /v1/projects/:projectId/recommendations— list endpoint with cursor pagination +statusfilter