---
title: "Assign or swap the coach on a coach-chat prize"
method: POST
path: "/api/rewards/admin/grants/{id}/assign-coach"
tags: ["Rewards (admin)"]
---

# Assign or swap the coach on a coach-chat prize

`POST /api/rewards/admin/grants/{id}/assign-coach`

## Request

- Base URL: `https://api.rewritelifestyle.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.rewritelifestyle.ai/api/rewards/admin/grants/{id}/assign-coach`
- Auth: HTTP bearer

For a claimed, undelivered coach-time chat prize that is in manual_review (no pool coach, host gone, DM failed, or missed past the reopen), or in progress with a coach whose window is still running (a swap, when that coach can't deliver in time). Opens the user's DM with the coach, starts a fresh access window, sets status fulfilled and pushes the user and new coach; on a swap the old coach loses the task and is pushed too. Rows show can_assign_coach. 404 unknown grant; 400 not an active coach; 409 not assignable (a call, a booked chat day, delivered, neither in review nor in progress), already with that coach, or the DM won't open. Returns the row in the queue's shape.

## Path parameters

- `id` number, required

## Request body

- AssignGrantCoachDto
  - `coach_id` number, required: An active coach user id — normally one from the reward coach pool.

## Response `201`

## Changes

- **2026-11-05** `a7ab6a3e3692`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rewritelifestyle/apis/rewrite-lifestyle-api/changes/api/rewards/admin/grants/:id/assign-coach/post.md)

---

[API](https://skmtc.dev/rewritelifestyle/apis/rewrite-lifestyle-api.md) - [All operations](https://skmtc.dev/rewritelifestyle/apis/rewrite-lifestyle-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rewritelifestyle/apis/rewrite-lifestyle-api/revisions/0d22636dfcb9?raw)
