CrewAI Cloud · Arazzo Workflow

CrewAI AMP Resume a Paused Execution

Version 1.0.0

Inspect an existing execution, deliver human feedback, then poll until it settles.

1 workflow 1 source API 1 provider
View Spec View on GitHub AI AgentsAI Agent PlatformAgent OrchestrationMulti-Agent SystemsAgent Management PlatformManaged AgentsAutomationsObservabilityHuman In The LoopArazzoWorkflows

Provider

crewai-cloud

Workflows

resume-paused-execution
Inspect a known execution, submit human feedback, and poll until it settles.
Chains GET /status/{kickoff_id} to inspect a known execution, POST /resume to deliver human-in-the-loop feedback, and a GET /status/{kickoff_id} poll loop to reach a terminal state.
3 steps inputs: bearerToken, humanFeedback, isApprove, kickoffId, taskId outputs: error, executionTime, finalStatus, output, resumeStatus, tasks
1
inspectStatus
getKickoffStatus
Read the current status of the execution to confirm it exists and capture the current task before delivering feedback.
2
submitFeedback
resumeKickoff
Resume the execution by delivering the reviewer's feedback on the named task, approving it to proceed or returning it to retry.
3
pollUntilDone
getKickoffStatus
Poll the execution status after resuming, looping while running and ending once the execution settles into completed or error.

Source API Descriptions

Arazzo Workflow Specification

crewai-cloud-resume-paused-execution-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: CrewAI AMP Resume a Paused Execution
  summary: Inspect an existing execution, deliver human feedback, then poll until it settles.
  description: >-
    Resumes an already-running execution that is known by its kickoff_id. The
    workflow first inspects the current status, then delivers the reviewer's
    feedback on the paused task through the resume endpoint, and finally polls
    the status endpoint until the execution leaves the running state and settles
    into completed or error. Every step spells out its request inline so the flow
    can be read and executed without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: crewaiAmpApi
  url: ../openapi/crewai-amp-rest-api-openapi.yml
  type: openapi
workflows:
- workflowId: resume-paused-execution
  summary: Inspect a known execution, submit human feedback, and poll until it settles.
  description: >-
    Chains GET /status/{kickoff_id} to inspect a known execution, POST /resume to
    deliver human-in-the-loop feedback, and a GET /status/{kickoff_id} poll loop
    to reach a terminal state.
  inputs:
    type: object
    required:
    - bearerToken
    - kickoffId
    - taskId
    - humanFeedback
    - isApprove
    properties:
      bearerToken:
        type: string
        description: Bearer token from the AMP dashboard Status tab.
      kickoffId:
        type: string
        description: The kickoff_id of the execution to inspect and resume.
      taskId:
        type: string
        description: Identifier of the task awaiting human feedback.
      humanFeedback:
        type: string
        description: Feedback to incorporate as additional context for the task.
      isApprove:
        type: boolean
        description: True to proceed; false to retry the task with the feedback.
  steps:
  - stepId: inspectStatus
    description: >-
      Read the current status of the execution to confirm it exists and capture
      the current task before delivering feedback.
    operationId: getKickoffStatus
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.bearerToken"
    - name: kickoff_id
      in: path
      value: $inputs.kickoffId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
      currentTask: $response.body#/current_task
  - stepId: submitFeedback
    description: >-
      Resume the execution by delivering the reviewer's feedback on the named
      task, approving it to proceed or returning it to retry.
    operationId: resumeKickoff
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.bearerToken"
    requestBody:
      contentType: application/json
      payload:
        execution_id: $inputs.kickoffId
        task_id: $inputs.taskId
        human_feedback: $inputs.humanFeedback
        is_approve: $inputs.isApprove
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      resumeStatus: $response.body#/status
      message: $response.body#/message
  - stepId: pollUntilDone
    description: >-
      Poll the execution status after resuming, looping while running and ending
      once the execution settles into completed or error.
    operationId: getKickoffStatus
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.bearerToken"
    - name: kickoff_id
      in: path
      value: $inputs.kickoffId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      finalStatus: $response.body#/status
      output: $response.body#/result/output
      tasks: $response.body#/result/tasks
      error: $response.body#/error
      executionTime: $response.body#/execution_time
    onSuccess:
    - name: stillRunning
      type: goto
      stepId: pollUntilDone
      criteria:
      - context: $response.body
        condition: $.status == "running"
        type: jsonpath
    - name: settled
      type: end
      criteria:
      - context: $response.body
        condition: $.status != "running"
        type: jsonpath
  outputs:
    resumeStatus: $steps.submitFeedback.outputs.resumeStatus
    finalStatus: $steps.pollUntilDone.outputs.finalStatus
    output: $steps.pollUntilDone.outputs.output
    tasks: $steps.pollUntilDone.outputs.tasks
    error: $steps.pollUntilDone.outputs.error
    executionTime: $steps.pollUntilDone.outputs.executionTime