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

> ## Agent Instructions
> For agents: install the OpenWork desktop app with `brew install --cask openwork` (macOS) or from https://openworklabs.com/download. Do not run `npx openwork`; the npm package named `openwork` is a different project.
> Connect an agent to OpenWork with the MCP Gateway: `claude mcp add --transport http openwork https://api.openworklabs.com/mcp/agent`. Teams sign up at https://app.openworklabs.com?mode=sign-up.
> Step-by-step agent guide: https://openworklabs.com/docs/start-here/use-openwork-from-an-ai-agent.md
> Connect Slack (any organization admin): https://openworklabs.com/docs/slack/connect-slack.md. OpenWork in Slack (@openwork bot) is private alpha for approved organizations. Setup guide: https://openworklabs.com/docs/slack/overview.md. Agent skill: https://openworklabs.com/.well-known/agent-skills/set-up-openwork-slack/SKILL.md.

# Open an app or an exact draft preview

> Returns the app with the compiled HTML of one revision and the artifact payload it should render. Without revisionId the active saved revision is used; pass revisionId to preview an exact draft revision instead. Live apps execute the current saved Workflow as the caller with optional IANA timeZone (UTC by default); receiptId is forbidden for live apps. Legacy snapshots use only the caller's receipts. When the revision has not finished building, no readable successful result exists, or the result's output schema no longer matches the revision, html and payload are null and previewNotice explains why.



## OpenAPI

````yaml https://api.openworklabs.com/openapi.json?public=1 get /v1/apps/{appId}
openapi: 3.1.0
info:
  title: Den API
  description: >-
    OpenAPI spec for the Den control plane API.


    Authentication:

    - API keys (they start with `den_`) go in the `x-api-key` header as the raw
    value. Do not send them as `Authorization: Bearer`; that header only accepts
    Den session tokens, so an API key there returns 401.
      Example: `curl https://api.openworklabs.com/v1/me -H "x-api-key: den_..."`.
      API keys resolve to the issuing user and the organization member they were scoped to when created, so they can call ordinary user and organization routes without a separate signed-in session.
    - Use `Authorization: Bearer <session-token>` for user-authenticated routes
    that require a Den session.

    - Session-only flows still require a signed-in user session, including
    organization creation, invitation acceptance, active-organization switching,
    and MCP token minting.

    - Public routes like health and documentation do not require authentication.


    Swagger tip: use the security schemes in the Authorize dialog to set
    `denApiKey` (your API key) or `bearerAuth` (a session token) before trying
    protected endpoints.
  version: commit 8863aab
  contact:
    name: OpenWork
    url: https://openworklabs.com
    email: team@openworklabs.com
  license:
    name: OpenWork Enterprise Edition License
    url: https://github.com/different-ai/openwork/blob/dev/ee/LICENSE
servers:
  - url: https://api.openworklabs.com
security:
  - denApiKey: []
  - bearerAuth: []
tags:
  - name: System
    description: >-
      Service health, readiness, API documentation, and desktop version
      metadata.
  - name: Authentication
    description: >-
      Sign-in discovery, administrator bootstrap, OAuth provider connections,
      and MCP token minting.
  - name: OAuth
    description: >-
      OAuth 2.0 / OpenID Connect authorization-server and protected-resource
      metadata and dynamic client registration (RFC 8414, RFC 9728, RFC 7591),
      used by MCP clients.
  - name: SCIM
    description: >-
      SCIM 2.0 provisioning endpoints for identity providers (RFC 7644) and the
      organization SCIM connector management routes.
  - name: SSO
    description: Organization single sign-on connector management routes.
  - name: Bootstrap
    description: Agent-first provisional workspace setup routes.
  - name: Users
    description: Current user and membership routes.
  - name: Organizations
    description: Organization creation, context, brand assets, and install links.
  - name: Invitations
    description: Invitation preview, acceptance, creation, and cancellation routes.
  - name: Sandbox organizations
    description: Preview and join a sandbox organization with its shareable join link.
  - name: Members
    description: Organization member management routes.
  - name: Teams
    description: Organization team management routes.
  - name: Permissions
    description: >-
      Organization permissions: the permission catalog, Member, Admin and team
      permission sets, their history, and each member's effective permissions.
  - name: API Keys
    description: Organization API key management routes.
  - name: Desktop Policies
    description: Desktop app policies applied to the organization, members, or teams.
  - name: Agent Permissions
    description: What agents may do on members' computers, set for everyone and per team.
  - name: LLM Providers
    description: Organization LLM provider catalog, configuration, and access routes.
  - name: Inference
    description: Organization inference settings.
  - name: Inference Providers
    description: >-
      Organization inference Gateway providers, model groups, credential sets,
      access grants, member connections, and usage.
  - name: Gateway Usage Limits
    description: >-
      Estimated-cost policies, independent member calendar buckets, assignments,
      and audited usage-extension requests.
  - name: Cloud
    description: Organization Cloud instance lifecycle and browser gateway resolution.
  - name: Workers
    description: >-
      List and delete the organization's workers, including OpenWork Web
      instances.
  - name: Worker Activity
    description: Worker heartbeat and activity reporting routes.
  - name: Managed deployments
    description: >-
      OpenWork installations in an organization's own cloud account: launch
      approval, installer milestones and health reports.
  - name: Automations
    description: Scheduled Automations, their runs, and desktop runner presence.
  - name: Documents
    description: >-
      Connected Drive documents, inline editing and file-bound temporary Office
      sessions.
  - name: Workbot
    description: The signed-in member's single Workbot conversation.
  - name: Workflows
    description: Saved Workflows (Code Mode scripts), their versions, snapshots, and views.
  - name: Workflow Runs
    description: Durable Workflow run history.
  - name: Codemode Runs
    description: Generated Artifact views produced by Code Mode runs.
  - name: Apps
    description: >-
      Saved reusable apps built from Workflows and Artifact views, and their
      sharing.
  - name: Config Objects
    description: >-
      Versioned configuration objects (skills, workflows, and other plugin
      content).
  - name: Plugins
    description: Plugin packages, access grants, and imports.
  - name: Marketplaces
    description: Marketplaces that distribute plugins to members and teams.
  - name: Resources
    description: >-
      Aggregated snapshot of the resources and marketplace capabilities
      available to the caller.
  - name: Capability Sources
    description: >-
      Native provider capabilities (Google Workspace, Microsoft 365) and
      external MCP connections executed as the calling member.
  - name: Direct uploads
    description: Multipart uploads that stream workspace files straight to a provider.
  - name: Connectors
    description: >-
      Connector accounts and instances (GitHub and other sources) and their sync
      state.
  - name: GitHub
    description: >-
      GitHub App installation, repository discovery, and plugin import from
      GitHub.
  - name: Diagnostics
    description: Controlled egress diagnostics for self-hosted deployments.
  - name: Telemetry
    description: Telemetry event ingestion and adoption analytics.
  - name: Webhooks
    description: Signed inbound webhooks from third-party providers.
  - name: Admin
    description: Platform administration routes for allowlisted OpenWork administrators.
  - name: Deprecated
    description: Removed features that answer with 410 or an empty result for old clients.
paths:
  /v1/apps/{appId}:
    get:
      tags:
        - Apps
      summary: Open an app or an exact draft preview
      description: >-
        Returns the app with the compiled HTML of one revision and the artifact
        payload it should render. Without revisionId the active saved revision
        is used; pass revisionId to preview an exact draft revision instead.
        Live apps execute the current saved Workflow as the caller with optional
        IANA timeZone (UTC by default); receiptId is forbidden for live apps.
        Legacy snapshots use only the caller's receipts. When the revision has
        not finished building, no readable successful result exists, or the
        result's output schema no longer matches the revision, html and payload
        are null and previewNotice explains why.
      operationId: getV1AppsByAppId
      parameters:
        - in: query
          name: timeZone
          schema:
            type: string
            minLength: 1
            maxLength: 100
        - in: query
          name: revisionId
          schema:
            type: string
            minLength: 1
            maxLength: 160
        - in: query
          name: receiptId
          schema:
            type: string
            minLength: 1
            maxLength: 160
        - schema:
            type: string
          in: path
          name: appId
          required: true
      responses:
        '200':
          description: App preview returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  view:
                    type: object
                    properties:
                      dataMode:
                        type: string
                        enum:
                          - live
                          - snapshot
                      id:
                        type: string
                        minLength: 1
                        maxLength: 160
                      configObjectId:
                        type: string
                        minLength: 1
                        maxLength: 160
                      title:
                        type: string
                        minLength: 1
                        maxLength: 255
                      description:
                        anyOf:
                          - type: string
                            maxLength: 2000
                          - type: 'null'
                      status:
                        type: string
                        enum:
                          - active
                          - retired
                      activeRevisionId:
                        anyOf:
                          - type: string
                            minLength: 1
                            maxLength: 160
                          - type: 'null'
                      useInWorkflow:
                        type: boolean
                      revisions:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              minLength: 1
                              maxLength: 160
                            artifactViewId:
                              type: string
                              minLength: 1
                              maxLength: 160
                            resourceUri:
                              type: string
                              format: starts_with
                              pattern: ^ui:\/\/openwork\/artifacts\/.*
                            buildStatus:
                              type: string
                              enum:
                                - ready
                                - failed
                            sourceDigest:
                              type: string
                              pattern: ^sha256:[a-f0-9]{64}$
                            resourceDigest:
                              anyOf:
                                - type: string
                                  pattern: ^sha256:[a-f0-9]{64}$
                                - type: 'null'
                            outputSchemaDigest:
                              type: string
                              pattern: ^sha256:[a-f0-9]{64}$
                            csp:
                              type: object
                              properties:
                                connectDomains:
                                  minItems: 0
                                  maxItems: 0
                                  type: array
                                  items:
                                    type: string
                                resourceDomains:
                                  minItems: 0
                                  maxItems: 0
                                  type: array
                                  items:
                                    type: string
                                frameDomains:
                                  minItems: 0
                                  maxItems: 0
                                  type: array
                                  items:
                                    type: string
                                baseUriDomains:
                                  minItems: 0
                                  maxItems: 0
                                  type: array
                                  items:
                                    type: string
                              required:
                                - connectDomains
                                - resourceDomains
                                - frameDomains
                                - baseUriDomains
                            diagnostics:
                              type: array
                              items:
                                type: object
                                properties:
                                  level:
                                    type: string
                                    enum:
                                      - error
                                      - warning
                                  message:
                                    type: string
                                    minLength: 1
                                    maxLength: 4000
                                  line:
                                    anyOf:
                                      - type: integer
                                        exclusiveMinimum: 0
                                        maximum: 9007199254740991
                                      - type: 'null'
                                  column:
                                    anyOf:
                                      - type: integer
                                        minimum: 0
                                        maximum: 9007199254740991
                                      - type: 'null'
                                required:
                                  - level
                                  - message
                                  - line
                                  - column
                            compilerName:
                              type: string
                              minLength: 1
                            compilerVersion:
                              type: string
                              minLength: 1
                            reactVersion:
                              type: string
                              minLength: 1
                            compiledHtmlBytes:
                              anyOf:
                                - type: integer
                                  minimum: 0
                                  maximum: 9007199254740991
                                - type: 'null'
                            retiredAt:
                              anyOf:
                                - type: string
                                  format: date-time
                                  pattern: >-
                                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                                - type: 'null'
                            createdAt:
                              type: string
                              format: date-time
                              pattern: >-
                                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          required:
                            - id
                            - artifactViewId
                            - resourceUri
                            - buildStatus
                            - sourceDigest
                            - resourceDigest
                            - outputSchemaDigest
                            - csp
                            - diagnostics
                            - compilerName
                            - compilerVersion
                            - reactVersion
                            - compiledHtmlBytes
                            - retiredAt
                            - createdAt
                      createdAt:
                        type: string
                        format: date-time
                        pattern: >-
                          ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                      updatedAt:
                        type: string
                        format: date-time
                        pattern: >-
                          ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                    required:
                      - id
                      - configObjectId
                      - title
                      - description
                      - status
                      - activeRevisionId
                      - revisions
                      - createdAt
                      - updatedAt
                  workflowTitle:
                    type: string
                  canManage:
                    type: boolean
                  onDashboard:
                    type: boolean
                  revision:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: string
                            minLength: 1
                            maxLength: 160
                          artifactViewId:
                            type: string
                            minLength: 1
                            maxLength: 160
                          resourceUri:
                            type: string
                            format: starts_with
                            pattern: ^ui:\/\/openwork\/artifacts\/.*
                          buildStatus:
                            type: string
                            enum:
                              - ready
                              - failed
                          sourceDigest:
                            type: string
                            pattern: ^sha256:[a-f0-9]{64}$
                          resourceDigest:
                            anyOf:
                              - type: string
                                pattern: ^sha256:[a-f0-9]{64}$
                              - type: 'null'
                          outputSchemaDigest:
                            type: string
                            pattern: ^sha256:[a-f0-9]{64}$
                          csp:
                            type: object
                            properties:
                              connectDomains:
                                minItems: 0
                                maxItems: 0
                                type: array
                                items:
                                  type: string
                              resourceDomains:
                                minItems: 0
                                maxItems: 0
                                type: array
                                items:
                                  type: string
                              frameDomains:
                                minItems: 0
                                maxItems: 0
                                type: array
                                items:
                                  type: string
                              baseUriDomains:
                                minItems: 0
                                maxItems: 0
                                type: array
                                items:
                                  type: string
                            required:
                              - connectDomains
                              - resourceDomains
                              - frameDomains
                              - baseUriDomains
                          diagnostics:
                            type: array
                            items:
                              type: object
                              properties:
                                level:
                                  type: string
                                  enum:
                                    - error
                                    - warning
                                message:
                                  type: string
                                  minLength: 1
                                  maxLength: 4000
                                line:
                                  anyOf:
                                    - type: integer
                                      exclusiveMinimum: 0
                                      maximum: 9007199254740991
                                    - type: 'null'
                                column:
                                  anyOf:
                                    - type: integer
                                      minimum: 0
                                      maximum: 9007199254740991
                                    - type: 'null'
                              required:
                                - level
                                - message
                                - line
                                - column
                          compilerName:
                            type: string
                            minLength: 1
                          compilerVersion:
                            type: string
                            minLength: 1
                          reactVersion:
                            type: string
                            minLength: 1
                          compiledHtmlBytes:
                            anyOf:
                              - type: integer
                                minimum: 0
                                maximum: 9007199254740991
                              - type: 'null'
                          retiredAt:
                            anyOf:
                              - type: string
                                format: date-time
                                pattern: >-
                                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                              - type: 'null'
                          createdAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                        required:
                          - id
                          - artifactViewId
                          - resourceUri
                          - buildStatus
                          - sourceDigest
                          - resourceDigest
                          - outputSchemaDigest
                          - csp
                          - diagnostics
                          - compilerName
                          - compilerVersion
                          - reactVersion
                          - compiledHtmlBytes
                          - retiredAt
                          - createdAt
                      - type: 'null'
                  html:
                    type:
                      - string
                      - 'null'
                  payload:
                    anyOf:
                      - type: object
                        properties:
                          schemaVersion:
                            type: string
                            const: '1'
                          artifact:
                            type: object
                            properties:
                              title:
                                type: string
                                minLength: 1
                                maxLength: 255
                              description:
                                type:
                                  - string
                                  - 'null'
                              pluginId:
                                type: string
                                minLength: 1
                                maxLength: 160
                              configObjectId:
                                type: string
                                minLength: 1
                                maxLength: 160
                              configObjectVersionId:
                                type: string
                                minLength: 1
                                maxLength: 160
                              receiptId:
                                type: string
                                minLength: 1
                                maxLength: 160
                              automationRunId:
                                anyOf:
                                  - type: string
                                    minLength: 1
                                    maxLength: 160
                                  - type: 'null'
                              source:
                                type: string
                                enum:
                                  - manual
                                  - scheduled
                              generatedAt:
                                type: string
                                format: date-time
                                pattern: >-
                                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                              resultDigest:
                                type: string
                                pattern: ^sha256:[a-f0-9]{64}$
                              rendererVersion:
                                type: string
                                const: codemode-markdown-v1
                              freshness:
                                oneOf:
                                  - type: object
                                    properties:
                                      state:
                                        type: string
                                        const: never_run
                                    required:
                                      - state
                                  - type: object
                                    properties:
                                      state:
                                        type: string
                                        const: fresh
                                      ageMs:
                                        type: integer
                                        minimum: 0
                                        maximum: 9007199254740991
                                    required:
                                      - state
                                      - ageMs
                                  - type: object
                                    properties:
                                      state:
                                        type: string
                                        const: stale
                                      ageMs:
                                        type: integer
                                        minimum: 0
                                        maximum: 9007199254740991
                                      maxAgeMs:
                                        type: integer
                                        exclusiveMinimum: 0
                                        maximum: 9007199254740991
                                    required:
                                      - state
                                      - ageMs
                                      - maxAgeMs
                                  - type: object
                                    properties:
                                      state:
                                        type: string
                                        const: needs_attention
                                      ageMs:
                                        anyOf:
                                          - type: integer
                                            minimum: 0
                                            maximum: 9007199254740991
                                          - type: 'null'
                                      lastSuccessfulReceiptId:
                                        anyOf:
                                          - type: string
                                            minLength: 1
                                            maxLength: 160
                                          - type: 'null'
                                      reason:
                                        type: string
                                        minLength: 1
                                        maxLength: 2000
                                    required:
                                      - state
                                      - ageMs
                                      - lastSuccessfulReceiptId
                                      - reason
                            required:
                              - title
                              - description
                              - pluginId
                              - configObjectId
                              - configObjectVersionId
                              - receiptId
                              - automationRunId
                              - source
                              - generatedAt
                              - resultDigest
                              - rendererVersion
                              - freshness
                          data: {}
                        required:
                          - schemaVersion
                          - artifact
                          - data
                      - type: 'null'
                  previewNotice:
                    type:
                      - string
                      - 'null'
                  runError:
                    type: object
                    propertyNames:
                      type: string
                    additionalProperties: {}
                required:
                  - view
                  - workflowTitle
                  - canManage
                  - onDashboard
                  - revision
                  - html
                  - payload
                  - previewNotice
      security:
        - denApiKey: []
        - bearerAuth: []
components:
  securitySchemes:
    denApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Organization API key passed as the `x-api-key` header. The raw key is
        the header value; do not prefix it with `Bearer`.
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: session-token
      description: >-
        Den session token passed as `Authorization: Bearer <session-token>` for
        user-authenticated Den routes. Not for API keys: send `den_` keys in the
        `x-api-key` header instead.

````

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