CrewAI Cloud · Arazzo Workflow

CrewAI AMP Full Run With Result

Version 1.0.0

Discover inputs, kick off a crew, poll to completion, and return the result.

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

full-run-with-result
Discover inputs, kick off, poll until complete, and return the result.
Chains GET /inputs, POST /kickoff, and a GET /status/{kickoff_id} poll loop into a single end-to-end run that ends by surfacing the completed crew result.
4 steps inputs: bearerToken, inputs, meta outputs: executionTime, finalStatus, kickoffId, output, requiredInputs, tasks
1
listRequiredInputs
listInputs
Discover the input parameter names this crew expects so the supplied inputs object can be validated against the crew contract.
2
kickoff
kickoffCrew
Launch the crew execution with the supplied inputs and capture the kickoff_id used to poll status.
3
pollStatus
getKickoffStatus
Poll the execution status. While the status is running, loop back and poll again; once it is no longer running, continue to collect the result.
4
collectResult
getKickoffStatus
Read the settled status to surface the final aggregated crew output, per-task results, total execution time, and the terminal status value.

Source API Descriptions

Arazzo Workflow Specification

crewai-cloud-full-run-with-result-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: CrewAI AMP Full Run With Result
  summary: Discover inputs, kick off a crew, poll to completion, and return the result.
  description: >-
    An end-to-end crew run that chains all the read-and-launch operations: it
    discovers the input names the crew expects, kicks off an execution with the
    supplied inputs, polls the status endpoint until the execution leaves the
    running state, and then returns the final aggregated output, per-task
    results, and total execution time when completed. 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: full-run-with-result
  summary: Discover inputs, kick off, poll until complete, and return the result.
  description: >-
    Chains GET /inputs, POST /kickoff, and a GET /status/{kickoff_id} poll loop
    into a single end-to-end run that ends by surfacing the completed crew
    result.
  inputs:
    type: object
    required:
    - bearerToken
    - inputs
    properties:
      bearerToken:
        type: string
        description: Bearer token from the AMP dashboard Status tab.
      inputs:
        type: object
        description: Key-value pairs of all required inputs for the crew.
      meta:
        type: object
        description: Optional metadata to attach to the kickoff (echoed in events).
  steps:
  - stepId: listRequiredInputs
    description: >-
      Discover the input parameter names this crew expects so the supplied
      inputs object can be validated against the crew contract.
    operationId: listInputs
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.bearerToken"
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      requiredInputs: $response.body#/inputs
  - stepId: kickoff
    description: >-
      Launch the crew execution with the supplied inputs and capture the
      kickoff_id used to poll status.
    operationId: kickoffCrew
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.bearerToken"
    requestBody:
      contentType: application/json
      payload:
        inputs: $inputs.inputs
        meta: $inputs.meta
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      kickoffId: $response.body#/kickoff_id
  - stepId: pollStatus
    description: >-
      Poll the execution status. While the status is running, loop back and poll
      again; once it is no longer running, continue to collect the result.
    operationId: getKickoffStatus
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.bearerToken"
    - name: kickoff_id
      in: path
      value: $steps.kickoff.outputs.kickoffId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
    onSuccess:
    - name: stillRunning
      type: goto
      stepId: pollStatus
      criteria:
      - context: $response.body
        condition: $.status == "running"
        type: jsonpath
    - name: settled
      type: goto
      stepId: collectResult
      criteria:
      - context: $response.body
        condition: $.status != "running"
        type: jsonpath
  - stepId: collectResult
    description: >-
      Read the settled status to surface the final aggregated crew output,
      per-task results, total execution time, and the terminal status value.
    operationId: getKickoffStatus
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.bearerToken"
    - name: kickoff_id
      in: path
      value: $steps.kickoff.outputs.kickoffId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      finalStatus: $response.body#/status
      output: $response.body#/result/output
      tasks: $response.body#/result/tasks
      executionTime: $response.body#/execution_time
  outputs:
    requiredInputs: $steps.listRequiredInputs.outputs.requiredInputs
    kickoffId: $steps.kickoff.outputs.kickoffId
    finalStatus: $steps.collectResult.outputs.finalStatus
    output: $steps.collectResult.outputs.output
    tasks: $steps.collectResult.outputs.tasks
    executionTime: $steps.collectResult.outputs.executionTime