Pipelines
Promotion decisions
Approve or dismiss a winning training when the promotion policy is manual.
When a pipeline's promotion policy is manual and a completed cycle's
winner beats the currently serving version — whichever entry in the
model pool produced it —
the pipeline records a pending decision instead of deploying. You'll see it
on the pipeline as has_pending_promotion: true — and as a notification,
if you have channels set up.
Resolve it with one call:
curl -X POST "$API_BASE/v1/pipelines/$PIPELINE_ID/promotion-decision" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Workspace-Id: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{ "action": "promote" }'from predictai import PredictAI
client = PredictAI(token="pa_live_…", workspace_id="ws_…")
data = client.pipelines.post_pipelines_by_model_id_promotion_decision(PIPELINE_ID, json={"action": "promote"})
import { PredictAI } from "@predictai/sdk";
const client = new PredictAI({ token: "pa_live_…", workspaceId: "ws_…" });
const data = await client.pipelines.postPipelinesByModelIdPromotionDecision(PIPELINE_ID, { json: { action: "promote" } });
Request body
| Field | Meaning |
|---|---|
action required | promote deploys the pending training (the previously serving version is retired per policy). dismiss keeps what's serving — the prompt clears, and the same training is never re-proposed. |
{
"data": {
"success": true,
"action": "promote",
"training_id": "TRAINING_ID"
}
}Errors
| Status | Why |
|---|---|
400 | No pending decision, or action isn't promote / dismiss. |
404 | Pipeline not found or not yours. |
A dismissed training isn't deleted — it stays in
Trainings and you can still deploy it manually
later via POST /v1/deployments.

