---
title: "POST /v1/interview_plan_drafts/actions/generate_anchors"
method: POST
path: "/v1/interview_plan_drafts/actions/generate_anchors"
tags: ["Interview Plan Builder"]
---

# POST /v1/interview_plan_drafts/actions/generate_anchors

`POST /v1/interview_plan_drafts/actions/generate_anchors`

## Request

- Base URL: `https://api.yardstick.team`
- URL: `https://api.yardstick.team/v1/interview_plan_drafts/actions/generate_anchors`
- Auth: HTTP bearer

POST /v1/interview_plan_drafts/actions/generate_anchors

**Required scopes:** `interview_plans:write`

## Headers

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

## Request body

- object
  - `action` 'interview_plan.generate_anchors', required
  - `resource` object
    - `type` 'interview_plan_draft', required
    - `id` string
  - `input` object, required
    - `source_stage` object
      - `stage` 'competencies', required
      - `version` integer
    - `competency_id` string
    - `instructions` string

## Response `200`

Success

- StagedBuilderActionResponse: Staged interview-plan builder checkpoint response, shared by the generation stages and the verbatim edit actions. `data` echoes the stored stage content (including prune reports on cascading deletes) and `checkpoint.stage_versions` carries the per-stage versions used for `source_stage` preconditions.
  - `resource` object, required
    - `type` 'interview_plan_draft' | 'interview_plan', required
    - `id` string, nullable, required
  - `action` 'interview_plan.generate_outcomes' | 'interview_plan.confirm_outcomes' | 'interview_plan.generate_competencies' | 'interview_plan.generate_skills' | 'interview_plan.generate_rounds' | 'interview_plan.add_rounds' | 'interview_plan.update_rounds' | 'interview_plan.delete_rounds' | 'interview_plan.generate_anchors' | 'interview_plan.generate_questions_directions' | 'interview_plan.add_competencies' | 'interview_plan.update_competencies' | 'interview_plan.delete_competencies' | 'interview_plan.add_skills' | 'interview_plan.update_skills' | 'interview_plan.delete_skills' | 'interview_plan.clear_outcomes' | 'interview_plan.clear_competencies' | 'interview_plan.clear_job_skills' | 'interview_plan.clear_interview_sequence' | 'interview_plan.validate_draft' | 'interview_plan.publish' | 'interview_plan.modify_active' | 'interview_plan.add_questions' | 'interview_plan.update_questions' | 'interview_plan.delete_questions' | 'interview_plan.update_round_directions' | 'interview_plan.update_anchors' | 'interview_plan.delete_anchors', required
  - `execution_mode` 'draft_write' | 'interactive_gate' | 'validate_only' | 'approval_required' | 'blocked_until_verified', required
  - `approval` object, required
    - `gate` 'none' | 'agent_confirmable' | 'dashboard_required', required
    - `required` boolean, required
    - `reason` string, required
  - `stage` string, required
  - `data` object, required
    - `status` 'checkpointed' | 'generated' | 'generation_pending' | 'validated' | 'not_ready' | 'unsupported_stage' | 'approval_required' | 'blocked', required
    - `message` string, required
    - `outcomes` object[]
    - `competencies` object[]
    - `job_skills` object[]
    - `interview_sequence` object[]
    - `questions_and_directions` object
    - `behavioral_anchors` object
    - `round_id` string
    - `questions` object[]
    - `interviewer_directions` string, nullable
    - `candidate_directions` string, nullable
    - `pruned_behavioral_anchor_ids` string[]: Item ids whose behavioral anchors were pruned because their competency was deleted in this request.
    - `pruned_question_round_ids` string[]: Round ids whose questions and directions were pruned because the round was deleted in this request.
    - `generated_round_ids` string[]
    - `generated_competency_ids` string[]
    - `preview` object
    - `affected_counts` object
    - `audit` object
      - `audit_id` string
      - `event_id` string
      - `audit_log` string, required
      - `api_event` string, required
  - `checkpoint` object
    - `stage` string, required
    - `version` integer, required
    - `stage_versions` object, required
  - `validation` object, required
    - `status` 'not_evaluated' | 'ready' | 'blocked', required
    - `publish_ready` boolean, required
    - `blockers` object[], required
      - `code` string, required
      - `message` string, required
      - `path` string
      - `next_action` string
    - `warnings` object[], required
      - `code` string, required
      - `message` string, required
      - `path` string
      - `next_action` string
  - `next_actions` string[], required
  - `web_url` string, nullable, required
  - `request_id` string, required
  - `warnings` object[]: Non-blocking signals emitted by this action (e.g., department_mismatch when source_job_id seeding produced a Department override). Omitted when empty.
    - `code` string, required: Machine-readable warning code (e.g. department_mismatch).
    - `message` string, required
    - `detail` 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

---

[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/35b5a6e88b35?raw)
