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

# Create App (v1)

> Create an App in draft state with an initial version. The initialVersion field provides optional configuration for the version; a version is always created even if the field is omitted. Does NOT start an instance.




## OpenAPI

````yaml /api-specs/cloud/public-api.yaml post /api/apps/v1/apps
openapi: 3.0.3
info:
  title: Domino Public API
  description: Domino Public API Endpoints
  version: cloud
servers: []
security:
  - DominoApiKey: []
  - BearerAuthentication: []
tags:
  - name: AIGateway
  - name: AppInstances
  - name: AppVersions
  - name: Apps
  - name: AsyncPredictions
  - name: AuditTrail
  - name: BillingTag
  - name: BillingTagSettings
  - name: Cost
  - name: CustomMetrics
  - name: DataSource
  - name: DatasetRw
  - name: DeploymentTargets
  - name: Environments
  - name: Extensions
  - name: GenAI
  - name: HardwareTier
  - name: Jobs
  - name: ModelAPI
  - name: ModelAPIVersion
  - name: ModelDeployment
  - name: Organizations
  - name: PPM
  - name: PersonalAccessToken
  - name: ProjectSharedDatasets
  - name: ProjectTemplates
  - name: Projects
  - name: ProjectsCommits
  - name: ProjectsFiles
  - name: RegisteredModels
  - name: ServiceAccounts
  - name: Users
  - name: Workspaces
paths:
  /api/apps/v1/apps:
    post:
      tags:
        - Apps
      summary: Create App (v1)
      description: >
        Create an App in draft state with an initial version. The initialVersion
        field provides optional configuration for the version; a version is
        always created even if the field is omitted. Does NOT start an instance.
      operationId: createAppV1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppCreationRequestV1'
        description: Request to create an app
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppResponseV1'
          description: Success
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
components:
  schemas:
    AppCreationRequestV1:
      description: >
        Create an App in draft state with an initial version. A version is
        always created; the 'initialVersion' field provides optional
        configuration for it. Does NOT start an instance.
      properties:
        accessStatuses:
          items:
            $ref: '#/components/schemas/AppAccessStatus'
          type: array
        configurationType:
          $ref: '#/components/schemas/AppConfigurationType'
        description:
          type: string
        discoverable:
          type: boolean
        entryPoint:
          description: Immutable after creation.
          type: string
        initialVersion:
          $ref: '#/components/schemas/AppVersionCreationRequestV1'
          description: >
            Optional configuration for the initial version. A version is always
            created; this field overrides defaults for it.
            content.mountDatasets, when provided, overrides the top-level
            mountDatasets for the initial version snapshot only; the App keeps
            the top-level value.
        mountDatasets:
          description: >
            App-level default for whether to mount Domino Datasets into the
            App's runtime. Omitted falls back to the internal default (true).
            Per-version overrides via initialVersion.content.mountDatasets (this
            endpoint) and POST /apps/{appId}/versions still win.
          type: boolean
        name:
          type: string
        projectId:
          type: string
        renderIFrame:
          type: boolean
        sendNotifications:
          description: >
            When initial accessStatuses contains users, controls whether those
            users receive an

            email notification on creation. Defaults to false when omitted.
          type: boolean
        visibility:
          enum:
            - AUTHENTICATED
            - GRANT_BASED
            - GRANT_BASED_STRICT
            - PUBLIC
          type: string
      required:
        - name
        - projectId
        - visibility
      type: object
    AppResponseV1:
      properties:
        accessControl:
          $ref: '#/components/schemas/AppAccessControl'
        authorship:
          $ref: '#/components/schemas/AppAuthorship'
        configurationType:
          $ref: '#/components/schemas/AppConfigurationType'
        currentVersion:
          $ref: '#/components/schemas/AppVersionResponseV1'
        customFields:
          description: Custom field values assigned to this app, grouped by group name.
          items:
            $ref: '#/components/schemas/CustomFieldValueGroup'
          type: array
        description:
          type: string
        entryPoint:
          type: string
        id:
          type: string
        mountDatasets:
          description: >-
            App-level default for whether to mount Domino Datasets into the
            App's runtime.
          type: boolean
        name:
          type: string
        project:
          $ref: '#/components/schemas/AppProjectResponse'
        renderIFrame:
          type: boolean
        taxonomyTags:
          description: >-
            Taxonomy tags assigned to this app. Omitted when the taxonomy
            feature is disabled.
          items:
            $ref: '#/components/schemas/TaxonomyTag'
          type: array
        thumbnailEtag:
          type: string
        updatedAt:
          format: epoch
          type: number
        url:
          type: string
        vanityUrl:
          type: string
        views:
          type: number
      required:
        - id
        - name
        - project
        - entryPoint
        - renderIFrame
        - url
        - views
        - configurationType
        - authorship
        - accessControl
        - mountDatasets
      type: object
    AppAccessStatus:
      properties:
        status:
          enum:
            - ALLOWED
            - DENIED
            - PENDING
          type: string
        userId:
          type: string
      required:
        - userId
        - status
      type: object
    AppConfigurationType:
      default: STANDARD
      description: >-
        Type of configuration for the app which determines different deployment
        resources and settings.
      enum:
        - STANDARD
        - AISYSTEM
      type: string
    AppVersionCreationRequestV1:
      description: >
        Create a new version of an App. The content sub-object carries
        reproducibility fields (including the per-version mountDatasets
        override) and deployment carries execution settings. Top-level fields
        are version metadata that don't fit cleanly into the content/deployment
        groupings.
      properties:
        bundleId:
          description: Guardrails bundle ID.
          type: string
        content:
          $ref: '#/components/schemas/AppVersionContentUpdate'
        deployment:
          $ref: '#/components/schemas/AppVersionDeploymentUpdate'
        description:
          description: Optional version description.
          type: string
        tags:
          items:
            $ref: '#/components/schemas/AppVersionTag'
          type: array
        workspaceId:
          description: >
            Draft only. ID of the apps-authoring workspace to associate with
            this draft version. Returns 422 if the parent App is not a draft.
          type: string
      type: object
    AppAccessControl:
      description: Visibility and access-grant settings for an App.
      properties:
        accessStatuses:
          items:
            $ref: '#/components/schemas/AppAccessStatus'
          type: array
        discoverable:
          type: boolean
        visibility:
          enum:
            - AUTHENTICATED
            - GRANT_BASED
            - GRANT_BASED_STRICT
            - PUBLIC
          type: string
      required:
        - visibility
        - accessStatuses
        - discoverable
      type: object
    AppAuthorship:
      description: >-
        Identity metadata for an App: whether it is a draft and the user who
        created it.
      properties:
        author:
          allOf:
            - $ref: '#/components/schemas/AppUserResponse'
          description: User who created this App.
          nullable: true
        isDraft:
          description: >-
            True when this App is a workspace-scoped draft. Always false for
            published Apps.
          type: boolean
      required:
        - isDraft
      type: object
    AppVersionResponseV1:
      properties:
        bundle:
          $ref: '#/components/schemas/AppVersionBundle'
        content:
          $ref: '#/components/schemas/AppVersionContent'
        createdAt:
          format: epoch
          type: number
        currentInstance:
          $ref: '#/components/schemas/AppInstanceSummaryResponseV1'
        deployment:
          $ref: '#/components/schemas/AppVersionDeployment'
        description:
          type: string
        id:
          type: string
        tags:
          items:
            $ref: '#/components/schemas/AppVersionTag'
          type: array
        updatedAt:
          format: epoch
          type: number
        versionNumber:
          description: Monotonically increasing version number derived from creationOrder.
          format: int64
          type: integer
      required:
        - id
        - createdAt
        - updatedAt
        - tags
      type: object
    CustomFieldValueGroup:
      properties:
        fields:
          items:
            $ref: '#/components/schemas/CustomFieldValue'
          type: array
        groupName:
          description: Group name. "Ungrouped" for fields with no group.
          type: string
      required:
        - groupName
        - fields
      type: object
    AppProjectResponse:
      properties:
        id:
          type: string
        name:
          type: string
        ownerId:
          type: string
        ownerUsername:
          type: string
        projectType:
          enum:
            - Analytic
            - Dataset
            - Template
          type: string
      required:
        - id
        - projectType
        - name
        - ownerId
        - ownerUsername
      type: object
    TaxonomyTag:
      properties:
        description:
          type: string
        fullPath:
          description: >-
            Ancestor labels from root to direct parent. Empty for root-level
            tags.
          items:
            type: string
          type: array
        id:
          type: string
        label:
          type: string
        namespaceId:
          type: string
        namespaceLabel:
          type: string
      required:
        - id
        - label
        - namespaceId
      type: object
    FailureEnvelopeV1:
      properties:
        errors:
          description: Errors that caused a request to fail
          items:
            type: string
          type: array
        requestId:
          description: Id used to correlate a request with server actions.
          example: bbd78579-93c4-45ee-a983-0d5c8da6d5b1
          type: string
      required:
        - requestId
        - errors
      type: object
    AppVersionContentUpdate:
      description: >
        Reproducibility fields that define the version's content. All fields are
        optional; omitted fields fall back to App-level defaults or the previous
        draft's values depending on context. Mirrors the response-side
        AppVersionContent shape.
      properties:
        dataPlaneId:
          description: >
            Target data plane ID. If omitted but hardwareTierId is provided in
            deployment, auto-populated from the hardware tier's data plane.
            Returns 422 if both are provided and they don't match.
          type: string
        dfsCommitId:
          type: string
        entryScript:
          description: Effective entry point for the draft App version.
          type: string
        environmentId:
          type: string
        environmentRevisionId:
          type: string
        extendedIdentityPropagationToAppsEnabled:
          type: boolean
        externalVolumeMountIds:
          items:
            type: string
          type: array
        gitRef:
          $ref: '#/components/schemas/GitRef'
        mountDatasets:
          description: >
            Per-version override of the App-level mountDatasets default for
            whether to mount Domino Datasets into this version's runtime. When
            omitted, the App-level default applies.
          type: boolean
        netAppVolumeIds:
          items:
            type: string
          type: array
        resolvedCommits:
          $ref: '#/components/schemas/ResolvedCommitsUpdate'
      type: object
    AppVersionDeploymentUpdate:
      description: >
        Execution settings for the version. All fields are optional; omitted
        fields fall back to App-level defaults or the previous version's values
        depending on context. Mirrors the response-side AppVersionDeployment
        shape.
      properties:
        autoscalingSpecification:
          $ref: '#/components/schemas/AppAutoscalingSpecification'
        hardwareTierId:
          type: string
        renderIFrame:
          description: >
            Deployment-field override for App-level renderIFrame. Only valid
            when starting a published App version: the override is written back
            to the App alongside launch (mirrors the vanityUrl writeback) so the
            value reflects the running version. Returns 422 when supplied on a
            draft start, since drafts rebaseline renderIFrame from the draft App
            on publish and any override would be silently lost.
          type: boolean
        vanityUrl:
          type: string
      type: object
    AppVersionTag:
      properties:
        key:
          type: string
        value:
          type: string
      required:
        - key
        - value
      type: object
    AppUserResponse:
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
      type: object
    AppVersionBundle:
      properties:
        id:
          description: Guardrails bundle ID. Immutable after creation.
          type: string
        name:
          type: string
      type: object
    AppVersionContent:
      description: Reproducibility fields that define the version's content.
      properties:
        dataPlaneId:
          nullable: true
          type: string
        dfsCommitId:
          type: string
        entryScript:
          description: Effective entry point for the App version.
          type: string
        environmentId:
          type: string
        environmentRevisionId:
          type: string
        extendedIdentityPropagationToAppsEnabled:
          type: boolean
        externalVolumeMountIds:
          items:
            type: string
          type: array
        gitRef:
          $ref: '#/components/schemas/GitRef'
        mountDatasets:
          description: >-
            Whether to mount Domino Datasets into the App's runtime for this
            version.
          type: boolean
        netAppVolumeIds:
          items:
            type: string
          type: array
        resolvedCommits:
          $ref: '#/components/schemas/ResolvedCommits'
      required:
        - mountDatasets
      type: object
    AppInstanceSummaryResponseV1:
      properties:
        createdAt:
          format: epoch
          type: number
        describeUrl:
          type: string
        dfsCommitId:
          description: The DFS commit ID that was used for this instance's execution.
          type: string
        gitCommitId:
          description: The git commit SHA that was used for this instance's execution.
          type: string
        id:
          type: string
        publisher:
          allOf:
            - $ref: '#/components/schemas/AppUserResponse'
          description: User who started this run.
          nullable: true
        status:
          type: string
      required:
        - id
        - createdAt
        - status
      type: object
    AppVersionDeployment:
      description: Execution settings for the version.
      properties:
        autoscalingSpecification:
          $ref: '#/components/schemas/AppAutoscalingSpecification'
        hardwareTierId:
          type: string
        vanityUrl:
          type: string
      type: object
    CustomFieldValue:
      properties:
        customFieldId:
          type: string
        customFieldLabel:
          type: string
        status:
          enum:
            - active
            - deprecated
          type: string
        type:
          enum:
            - text
            - number
            - date
            - boolean
            - url
            - user
            - organization
            - user_or_org
          type: string
        updatedAt:
          format: epoch
          type: number
        updatedBy:
          $ref: '#/components/schemas/CustomFieldUpdatedBy'
        value:
          description: >-
            Encoded scalar value as stored upstream; encoding depends on type.
            Absent when no value is set.
          type: string
      required:
        - customFieldId
        - customFieldLabel
        - type
        - status
      type: object
    GitRef:
      properties:
        type:
          enum:
            - head
            - commitId
            - branches
            - tags
            - custom
          type: string
        value:
          type: string
      required:
        - type
      type: object
    ResolvedCommitsUpdate:
      description: >
        Pre-resolved commit and import snapshot information supplied at version
        creation time. When provided, these values bypass the commit resolver
        and are persisted directly. All fields are optional. Field names mirror
        the response-side ResolvedCommits shape so request and response use the
        same vocabulary.
      properties:
        dfsCommitId:
          description: >-
            Pre-resolved DFS commit ID; bypasses the commit resolver when
            provided.
          type: string
        gitCommitId:
          description: >-
            Pre-resolved git commit SHA; bypasses the commit resolver when
            provided.
          type: string
        importedGitRepos:
          description: >-
            Pre-resolved imported git repo snapshots; bypasses the resolver when
            provided.
          items:
            $ref: '#/components/schemas/ImportedGitRepoSnapshot'
          type: array
        importedProjects:
          description: >-
            Pre-resolved imported project snapshots; bypasses the resolver when
            provided.
          items:
            $ref: '#/components/schemas/ImportedProjectSnapshot'
          type: array
      type: object
    AppAutoscalingSpecification:
      properties:
        enabled:
          type: boolean
        maxReplicas:
          maximum: 30
          minimum: 1
          type: integer
        minReplicas:
          maximum: 30
          minimum: 1
          type: integer
        scaleDownStabilizationWindowSeconds:
          maximum: 3600
          minimum: 0
          type: integer
        scaleUpStabilizationWindowSeconds:
          maximum: 3600
          minimum: 0
          type: integer
        targetCpuAvgUtilizationPct:
          maximum: 100
          minimum: 1
          type: integer
        targetMemoryAvgUtilizationPct:
          maximum: 100
          minimum: 1
          type: integer
        useSessionAffinity:
          type: boolean
      required:
        - enabled
      type: object
    ResolvedCommits:
      description: >-
        Resolved commit and import snapshot information captured at version
        creation time.
      properties:
        dfsCommitId:
          description: The DFS commit ID resolved at version creation time.
          type: string
        gitCommitId:
          description: The git commit SHA resolved at version creation time.
          type: string
        importedGitRepos:
          description: Imported git repo snapshots resolved at version creation time.
          items:
            $ref: '#/components/schemas/ImportedGitRepoSnapshot'
          type: array
        importedProjects:
          description: Imported project snapshots resolved at version creation time.
          items:
            $ref: '#/components/schemas/ImportedProjectSnapshot'
          type: array
      type: object
    CustomFieldUpdatedBy:
      properties:
        userId:
          type: string
        username:
          type: string
      required:
        - userId
      type: object
    ImportedGitRepoSnapshot:
      properties:
        ref:
          type: string
        repoId:
          type: string
        repoName:
          type: string
      required:
        - repoId
        - repoName
        - ref
      type: object
    ImportedProjectSnapshot:
      properties:
        commitId:
          type: string
        directoryName:
          type: string
        ownerId:
          type: string
        projectId:
          type: string
        projectName:
          type: string
        release:
          type: string
      required:
        - projectId
        - projectName
        - ownerId
        - directoryName
        - commitId
      type: object
  responses:
    '400':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Bad Request
    '401':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FailureEnvelopeV1'
      description: >-
        The current user cannot perform this operation because they are not
        logged in
    '403':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FailureEnvelopeV1'
      description: The current user is not authorized to perform this operation
    '422':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/FailureEnvelopeV1'
      description: >-
        The server understands the content type of the request entity, and the
        syntax of the request entity is correct, but it was unable to process
        the contained instructions.
    '500':
      content:
        application/json:
          schema:
            properties:
              error:
                type: string
            type: object
      description: Internal Server Error
  securitySchemes:
    DominoApiKey:
      in: header
      name: X-Domino-Api-Key
      type: apiKey
    BearerAuthentication:
      in: header
      name: Authorization
      type: apiKey

````