API Reference
Approve a campaign run
Accepts an empty JSON object, atomically approves every pending content item for one prospect's workflow run, and continues that existing run with the currently saved messages. Individual messages cannot be approved or ignored independently. Approval does not send all follow-ups immediately: waits and branches continue in workflow order. To edit selected messages first, call the workflow-run messages endpoint before approving.
/v1/accounts/{accountGroupId}/campaigns/{campaignId}/workflow-runs/{workflowInstanceId}/approveApprove run
Approving clears the approval gate and resumes the existing campaign workflow with the currently saved messages.
Integration notes
Required API permission
campaigns:write.
Prerequisites
integration_api_key, account_group_access.
Idempotency
send a stable Idempotency-Key header when retrying this request.
Parameters
accountGroupIdPathType: string
Account group ID that scopes the request.
Required
campaignIdPathType: string
Campaign ID that identifies the campaign to read or mutate.
Required
workflowInstanceIdPathType: string
Unique identifier for the workflow instance.
Required
Idempotency-KeyHeaderType: string
Request field for idempotency key.
Required
Request body
Required
Optional
Content types
application/json
Schema
ApproveCampaignRunBody
Responses
Campaign run approved and workflow status refreshed
Schema: CampaignApprovalResultSuccessResponse
Request validation failed
Schema: ValidationErrorResponse
Invalid or missing API key
Schema: ErrorResponse
Missing required permission
Schema: ErrorResponse
Resource not found
Schema: ErrorResponse
Conflict — resource is in a state that prevents this operation
Schema: ErrorResponse
Rate limit exceeded
Schema: ErrorResponse
Internal server error
Schema: ErrorResponse
Upstream service error
Schema: ErrorResponse
Response examples
200 Example JSONCampaignApprovalResultSuccessResponse
{
"success": true,
"data": {
"action": "approved",
"workflowInstanceId": "507f1f77bcf86cd799439011",
"leadStatus": {
"leadId": "507f1f77bcf86cd799439011",
"workflowStatus": "pending",
"workflowInstanceId": "507f1f77bcf86cd799439011",
"latestStep": "string",
"workflowStopReason": "CONTENT_DISCARDED",
"hasPendingApproval": true
}
},
"error": null,
"traceId": "507f1f77bcf86cd799439011"
}400 Example JSONValidationErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "VALIDATION_ERROR",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}401 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}403 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}404 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}409 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}429 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}500 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}502 Example JSONErrorResponse
{
"success": false,
"data": null,
"error": {
"code": "string",
"message": "Thanks for the context. I can send over details this afternoon.",
"details": "string"
},
"traceId": "507f1f77bcf86cd799439011"
}