---
title: "Answer an assigned review task"
method: POST
path: "/v1/tasks/{task_id}/actions/respond"
tags: ["Tasks"]
---

# Answer an assigned review task

`POST /v1/tasks/{task_id}/actions/respond`

## Request

- Base URL: `https://api.yardstick.team`
- URL: `https://api.yardstick.team/v1/tasks/{task_id}/actions/respond`
- Auth: HTTP bearer

Answer an assigned review task

**Required scopes:** `tasks:write`

Uses the same response functions as the dashboard. Application reviews accept approve (moves to Candidates), reject, hold, or ask_recruiter. Scorecard reviews accept thumbs_up or thumbs_down. When the reviewer is the hiring manager on a step that waits on them, thumbs_up advances the candidate and thumbs_down holds them. `ask_recruiter` requires a nonempty note; `send_to_recruiter: true` also sends the note to the recruiter and needs a note. Only the assigned reviewer with active organization membership may answer an open review. Closed reviews return 409; unsupported task kinds or answers return 400; an unassigned reviewer receives 403.

**Example (curl):**

```bash
curl https://api.yardstick.team/v1/tasks/tsk_abc123/actions/respond -X POST -H 'Authorization: Bearer ys_sk_live_…' -H 'Content-Type: application/json' -d '{"decision":"approve"}'
```

**Example (TypeScript):**

```ts
await fetch("https://api.yardstick.team/v1/tasks/tsk_abc123/actions/respond", { method: "POST", headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" }, body: JSON.stringify({ decision: "approve" }) });
```

## Path parameters

- `task_id` string, required

## Headers

- `Idempotency-Key` string
- `X-Request-Id` string

## Request body

- object
  - `decision` 'approve' | 'reject' | 'hold' | 'ask_recruiter' | 'thumbs_up' | 'thumbs_down', required
  - `note` string
  - `send_to_recruiter` boolean

## Response `200`

Success

- object

## Other responses

- `400`: Invalid request
- `401`: Authentication failure
- `403`: Permission denied (scope or feature flag)
- `404`: Resource not found. The error uses the resource-specific code and param names the exact body field or path parameter that referenced it.
- `409`: Conflict (e.g. idempotency key reuse with different body)
- `429`: Rate limited
- `500`: Internal error

## Changes

- **2026-10-20** `bef1d2eaaaa1`: 1 breaking, 1 info
  - removed the enum value `note_to_recruiter` of the request property `decision`
  - added the new optional request property `send_to_recruiter`

[Operation history](https://skmtc.dev/yardstick/apis/yardstick-public-api/changes/v1/tasks/:task_id/actions/respond/post.md)

---

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