B3

B3 Runs API

The Runs API from B3 — 5 operation(s) for runs.

OpenAPI Specification

b3-runs-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  description: Workflow management API for B3OS
  title: B3OS Workflow Action Runs API
  version: '1.0'
tags:
- name: Runs
paths:
  /v1/runs:
    get:
      description: List all runs
      parameters:
      - description: Number of items (default 20, max 100)
        in: query
        name: limit
        schema:
          type: integer
      - description: Offset for pagination (default 0)
        in: query
        name: offset
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListRunsSuccessResponse'
          description: OK
      tags:
      - Runs
    post:
      description: Execute an inline workflow definition (ephemeral run). The definition must use "manual" trigger type. No workflow is saved — the definition is executed once and the run is recorded with workflowId="". Requires WorkflowCreate permission.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EphemeralRunParams'
        description: Inline workflow definition and optional payload/props
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunSuccessResponse'
          description: Run created and enqueued for execution
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Invalid definition (400228), non-manual trigger (400229), invalid run ID (400078), or duplicate run ID (400079)
        '402':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Insufficient CU balance
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Missing org context or insufficient permissions
      tags:
      - Runs
  /v1/runs/{id}:
    get:
      description: Get a specific run by ID
      parameters:
      - description: Run ID
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRunSuccessResponse'
          description: OK
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
      tags:
      - Runs
  /v1/runs/{id}/cancel:
    post:
      description: Cancel a running or waiting run
      parameters:
      - description: Run ID
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRunSuccessResponse'
          description: OK
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Conflict
      tags:
      - Runs
  /v1/runs/{id}/stream:
    get:
      description: SSE endpoint for real-time run status updates. Clients MUST subscribe BEFORE triggering the run to avoid missing the initial run_started event. Use pre-subscription with client-provided runId.
      parameters:
      - description: Run ID
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            text/event-stream:
              schema:
                type: string
          description: SSE stream with run events
        '400':
          content:
            text/event-stream:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Bad Request
        '403':
          content:
            text/event-stream:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Forbidden
      summary: Stream run execution events
      tags:
      - Runs
  /v1/workflows/batch-stats:
    post:
      description: Fetch run counts and recent runs for multiple workflows
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - type: object
              - $ref: '#/components/schemas/BatchWorkflowStatsRequest'
                summary: body
                description: Workflow IDs
        description: Workflow IDs
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchWorkflowStatsSuccessResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse'
          description: Bad Request
      summary: Batch workflow stats
      tags:
      - Runs
components:
  schemas:
    RecentRunItem:
      properties:
        finishedAt:
          type: string
        id:
          type: string
        startedAt:
          type: string
        status:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ConnectorReference:
      description: nil if action doesn't need connector
      properties:
        id:
          description: Connector ID (or subOrgId for turnkey)
          type: string
        type:
          description: Connector type (e.g., "slack", "turnkey")
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowInput:
      properties:
        description:
          type: string
        key:
          type: string
        required:
          type: boolean
        type:
          description: '"string", "number", "boolean", "object", "array"'
          type: string
      type: object
    BatchWorkflowStatsResponse:
      additionalProperties:
        $ref: '#/components/schemas/WorkflowStatsSummary'
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowNode:
      properties:
        branch:
          description: '"then" or "else", only when parent is "if" node'
          type: string
        children:
          items:
            type: string
          type: array
          uniqueItems: false
        connector:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ConnectorReference'
        description:
          description: AI-generated 1-sentence description
          type: string
        loopBody:
          description: Loop body nodes (only for for-each nodes)
          items:
            type: string
          type: array
          uniqueItems: false
        payload:
          additionalProperties: {}
          type: object
        resultSchema:
          additionalProperties: {}
          description: 'ResultSchema describes the output structure of this node (populated dynamically for x402 endpoints).

            This is used by the frontend to show available output variables in the variable picker.'
          type: object
        titleOverride:
          description: AI-generated short title (2-6 words), only when more descriptive than default
          type: string
        type:
          type: string
      required:
      - payload
      - type
      type: object
    ListRunsSuccessResponse:
      properties:
        code:
          example: 200
          type: integer
        data:
          $ref: '#/components/schemas/PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_RunListItem'
        message:
          example: success
          type: string
        requestId:
          example: abc-123
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_app_api_http.ErrorResponse:
      properties:
        code:
          type: integer
        details:
          items: {}
          type: array
          uniqueItems: false
        message:
          type: string
        requestId:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Run:
      properties:
        executionState:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ExecutionNode'
          type: object
        finishedAt:
          type: string
        id:
          type: string
        organizationId:
          type: string
        propValues:
          additionalProperties: {}
          type: object
        startedAt:
          type: string
        status:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.RunStatus'
        triggerSource:
          type: string
        triggeredBy:
          type: string
        workflowDefinition:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowDefinition'
        workflowId:
          type: string
        workflowVersion:
          type: integer
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.RunStatus:
      enum:
      - running
      - waiting
      - success
      - failure
      - cancelled
      type: string
      x-enum-comments:
        RunStatusCancelled: Run was cancelled by user
        RunStatusFailure: Run failed
        RunStatusRunning: Run is executing
        RunStatusSuccess: Run completed successfully
        RunStatusWaiting: Run is paused, waiting for a trigger to resume
      x-enum-varnames:
      - RunStatusRunning
      - RunStatusWaiting
      - RunStatusSuccess
      - RunStatusFailure
      - RunStatusCancelled
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ExecutionNode:
      properties:
        connector:
          additionalProperties: {}
          description: Safe connector metadata (e.g., wallet address)
          type: object
        context:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ExecutionContext'
        finishedAt:
          type: string
        input:
          additionalProperties: {}
          description: Input payload at time of completion/failure (may be raw or resolved)
          type: object
        iterations:
          description: 'For for-each nodes only: tracks execution state of each iteration.

            Each iteration is a mini ExecutionState graph (nodeID → ExecutionNode).'
          items:
            additionalProperties:
              $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ExecutionNode'
            type: object
          type: array
          uniqueItems: false
        result:
          additionalProperties: {}
          description: Output from execution
          type: object
        secretKeys:
          description: Input keys that contain connector secrets (for masking)
          items:
            type: string
          type: array
          uniqueItems: false
        startedAt:
          type: string
        status:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ExecutionNodeStatus'
        type:
          description: Node type (e.g., "webhook", "send-erc20-token")
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ExecutionContext:
      properties:
        loopVars:
          additionalProperties: {}
          description: Loop variables (for for-each nodes)
          type: object
        orgStorage:
          additionalProperties: {}
          description: Organization storage values snapshot (default store)
          type: object
        orgStores:
          additionalProperties:
            additionalProperties: {}
            type: object
          description: 'Named store snapshots: storeName → key → value'
          type: object
        props:
          additionalProperties: {}
          description: Template prop values snapshot
          type: object
        storage:
          additionalProperties: {}
          description: Workflow storage values snapshot
          type: object
      type: object
    EphemeralRunParams:
      properties:
        definition:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowDefinition'
        payload:
          additionalProperties: {}
          description: 'Payload is merged into the trigger result (root node output),

            accessible via {{root.result.key}} expressions. A "triggeredAt"

            timestamp is always added automatically.'
          type: object
        propValues:
          additionalProperties: {}
          description: 'PropValues are template parameter values injected into the run

            context, accessible via {{$props.key}} expressions.'
          type: object
        runId:
          description: 'RunID is an optional client-generated run ID. Must start with

            "run_" prefix. If omitted, a run ID is generated server-side.

            Use this to subscribe to SSE stream before triggering the run.'
          example: run_abc123
          type: string
      required:
      - definition
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowDefinition:
      description: 'Definition is the full workflow graph to execute. Must contain a

        "root" node with type "manual". All action nodes referenced in

        children arrays must be present.'
      properties:
        inputSchema:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowInput'
          type: array
          uniqueItems: false
        nodes:
          additionalProperties:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.WorkflowNode'
          type: object
        sensitivePropKeys:
          items:
            type: string
          type: array
          uniqueItems: false
      required:
      - nodes
      type: object
    GetRunSuccessResponse:
      properties:
        code:
          example: 200
          type: integer
        data:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.Run'
        message:
          example: success
          type: string
        requestId:
          example: abc-123
          type: string
      type: object
    RunSuccessResponse:
      properties:
        code:
          example: 200
          type: integer
        data:
          $ref: '#/components/schemas/RunResponse'
        message:
          example: success
          type: string
        requestId:
          example: abc-123
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.RunListItem:
      properties:
        finishedAt:
          type: string
        id:
          type: string
        startedAt:
          type: string
        status:
          $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.RunStatus'
        triggerSource:
          type: string
        triggeredBy:
          type: string
        workflowId:
          type: string
        workflowVersion:
          type: integer
      type: object
    WorkflowRunCount:
      properties:
        failure:
          type: integer
        running:
          type: integer
        success:
          type: integer
        total:
          type: integer
        waiting:
          type: integer
      type: object
    RunResponse:
      properties:
        runId:
          example: run_c9i6j8k2l0m3
          type: string
      type: object
    PaginatedData-github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity_RunListItem:
      properties:
        hasMore:
          type: boolean
        items:
          items:
            $ref: '#/components/schemas/github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.RunListItem'
          type: array
          uniqueItems: false
        limit:
          type: integer
        offset:
          type: integer
      type: object
    BatchWorkflowStatsSuccessResponse:
      properties:
        code:
          example: 0
          type: integer
        data:
          $ref: '#/components/schemas/BatchWorkflowStatsResponse'
        message:
          example: successfully
          type: string
        requestId:
          type: string
      type: object
    github_com_b3-fun_b3-mono_services_b3os-workflow_internal_pkg_entity.ExecutionNodeStatus:
      enum:
      - pending
      - running
      - success
      - failure
      - skipped
      - waiting
      - scheduled
      - cancelled
      type: string
      x-enum-comments:
        ExecutionNodeStatusCancelled: Set when run is cancelled by user
        ExecutionNodeStatusFailure: Set when node execution fails
        ExecutionNodeStatusPending: Set when run is created (all non-root nodes start as pending)
        ExecutionNodeStatusRunning: Set when node execution begins
        ExecutionNodeStatusScheduled: Set when node is scheduled for future execution
        ExecutionNodeStatusSkipped: Set when node is skipped (e.g., non-taken if branch)
        ExecutionNodeStatusSuccess: Set when node execution completes successfully
        ExecutionNodeStatusWaiting: Set when node is paused waiting for a trigger
      x-enum-varnames:
      - ExecutionNodeStatusPending
      - ExecutionNodeStatusRunning
      - ExecutionNodeStatusSuccess
      - ExecutionNodeStatusFailure
      - ExecutionNodeStatusSkipped
      - ExecutionNodeStatusWaiting
      - ExecutionNodeStatusScheduled
      - ExecutionNodeStatusCancelled
    WorkflowStatsSummary:
      properties:
        counts:
          $ref: '#/components/schemas/WorkflowRunCount'
        recentRuns:
          items:
            $ref: '#/components/schemas/RecentRunItem'
          type: array
          uniqueItems: false
      type: object
    BatchWorkflowStatsRequest:
      properties:
        workflowIds:
          items:
            type: string
          maxItems: 200
          minItems: 1
          type: array
          uniqueItems: false
      required:
      - workflowIds
      type: object