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

> ## Agent Instructions
> Use the documentation index to find relevant pages, then read the linked Markdown before answering and cite the source URL.
> Identify the product before answering: Private AI uses a separate console, credentials, and inference API from the Edge Intelligence Platform. Do not apply instructions from one product to the other.
> Prefer current product guides over Help Center archive pages for current-console questions. Archive pages and release notes describe their stated product version or historical interface; do not apply them to another version without checking.
> Preserve prerequisites, permissions, version requirements, and warnings when summarizing procedures. Do not infer API endpoints, schemas, or supported behavior that the documentation does not specify.

# Create Edge-Node Cluster.

> POST /api/v1/cluster. Edge node clusters API reference.

Sign in to try this endpointExplore the parameters, examples, and responses below. Connect your ZedCloud session when you’re ready to send a request.

> [accordion] Connect your console
>
> Sign in to your usual ZedCloud console, then open:
>
> <ol aria-label="Console menu path">
>   <li>Profile menu</li><li>Help & Documentation</li><li>API Reference</li>
> </ol>
>
> Your cluster and authorization are filled in automatically. No token to copy.
> [More about signing in ](https://zededa.mintlify.site/api-reference/authentication.md#sign-in-to-the-api-reference)

&#x20;Modifying requests stay off until you enable them.

[Authentication](https://zededa.mintlify.site/api-reference/authentication.md) · [API availability](https://zededa.mintlify.site/api-reference/clusters.md) · [Download OpenAPI](https://zededa.mintlify.site/openapi/services/edge-node-cluster.json)

> [!WARNING]
>
> This operation can change resources or access. After signing in, open **API request settings** and select **Enable modifying requests**, then **Apply settings**, to use its playground. Check the request body and destination before selecting **Send**. Your existing API permissions still apply.

A successful response.
Bad Request. The API gateway did not process the request because of missing parameter or invalid value of parameters.
Unauthorized. The API gateway did not process the request because it lacks valid authentication credentials for the target resource. The request header has either no authorization details or an authorization that has been refused.
Forbidden. The API gateway did not process the request because the requestor does not have application level access permission for the operation or does not have access scope to the project.
Not Found. The API gateway did not process the request because the requested resource could not be found.
Conflict. The API gateway did not process the request because this edge-node cluster record will conflict with an already existing edge-node cluster record.
Precondition failed. Some of preconditions haven't been met to start request processing.
Internal Server Error. The API gateway experienced an unexpected condition. Specific error condition is indicated in error codes.
Gateway Timeout. The API gateway did not receive a timely response from an upstream microservice it needed to communicate with in order to complete the request.
An unexpected error response.


## OpenAPI

````yaml openapi/services/edge-node-cluster.json POST /v1/cluster
openapi: 3.0.0
info:
  title: ZEDEDA Edge-Node Cluster Service
  description: >-
    The service defines the APIs to work with edge-node clusters. The APIs
    include such operations as creating, updating, and deleting edge-node
    clusters, as well as listing and getting details of edge-node clusters.
  termsOfService: https://www.zededa.com/terms
  version: '1.0'
  contact:
    name: ZEDEDA API Support
    url: https://www.zededa.com/support
    email: support@zededa.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://{apiHost}/api
    variables:
      apiHost:
        default: invalid.invalid
        description: Connect from ZedUI to supply your verified API destination.
security:
  - BearerToken: []
tags:
  - name: EdgeNodeClusterConfiguration
  - name: ClusterStatus
externalDocs:
  description: ZEDEDA Product Documentation
  url: https://help.zededa.com/
paths:
  /v1/cluster:
    post:
      tags:
        - EdgeNodeClusterConfiguration
      summary: Create Edge-Node Cluster.
      description: Creates an Edge-Node Cluster record.
      operationId: EdgeNodeClusterConfiguration_CreateCluster
      parameters:
        - name: X-Request-Id
          in: header
          required: false
          description: User-Agent specified id to track a request
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EdgeNodeCluster'
        required: true
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '400':
          description: >-
            Bad Request. The API gateway did not process the request because of
            missing parameter or invalid value of parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '401':
          description: >-
            Unauthorized. The API gateway did not process the request because it
            lacks valid authentication credentials for the target resource. The
            request header has either no authorization details or an
            authorization that has been refused.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '403':
          description: >-
            Forbidden. The API gateway did not process the request because the
            requestor does not have application level access permission for the
            operation or does not have access scope to the project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '404':
          description: >-
            Not Found. The API gateway did not process the request because the
            requested resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '409':
          description: >-
            Conflict. The API gateway did not process the request because this
            edge-node cluster record will conflict with an already existing
            edge-node cluster record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '412':
          description: >-
            Precondition failed. Some of preconditions haven't been met to start
            request processing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '500':
          description: >-
            Internal Server Error. The API gateway experienced an unexpected
            condition. Specific error condition is indicated in error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '504':
          description: >-
            Gateway Timeout. The API gateway did not receive a timely response
            from an upstream microservice it needed to communicate with in order
            to complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      externalDocs:
        description: ZEDEDA Product Documentation
        url: https://help.zededa.com
components:
  schemas:
    EdgeNodeCluster:
      type: object
      properties:
        id:
          type: string
          description: System defined universally unique Id of the cluster
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/EdgeNodeCluster/properties/id'
              keyword: uniqueItems
              sourceValue: true
        name:
          type: string
          description: >-
            User defined name of the cluster, unique across the enterprise. Once
            cluster is created, name can’t be changed
        title:
          type: string
          description: User defined title of the cluster. Title can be changed at any time
        description:
          type: string
          description: Detailed description of the cluster
        tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            Tags are name/value pairs that enable you to categorize resources.
            Tag names are case insensitive with max_length 512 and min_length 3.
            Tag values are case sensitive with max_length 256 and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
        projectId:
          type: string
          description: Foreign key to the project
          pattern: '[0-9A-Za-z-]+'
        clusterPrefix:
          type: string
          description: A cluster prefix
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/EdgeNodeClusterNode'
          description: A list of nodes in the cluster
        clusterType:
          description: Type of the edge-node cluster
          allOf:
            - $ref: '#/components/schemas/EdgeNodeClusterType'
        manifestUrl:
          type: string
          description: URL to the configuration manifest
        manifest:
          type: string
          format: byte
          description: Configuration manifest in bytes
      description: Cluster detail
      title: Cluster detail
      required:
        - projectId
        - name
        - nodes
    ZsrvResponse:
      type: object
      properties:
        operationType:
          title: |-
            Describes one of the operations type : possible values
                                    Read/Delete/Create/Update/List
          allOf:
            - $ref: '#/components/schemas/ZcOpsType'
        operationStatus:
          title: if this is log running job
          allOf:
            - $ref: '#/components/schemas/ZcOpsStatus'
        objectKind:
          type: string
          title: zedcloud object kind on which the operation was performed
        objectId:
          type: string
          title: Unique value identifies the object that was operated on
        objectName:
          type: string
          title: name of the object
        objectRevision:
          type: string
          title: |-
            object revision post the operation, note Read operation
            doesn't change the revision
        objectType:
          $ref: '#/components/schemas/ObjectType'
        operationTime:
          type: string
          title: time of operation
        startTime:
          type: string
          title: total time taken by operations
        endTime:
          type: string
        user:
          type: string
          title: the operation is performed on behalf of this user
        httpStatusCode:
          type: integer
          format: int32
          title: http response
        httpStatusMsg:
          type: string
          title: summary of the error in text format
        jobId:
          type: string
          title: for tracking asynchronous tasks
        error:
          type: array
          items:
            $ref: '#/components/schemas/ZsrvError'
          title: |-
            one or more errors will be set if the operation failed
            i.e. httpStatusCode != 2xx
    googlerpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/protobufAny'
    EdgeNodeClusterNode:
      type: object
      properties:
        id:
          type: string
          description: System defined universally unique Id of the node
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/EdgeNodeClusterNode/properties/id'
              keyword: uniqueItems
              sourceValue: true
        clusterInterface:
          type: string
          description: >-
            User defined name of the cluster interface, unique across the
            enterprise. Once cluster interface is created, name can’t be changed
        nodeType:
          description: Type of node
          allOf:
            - $ref: '#/components/schemas/EdgeNodeClusterNodeType'
        clusterPrefix:
          type: string
          description: A cluster prefix
        resourceLabels:
          type: object
          additionalProperties:
            type: string
          description: >-
            Resource labels are name/value pairs that enable you to categorize
            resources. Label names are case insensitive with max_length 512 and
            min_length 3. Label values are case sensitive with max_length 256
            and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
      description: Cluster node detail
      title: Cluster node detail
      required:
        - id
        - clusterInterface
    EdgeNodeClusterType:
      type: string
      enum:
        - EDGE_NODE_CLUSTER_TYPE_STANDART
        - EDGE_NODE_CLUSTER_TYPE_ZKS
      default: EDGE_NODE_CLUSTER_TYPE_STANDART
      description: |2-
         - EDGE_NODE_CLUSTER_TYPE_STANDART: A standard cluster is a cluster that has exactly 3 nodes.
        This is the default type, which does not support zks clusters.
         - EDGE_NODE_CLUSTER_TYPE_ZKS: A zks cluster is a cluster that can have 1, 3 or more nodes.
        Its role is to support zks clusters.
    ZcOpsType:
      type: string
      enum:
        - OPS_TYPE_UNSPECIFIED
        - OPS_TYPE_READ
        - OPS_TYPE_DELETE
        - OPS_TYPE_CREATE
        - OPS_TYPE_UPDATE
        - OPS_TYPE_LIST
      default: OPS_TYPE_UNSPECIFIED
      title: ZedCloud internal operation type
    ZcOpsStatus:
      type: string
      enum:
        - OPS_STATUS_UNSPECIFIED
        - OPS_STATUS_PENDING
        - OPS_STATUS_ONGOING
        - OPS_STATUS_COMPLETE
      default: OPS_STATUS_UNSPECIFIED
      description: >-
        - OPS_STATUS_PENDING: In rare cases, system may not start operation when
        it was requested. Client will be notified that operation is PENDING
         - OPS_STATUS_ONGOING: system will start the operation, but at the time response was generated, operation is still ONGOING.
         - OPS_STATUS_COMPLETE: Even if the result of the operations may result in failure, but the OpsStatus will marked COMPLETE for almost all cases.
      title: ZedCloud internal operation status
    ObjectType:
      type: string
      enum:
        - OBJECT_TYPE_UNSPECIFIED
        - OBJECT_TYPE_USER
        - OBJECT_TYPE_EDGE_NODE
        - OBJECT_TYPE_EDGE_APP
        - OBJECT_TYPE_IMAGE
        - OBJECT_TYPE_EDGE_APP_INSTANCE
        - OBJECT_TYPE_PROJECT
        - OBJECT_TYPE_NETWORK
        - OBJECT_TYPE_DATASTORE
        - OBJECT_TYPE_SERVICE
        - OBJECT_TYPE_SERVICE_INSTANCE
        - OBJECT_TYPE_ENTERPRISE
        - OBJECT_TYPE_ROLE
        - OBJECT_TYPE_CREDENTIAL
        - OBJECT_TYPE_NETWORK_INSTANCE
        - OBJECT_TYPE_VOLUME_INSTANCE
        - OBJECT_TYPE_REALM
        - OBJECT_TYPE_AUTHPROFILE
        - OBJECT_TYPE_POLICY
        - OBJECT_TYPE_APP_POLICY
        - OBJECT_TYPE_CLUSTER_INSTANCE
        - OBJECT_TYPE_PLUGIN
        - OBJECT_TYPE_DOC_POLICY
        - OBJECT_TYPE_ORCHESTRATOR_CLUSTER
        - OBJECT_TYPE_TAGS
        - OBJECT_TYPE_EDGE_NODE_INTERFACE
        - OBJECT_TYPE_DEPLOYMENT
        - OBJECT_TYPE_ENTITLEMENTS
        - OBJECT_TYPE_DATA_STREAM
        - OBJECT_TYPE_API_USAGE
        - OBJECT_TYPE_APP_INSTANCE_SNAPSHOT
        - OBJECT_TYPE_PATCH_ENVELOPE
        - OBJECT_TYPE_RESOURCE_USAGE_TRACK
        - OBJECT_TYPE_PATCH_ENVELOPE_REFERENCE
        - OBJECT_TYPE_DEV_PASSTHROUGH
        - OBJECT_TYPE_EDGE_NODE_CLUSTER
        - OBJECT_TYPE_ASSET_GROUP
        - OBJECT_TYPE_APP_PROFILE
        - OBJECT_TYPE_PROFILE_DEPLOYMENT
        - OBJECT_TYPE_ZKS_INSTANCE
        - OBJECT_TYPE_CLUSTER_GROUP
      default: OBJECT_TYPE_UNSPECIFIED
    ZsrvError:
      type: object
      properties:
        ec:
          title: |-
            Enumrated error code, describes more granular numerical
            value than just httpStatus
          allOf:
            - $ref: '#/components/schemas/ZsrvErrorCode'
        location:
          type: string
          title: 'Ignore: Internal field only'
        details:
          type: string
          title: Field captures string description of details
    protobufAny:
      type: object
      properties:
        typeUrl:
          type: string
        value:
          type: string
          format: byte
    EdgeNodeClusterNodeType:
      type: string
      enum:
        - EDGE_NODE_CLUSTER_NODE_TYPE_UNSPECIFIED
        - EDGE_NODE_CLUSTER_NODE_TYPE_SERVER
        - EDGE_NODE_CLUSTER_NODE_TYPE_AGENT
      default: EDGE_NODE_CLUSTER_NODE_TYPE_UNSPECIFIED
    ZsrvErrorCode:
      type: string
      enum:
        - zMsgErrorNone
        - zMsgSucess
        - NotFound
        - AlreadyExists
        - VersionMismatch
        - RangeError
        - LargeResult
        - IncompleteData
        - InvalidData
        - FunctionUnsupported
        - NoMemory
        - SendFailure
        - Timeout
        - BadReqBody
        - BadReqParam
        - InvalidFieldFormat
        - UrlNotFound
        - ApiVersionNotSupported
        - Unauthorized
        - Forbidden
        - Conflict
        - NotModified
        - DependencyConflict
        - JsonFmtError
        - ProtoFmtError
        - CertError
        - DataBaseConnection
        - DBError
        - zMsgAccepted
        - zMsgCreated
        - PreConditionFailed
        - InternalServerError
      default: zMsgErrorNone
      description: |-
        - zMsgErrorNone: common validation errors
         - IncompleteData: message had fields that weren't filled in
         - InvalidData: message contained the field that wasn't expected
         - FunctionUnsupported: this feature unavailable on this version of device
         - InvalidFieldFormat: message contained the field that wasn't correctly formatted
         - JsonFmtError: Marshal / Unmarshal errors
         - DataBaseConnection: generic DB error
      title: ZedCould internal error code
  securitySchemes:
    BearerToken:
      type: http
      description: Bearer token for user session
      scheme: bearer

````