Promote an accepted campaign candidate

POST/v1/optimization-campaigns/{campaignId}/attempts/{attemptId}/promote

Creates and executes an immutable Release Control record. When the campaign explicitly enables deployAfterPromotion for a Function, the worker performs the exact version-bound deployment and calls this operation again to reconcile the release revision before completion.

How to call this endpoint

Every ACP API request uses bearer authentication. The examples here show the actual request path, auth header, and body shape that the platform expects.

Path, query, and header parameters

These parameters control which ACP object the endpoint acts on and how the request is processed.

Path parameters
NameLocationTypeRequiredDescription
campaignIdpathstringYesDurable Optimization Campaign ID
attemptIdpathstringYesImmutable Optimization Campaign attempt ID
Query parameters
None.

Body schema

Content type: application/json · Required

FieldTypeRequiredDescription
acceptanceFingerprintstringYes

What the API returns

Each response code below includes the documented payload shape for the ACP API.

200Candidate publication or fully reconciled release resultapplication/json
FieldTypeRequiredDescription
campaignobjectYes
campaign.idstringYesUnique identifier.
campaign.userIdstringNoUser ID.
campaign.organizationIdstringNo
campaign.createdByUserIdstringNo
campaign.projectIdstringNoProject ID.
campaign.namestringYesHuman-readable name.
campaign.contractobjectYes
campaign.contract.schemaVersioncomputer_agents_optimization_campaign_v1Yes
campaign.contract.namestringYesHuman-readable name.
campaign.contract.projectIdstringNoProject ID.
campaign.contract.objectiveobjectYes
campaign.contract.objective.statementstringYes
campaign.contract.objective.metricaverage_score | pass_rateYes
campaign.contract.objective.targetnumberYes
campaign.contract.objective.minimumImprovementnumberYes
campaign.contract.objective.maximumRegressionnumberYes
campaign.contract.targetobjectYes
campaign.contract.target.kindfunction | metronomeYes
campaign.contract.target.resourceKeystringYes
campaign.contract.target.resourceIdstringYes
campaign.contract.target.baseVersionIdstringYes
campaign.contract.target.baseFingerprintstringYes
campaign.contract.producerobjectYes
campaign.contract.producer.kindagentYes
campaign.contract.producer.adapterIdstringYes
campaign.contract.producer.agentIdstringYesAgent ID.
campaign.contract.producer.agentVersionIdstringYes
campaign.contract.producer.environmentIdstringYesComputer ID.
campaign.contract.evidenceobjectYes
campaign.contract.evidence.evaluationIdstringYes
campaign.contract.evidence.evaluationVersionIdstringYes
campaign.contract.evidence.baselineEvaluationRunIdstringYes
campaign.contract.evidence.testPlanIdstringYes
campaign.contract.evidence.testPlanVersionIdstringYes
campaign.contract.evidence.assurancePolicyIdstringYes
campaign.contract.evidence.assurancePolicyVersionIdstringYes
campaign.contract.evidence.environmentIdstringNoComputer ID.
campaign.contract.limitsobjectYes
campaign.contract.limits.maximumAttemptsintegerYes
campaign.contract.limits.plateauAttemptsintegerYes
campaign.contract.limits.maximumTotalCostUsdnumberYes
campaign.contract.limits.maximumDurationMinutesintegerYes
campaign.contract.limits.maximumTransientRetriesintegerYes
campaign.contract.publicationobjectYes
campaign.contract.publication.modemanual | auto_on_targetYes
campaign.contract.publication.deployAfterPromotionbooleanYes
campaign.contract.idempotencyKeystringYes
campaign.contractFingerprintstringYes
campaign.objectiveFingerprintstringYes
campaign.targetKindfunction | metronomeYes
campaign.targetResourceIdstringYes
campaign.baseVersionIdstringYes
campaign.baseFingerprintstringYes
campaign.baselineEvaluationRunIdstringYes
campaign.baselineScorenumberYes
campaign.baselinePassRatenumberYes
campaign.statusdraft | queued | producing | evaluating | awaiting_assurance | ready_to_promote | releasing | completed | plateaued | failed | cancelledYesCurrent lifecycle status.
campaign.attemptCountintegerYes
campaign.bestCandidateIdstringNo
campaign.bestCandidateVersionIdstringNo
campaign.bestScorenumberNo
campaign.costUsdnumberYes
campaign.idempotencyKeystringYes
campaign.startedAtstringNoISO 8601 timestamp.
campaign.completedAtstringNoISO 8601 timestamp.
campaign.cancelledAtstringNo
campaign.createdAtstringYesISO 8601 timestamp.
campaign.updatedAtstringYesISO 8601 timestamp.
campaign.attemptsobject[]No
campaign.attempts[].idstringYesUnique identifier.
campaign.attempts[].campaignIdstringYes
campaign.attempts[].attemptNumberintegerYes
campaign.attempts[].statusqueued | producing | evaluating | awaiting_assurance | accepted | promoted | rejected | failed | cancelledYesCurrent lifecycle status.
campaign.attempts[].producerRequestobjectYes
campaign.attempts[].producerRequest.schemaVersioncomputer_agents_optimization_campaign_producer_request_v1Yes
campaign.attempts[].producerRequest.campaignIdstringYes
campaign.attempts[].producerRequest.attemptIdstringYes
campaign.attempts[].producerRequest.attemptNumberintegerYes
campaign.attempts[].producerRequest.targetobjectYes
campaign.attempts[].producerRequest.target.kindfunction | metronomeYes
campaign.attempts[].producerRequest.target.resourceKeystringYes
campaign.attempts[].producerRequest.target.resourceIdstringYes
campaign.attempts[].producerRequest.target.baseVersionIdstringYes
campaign.attempts[].producerRequest.target.baseFingerprintstringYes
campaign.attempts[].producerRequest.objectiveobjectYes
campaign.attempts[].producerRequest.objective.statementstringYes
campaign.attempts[].producerRequest.objective.metricaverage_score | pass_rateYes
campaign.attempts[].producerRequest.objective.targetnumberYes
campaign.attempts[].producerRequest.objective.minimumImprovementnumberYes
campaign.attempts[].producerRequest.objective.maximumRegressionnumberYes
campaign.attempts[].producerRequest.objectiveFingerprintstringYes
campaign.attempts[].producerRequest.producerobjectYes
campaign.attempts[].producerRequest.producer.kindagentYes
campaign.attempts[].producerRequest.producer.adapterIdstringYes
campaign.attempts[].producerRequest.producer.agentIdstringYesAgent ID.
campaign.attempts[].producerRequest.producer.agentVersionIdstringYes
campaign.attempts[].producerRequest.producer.environmentIdstringYesComputer ID.
campaign.attempts[].producerRequest.constraintsobjectYes
campaign.attempts[].producerRequest.constraints.candidateMustRemainSavedtrueYes
campaign.attempts[].producerRequest.constraints.networkAccessfalseYes
campaign.attempts[].producerRequest.constraints.secretsAccessfalseYes
campaign.attempts[].producerRequest.constraints.maximumSourceSnapshotBytesintegerYes
campaign.attempts[].producerRequest.constraints.maximumCandidateResponseBytesintegerYes
campaign.attempts[].candidateIdstringNo
campaign.attempts[].candidateVersionIdstringNo
campaign.attempts[].candidateFingerprintstringNo
campaign.attempts[].testRunIdstringNo
campaign.attempts[].evaluationRunIdstringNo
campaign.attempts[].assuranceRunIdstringNo
campaign.attempts[].acceptanceFingerprintstringNo
campaign.attempts[].scorenumberNo
campaign.attempts[].passRatenumberNo
campaign.attempts[].improvementnumberNo
campaign.attempts[].costUsdnumberYes
campaign.attempts[].errorstringNo
campaign.attempts[].startedAtstringNoISO 8601 timestamp.
campaign.attempts[].completedAtstringNoISO 8601 timestamp.
campaign.attempts[].createdAtstringYesISO 8601 timestamp.
campaign.attempts[].updatedAtstringYesISO 8601 timestamp.
campaign.eventsobject[]No
campaign.events[].idstringYesUnique identifier.
campaign.events[].typestringYes
campaign.events[].actorUserIdstringYes
campaign.events[].payloadobjectYes
campaign.events[].createdAtstringYesISO 8601 timestamp.
attemptobjectYes
attempt.idstringYesUnique identifier.
attempt.campaignIdstringYes
attempt.attemptNumberintegerYes
attempt.statusqueued | producing | evaluating | awaiting_assurance | accepted | promoted | rejected | failed | cancelledYesCurrent lifecycle status.
attempt.producerRequestobjectYes
attempt.producerRequest.schemaVersioncomputer_agents_optimization_campaign_producer_request_v1Yes
attempt.producerRequest.campaignIdstringYes
attempt.producerRequest.attemptIdstringYes
attempt.producerRequest.attemptNumberintegerYes
attempt.producerRequest.targetobjectYes
attempt.producerRequest.target.kindfunction | metronomeYes
attempt.producerRequest.target.resourceKeystringYes
attempt.producerRequest.target.resourceIdstringYes
attempt.producerRequest.target.baseVersionIdstringYes
attempt.producerRequest.target.baseFingerprintstringYes
attempt.producerRequest.objectiveobjectYes
attempt.producerRequest.objective.statementstringYes
attempt.producerRequest.objective.metricaverage_score | pass_rateYes
attempt.producerRequest.objective.targetnumberYes
attempt.producerRequest.objective.minimumImprovementnumberYes
attempt.producerRequest.objective.maximumRegressionnumberYes
attempt.producerRequest.objectiveFingerprintstringYes
attempt.producerRequest.producerobjectYes
attempt.producerRequest.producer.kindagentYes
attempt.producerRequest.producer.adapterIdstringYes
attempt.producerRequest.producer.agentIdstringYesAgent ID.
attempt.producerRequest.producer.agentVersionIdstringYes
attempt.producerRequest.producer.environmentIdstringYesComputer ID.
attempt.producerRequest.constraintsobjectYes
attempt.producerRequest.constraints.candidateMustRemainSavedtrueYes
attempt.producerRequest.constraints.networkAccessfalseYes
attempt.producerRequest.constraints.secretsAccessfalseYes
attempt.producerRequest.constraints.maximumSourceSnapshotBytesintegerYes
attempt.producerRequest.constraints.maximumCandidateResponseBytesintegerYes
attempt.candidateIdstringNo
attempt.candidateVersionIdstringNo
attempt.candidateFingerprintstringNo
attempt.testRunIdstringNo
attempt.evaluationRunIdstringNo
attempt.assuranceRunIdstringNo
attempt.acceptanceFingerprintstringNo
attempt.scorenumberNo
attempt.passRatenumberNo
attempt.improvementnumberNo
attempt.costUsdnumberYes
attempt.errorstringNo
attempt.startedAtstringNoISO 8601 timestamp.
attempt.completedAtstringNoISO 8601 timestamp.
attempt.createdAtstringYesISO 8601 timestamp.
attempt.updatedAtstringYesISO 8601 timestamp.
releaseobjectYes
release.idstringYesUnique identifier.
release.statusqueued | promoting | ready_for_deployment | deploying | released | failed | cancelledYesCurrent lifecycle status.
release.actionpublish | publish_and_deployYes
release.candidateVersionIdstringYes
release.deploymentIdstringYes
release.deploymentRevisionstringYes
deploymentRequestobjectYes
deploymentRequest.methodPOSTYes
deploymentRequest.pathstringYesWorkspace-relative file path.
deploymentRequest.bodyobjectYes
deploymentRequest.body.versionIdstringYes
deploymentRequest.body.releaseIdstringYes
publicationTriggeredbooleanYes
deploymentTriggeredbooleanYes
409Candidate is not accepted or the acceptance fingerprint is stale
None.
Promote an accepted campaign candidate
Loading...
Response 200
Loading...
See the ACP quickstart and SDK flow