Live phase of the in-flight Priority Orbit derivation — getprojectprioritizationprogress
const url = 'https://example.com/api/projects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/prioritization/progress';const options = {method: 'GET', headers: {cookie: 'sb-access-token=<sb-access-token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/projects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/prioritization/progress \ --cookie sb-access-token=<sb-access-token>What the derive pass is doing right now, so the portal button can name the real backend phase instead of guessing from a timer. Polled every 2s while a derivation runs. phase: null means the project has no run on record. stale: true means the run has not moved for longer than the model budget plus a minute of grace (PROGRESS_STALE_AFTER_MS, lib/prioritization/progress.ts) and must not be waited on. Plain polling, not a realtime channel: one row, one reader, one bounded model pass. A saved result stays done if its follow-up read fails; the portal retries that read without starting another analysis. The write side is best-effort: a failed or slow progress write never fails, slows or changes the outcome of a derivation.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Project UUID
Responses
Section titled “ Responses ”The project’s current derivation run, or an all-null shape when there is none
One project’s current derivation run. Every field is null when the project has no run on record.
object
Identifies one derivation attempt, so a poller can tell its own run from someone else’s.
What the server is doing. done and failed are terminal — the page stops polling. null means no run has ever been recorded for this project.
Human-facing specific for the phase, rendered into the button label: the open-ticket count (loading_tickets), the model name (grouping), the topic count (saving), or the typed error’s name (failed).
updated_at is older than the model budget plus a minute of grace (PROGRESS_STALE_AFTER_MS) on a non-terminal phase — the run died between phases and should not be waited on.
Not authenticated
object
Human-readable error message
Stable machine-readable error code for client branching
First validation message per field path
object
Structured validation issues (Zod)
object
Seconds until rate limit resets (429 responses)
True if re-linking GitHub may fix the issue
Forbidden
object
Human-readable error message
Stable machine-readable error code for client branching
First validation message per field path
object
Structured validation issues (Zod)
object
Seconds until rate limit resets (429 responses)
Rate limited
object
Human-readable error message
Stable machine-readable error code for client branching
First validation message per field path
object
Structured validation issues (Zod)
object
Seconds until rate limit resets (429 responses)
Seconds until the rate limit resets