> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upsolve.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List Rule Runs

> List every user's rule runs in the workspace, newest first, for a builder's oversight



## OpenAPI

````yaml get /v2/api/projects/{projectId}/workspaces/{workspaceId}/rule-runs
openapi: 3.1.0
info:
  title: Upsolve API
  version: 1.5.0
servers:
  - url: https://api.upsolve.ai
security: []
tags: []
paths:
  /v2/api/projects/{projectId}/workspaces/{workspaceId}/rule-runs:
    get:
      summary: List every user's rule runs in the workspace, new…
      description: >-
        List every user's rule runs in the workspace, newest first, for a
        builder's oversight
      operationId: GetV2ApiProjectsProjectIdWorkspacesWorkspaceIdRuleRuns
      parameters:
        - name: apiKey
          in: query
          required: false
          description: >-
            Upsolve API key, generated under Account → Developer settings in the
            Upsolve Hub. Keys are user-scoped: pass organizationId alongside the
            key to select which org to act on.
          schema:
            type: string
            minLength: 1
            description: >-
              Upsolve API key, generated under Account → Developer settings in
              the Upsolve Hub. Keys are user-scoped: pass organizationId
              alongside the key to select which org to act on.
            examples:
              - up_embed_************
          examples:
            example1:
              value: up_embed_************
        - name: organizationId
          in: query
          required: false
          description: >-
            Your Upsolve organization's UUID — the org that owns the API key and
            project. This is NOT a project organization: do not pass a value
            registered via /projects/register-organization, and do not pass an
            `externalId` (only `projectOrganizationId` accepts those). Omit it
            when using an org-bound API key — the org is read from the key and
            any value sent here is ignored. Required only for user-scoped API
            keys (created under Account → Developer settings) and for the
            Supabase JWT path, where the org is ambiguous and membership is
            verified against it.
          schema:
            description: >-
              Your Upsolve organization's UUID — the org that owns the API key
              and project. This is NOT a project organization: do not pass a
              value registered via /projects/register-organization, and do not
              pass an `externalId` (only `projectOrganizationId` accepts those).
              Omit it when using an org-bound API key — the org is read from the
              key and any value sent here is ignored. Required only for
              user-scoped API keys (created under Account → Developer settings)
              and for the Supabase JWT path, where the org is ambiguous and
              membership is verified against it.
            examples:
              - 123e4567-e89b-12d3-a456-426614174000
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
          examples:
            example1:
              value: 123e4567-e89b-12d3-a456-426614174000
        - name: projectId
          in: path
          required: true
          description: The project the workspace belongs to.
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
            description: The project the workspace belongs to.
        - name: workspaceId
          in: path
          required: true
          description: The workspace the rules live in.
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
            description: The workspace the rules live in.
        - name: ruleId
          in: query
          required: false
          description: Only the runs of this rule.
          schema:
            description: Only the runs of this rule.
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
        - name: limit
          in: query
          required: false
          description: How many runs to return, newest first. 1 to 100; 50 when omitted.
          schema:
            description: How many runs to return, newest first. 1 to 100; 50 when omitted.
            type: integer
            minimum: 1
            maximum: 100
        - name: before
          in: query
          required: false
          description: >-
            Only runs older than this one: the cursor of the last run of the
            previous page.
          schema:
            description: >-
              Only runs older than this one: the cursor of the last run of the
              previous page.
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}Z\|[0-9a-fA-F-]{36}$
        - name: offset
          in: query
          required: false
          description: >-
            How many runs to skip first, for a numbered page after the first. 0
            when omitted; not with before.
          schema:
            description: >-
              How many runs to skip first, for a numbered page after the first.
              0 when omitted; not with before.
            type: integer
            minimum: 0
            maximum: 9007199254740991
      responses:
        '200':
          description: >-
            GET /v2/api/projects/:projectId/workspaces/:workspaceId/rule-runs
            Positive response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: success
                  data:
                    type: object
                    properties:
                      runs:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The run's id.
                            ruleId:
                              type: string
                              description: The rule that ran.
                            ruleName:
                              type: string
                              description: That rule's name.
                            ruleVersion:
                              type:
                                - integer
                                - 'null'
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            currentVersion:
                              type:
                                - integer
                                - 'null'
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            canvasId:
                              type:
                                - string
                                - 'null'
                            canvasName:
                              type:
                                - string
                                - 'null'
                            ownerName:
                              type:
                                - string
                                - 'null'
                            source:
                              type: string
                              enum:
                                - schedule
                                - click
                                - test
                              description: >-
                                What started a run: a schedule tick, a viewer
                                clicking the rule's element, or the owner's Send
                                test.
                            status:
                              type: string
                              enum:
                                - awaiting_confirmation
                                - fired
                                - evaluation_failed
                                - suppressed
                              description: >-
                                'awaiting_confirmation': a manual send prepared
                                and shown, not yet confirmed. 'fired': the
                                action was dispatched. 'evaluation_failed': the
                                condition could not be evaluated. 'suppressed':
                                a fire was blocked, for example by a daily cap.
                            actorName:
                              type:
                                - string
                                - 'null'
                            createdAt:
                              type: string
                              description: When the run started, ISO 8601.
                            cursor:
                              type: string
                              description: >-
                                This run's place in the newest-first order. Pass
                                the last run's cursor as `before` to get the
                                next page: unlike createdAt it keeps the
                                database's microseconds and the id that breaks a
                                tie, so no run is skipped or repeated.
                            durationMs:
                              type:
                                - number
                                - 'null'
                            actionStatus:
                              type:
                                - string
                                - 'null'
                              enum:
                                - awaiting_confirmation
                                - running
                                - succeeded
                                - failed
                              description: >-
                                The state of one attempt to call the action's
                                tool.
                            destination:
                              type:
                                - string
                                - 'null'
                            error:
                              type:
                                - string
                                - 'null'
                            statusCode:
                              description: >-
                                The HTTP status the latest attempt's API
                                operation answered with. Absent for an MCP tool
                                or an email, and when the API never answered.
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            latencyMs:
                              description: >-
                                How long the latest attempt's API operation took
                                to answer, in milliseconds. Absent for an MCP
                                tool or an email.
                              type: number
                          required:
                            - id
                            - ruleId
                            - ruleName
                            - ruleVersion
                            - currentVersion
                            - canvasId
                            - canvasName
                            - ownerName
                            - source
                            - status
                            - actorName
                            - createdAt
                            - cursor
                            - durationMs
                            - actionStatus
                            - destination
                            - error
                          additionalProperties: false
                          description: A run as one row of the Executions list.
                        description: Runs, newest first.
                      total:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                        description: >-
                          How many runs the workspace has in all (of the rule,
                          with ruleId), on every page.
                    required:
                      - runs
                      - total
                    additionalProperties: false
                required:
                  - status
                  - data
                additionalProperties: false
        '400':
          description: >-
            GET /v2/api/projects/:projectId/workspaces/:workspaceId/rule-runs
            Negative response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: error
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                      details:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                    required:
                      - message
                    additionalProperties: false
                required:
                  - status
                  - error
                additionalProperties: false
      security:
        - APIKEY_2: []
components:
  securitySchemes:
    APIKEY_2:
      type: apiKey
      in: query
      name: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.