> ## 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.

# Save Model API visibility and named collaborators in one request

> Persist Public, Discoverable, or Private together with the full list of user and
organization collaborators. Use this for a single Access Save so both halves apply
or neither does. Load the current values from the related GET routes, send every
collaborator that should remain, and keep at least one Owner. Anyone omitted loses
the assigned role, including the caller. Omitting yourself is allowed when another
Owner remains; omitting the last Owner is rejected.

This route does not change `access.isPublic` on
GET /api/modelServing/v1/modelApis/{modelApiId}. Public still requires an
authenticated caller. `com.cerebro.domino.modelmanager.allowPublicModels` blocks
Public only; Discoverable and Private stay available when that setting is false.
PUT /api/modelServing/v1/modelApis/{modelApiId} does not accept these fields.
Incremental writes still work: PUT .../visibility and POST/PUT/DELETE .../collaborators.

Related:
- GET /api/modelServing/beta/modelApis/{modelApiId}/visibility (read current visibility)
- GET /api/modelServing/beta/modelApis/{modelApiId}/collaborators (list current collaborators)
- GET /api/modelServing/v1/modelApis/{modelApiId} (confirm the Model API id)




## OpenAPI

````yaml /api-specs/cloud/public-api.json put /api/modelServing/beta/modelApis/{modelApiId}/access
openapi: 3.0.3
info:
  title: Domino Public API
  description: Reference for Domino's public REST API endpoints.
  version: 6.4.0
  x-catalog-key: nucleus
servers:
  - url: https://mycluster.domino.tech
    description: >-
      Replace 'mycluster.domino.tech' with your Domino cluster hostname. For
      Domino Cloud customers, that is `your-subdomain`.domino.tech (e.g.,
      acme.domino.tech). For self-hosted deployments, it is the hostname you
      reach the Domino UI at.
security: []
tags:
  - name: Projects
  - name: Project templates
  - name: Workspaces
  - name: Jobs
  - name: HPC Jobs
  - name: Environments
  - name: Hardware Tiers
  - name: Datasets
  - name: Data Sources
  - name: GenAI
  - name: AI Systems
  - name: Apps
  - name: App versions
  - name: App instances
  - name: Model APIs
  - name: Registered models
  - name: Model deployment
  - name: Extensions
  - name: Cost and billing
  - name: Users and organizations
  - name: Service accounts
  - name: Personal Access Tokens
  - name: Personal Access Tokens (admin)
  - name: Audit Trail
  - name: Custom metrics
  - name: PPM
  - name: Model Monitoring models
  - name: Model Monitoring drift and quality
  - name: Model Monitoring settings
  - name: Model Monitoring authentication
  - name: Governance bundles
  - name: Governance policies
  - name: Governance evidence and results
  - name: Governance operations
  - name: NetApp Volumes
  - name: NetApp Volumes snapshots
  - name: NetApp Volumes filesystems
  - name: NetApp Volumes transfers
  - name: Tags
  - name: Properties
externalDocs:
  description: OpenAPI
  url: https://swagger.io/resources/open-api/
paths:
  /api/modelServing/beta/modelApis/{modelApiId}/access:
    put:
      tags:
        - Model APIs
      summary: Save Model API visibility and named collaborators in one request
      description: >
        Persist Public, Discoverable, or Private together with the full list of
        user and

        organization collaborators. Use this for a single Access Save so both
        halves apply

        or neither does. Load the current values from the related GET routes,
        send every

        collaborator that should remain, and keep at least one Owner. Anyone
        omitted loses

        the assigned role, including the caller. Omitting yourself is allowed
        when another

        Owner remains; omitting the last Owner is rejected.


        This route does not change `access.isPublic` on

        GET /api/modelServing/v1/modelApis/{modelApiId}. Public still requires
        an

        authenticated caller.
        `com.cerebro.domino.modelmanager.allowPublicModels` blocks

        Public only; Discoverable and Private stay available when that setting
        is false.

        PUT /api/modelServing/v1/modelApis/{modelApiId} does not accept these
        fields.

        Incremental writes still work: PUT .../visibility and POST/PUT/DELETE
        .../collaborators.


        Related:

        - GET /api/modelServing/beta/modelApis/{modelApiId}/visibility (read
        current visibility)

        - GET /api/modelServing/beta/modelApis/{modelApiId}/collaborators (list
        current collaborators)

        - GET /api/modelServing/v1/modelApis/{modelApiId} (confirm the Model API
        id)
      operationId: replaceModelApiAccess
      parameters:
        - description: >
            Model API id (24-character hex). Copy `id` from GET
            /api/modelServing/v1/modelApis

            or from the Model API details URL.
          in: path
          name: modelApiId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            example:
              collaborators:
                - id: 507f1f77bcf86cd799439011
                  isOrganization: false
                  role: Owner
              visibility: Discoverable
            schema:
              $ref: '#/components/schemas/ModelApiAccess'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                collaborators:
                  - id: 507f1f77bcf86cd799439011
                    isOrganization: false
                    role: Owner
                visibility: Discoverable
              schema:
                $ref: '#/components/schemas/ModelApiAccess'
          description: >
            Visibility and the complete named collaborator list after persist.
            This matches

            GET /api/modelServing/beta/modelApis/{modelApiId}/visibility plus

            GET /api/modelServing/beta/modelApis/{modelApiId}/collaborators.
        '400':
          description: >
            The request cannot be applied. Typical causes:

            - modelApiId or a collaborator id is not a 24-character hex
            ObjectId. Copy them
              from GET /api/modelServing/v1/modelApis and
              GET /api/modelServing/beta/modelApis/{modelApiId}/collaborators.
            - `visibility` is not exactly Public, Discoverable, or Private
            (case-sensitive).

            - A role is not exactly Owner, Editor, Operator, or Viewer (Hidden
            and unknown
              roles are rejected).
            - Collaborator ids are duplicated, or the resulting list has no
            Owner. Keep at
              least one Owner. Omitting yourself is rejected when you are the last Owner.
            - Public was requested while
            `com.cerebro.domino.modelmanager.allowPublicModels`
              is false. Retry with Discoverable or Private, or ask an admin to enable public
              Model APIs.
        '401':
          description: >
            No Domino session or API token was accepted before the handler ran.

            Sign in or pass a valid API key. Callers that reach this route
            without an

            authenticated principal receive 403 instead.
        '403':
          description: >
            You cannot manage collaborators on this Model API. Ask an Owner or a
            user with

            ManageModelCollaborators to save access, or retry with sufficient
            permissions.

            Anonymous requests that reach the handler also receive 403.
        '404':
          description: |
            No Model API exists for modelApiId. Confirm the id from
            GET /api/modelServing/v1/modelApis.
      security:
        - DominoApiKey: []
        - BearerAuthentication: []
components:
  schemas:
    ModelApiAccess:
      properties:
        collaborators:
          description: >
            Complete replacement list of user and organization collaborators.
            Must contain

            at least one Owner and no duplicate ids. Omitting the caller is
            allowed when

            another Owner remains.
          items:
            $ref: '#/components/schemas/ModelApiCollaborator'
          nullable: false
          type: array
        visibility:
          description: Model API visibility to persist.
          enum:
            - Public
            - Discoverable
            - Private
          nullable: false
          type: string
      required:
        - visibility
        - collaborators
    ModelApiCollaborator:
      properties:
        id:
          description: >
            Domino user or organization id (24-character hex ObjectId). This
            pattern applies

            to GET, POST, and PUT because they share this schema. Responses use
            the same

            shape: stored collaborator refs are Mongo ObjectIds, so non-hex ids
            are not

            returned. Copy `id` from GET
            /api/modelServing/beta/modelApis/{modelApiId}/collaborators,

            or use a user or organization id from the Domino UI. Set
            isOrganization to match

            the type; Domino does not look up the id to confirm it exists.
          nullable: false
          pattern: ^[0-9a-fA-F]{24}$
          type: string
        isOrganization:
          description: Whether id identifies an organization.
          nullable: false
          type: boolean
        role:
          description: >-
            Collaborator role. Management APIs accept Owner, Editor, Operator,
            and Viewer.
          enum:
            - Owner
            - Editor
            - Operator
            - Viewer
          nullable: false
          type: string
      required:
        - id
        - role
        - isOrganization
  securitySchemes:
    DominoApiKey:
      type: apiKey
      in: header
      name: X-Domino-Api-Key
    BearerAuthentication:
      type: apiKey
      name: Authorization
      in: header

````

## Related topics

- [Read one Model API collaborator's role](/api-reference/model-apis/read-one-model-api-collaborators-role.md)
- [Sharing and access](/cloud/platform-capabilities/features/collaboration/sharing-and-access.md)
- [Domino Cloud release notes](/release-notes/cloud-release.md)
- [Change who can discover and invoke a Model API](/api-reference/model-apis/change-who-can-discover-and-invoke-a-model-api.md)
