---
title: "Start re-deriving the project's Priority Orbit from its open tickets"
method: POST
path: "/projects/{id}/prioritization/derive"
tags: ["Projects"]
---

# Start re-deriving the project's Priority Orbit from its open tickets

`POST /projects/{id}/prioritization/derive`

## Request

- Base URL: `https://api.apphandoff.com/api`
- URL: `https://api.apphandoff.com/api/projects/{id}/prioritization/derive`
- Auth: API key in cookie `sb-access-token`

Starts one AI pass over the project's OPEN tickets to REPLACE the stored derivation and answers 202 immediately with the new run's id — the model pass itself runs detached from this request and can take minutes on a large project. Poll GET /prioritization/progress for the real phase; GET /prioritization for the finished derivation. Manual only — nothing re-derives on a schedule or on read. Error codes: `PRIORITIZATION_NOT_CONFIGURED` (503, no Anthropic API key available), `NO_OPEN_TICKETS` (409, nothing to prioritize), `PRIORITIZATION_RUNNING` (409, a run is already in flight for this project). A background model failure (`PRIORITIZATION_FAILED`) surfaces as a `failed` row on GET /prioritization/progress, not as an HTTP response from this endpoint.

## Path parameters

- `id` string, uuid, required

## Response `202`

The derivation started; the model pass continues in the background

- PrioritizationRunStarted: The derivation was accepted and started; the model pass continues detached from this response. Poll GET /prioritization/progress with `run_id` to follow it.
  - `run_id` string, uuid, required
  - `phase` 'starting', required

## Other responses

- `401`: Not authenticated
- `403`: Forbidden
- `409`: The project has no open tickets to prioritize, or a derivation is already running
- `429`: Rate limited
- `503`: No API key configured

---

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