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

# Validate Manifest

> Validate a YAML manifest without applying.

Checks:
- YAML syntax validity
- Schema validation against manifest models
- Cross-resource reference validation
- Dependency resolution (no circular dependencies)
- Secret reference existence
- Every extractor a namespace or collection names exists and is turned on
- Retriever stages are registered and their parameters valid
- Every feature URI a retriever or cluster names is written by a collection
- Alert applications map every input their alert's retriever requires
- Namespace budgets above the organization's bound (a warning: apply sets
  the bound)

These are the checks apply runs before creating anything, so a manifest
that validates with no errors is one apply will not refuse on references.

Returns detailed validation results including:
- Resource counts by type
- Missing secrets that need to be configured
- Validation errors and warnings

**Example:**
```bash
curl -X POST /v1/manifest/validate \
  -H "Authorization: Bearer $API_KEY" \
  -F "manifest_file=@mixpeek.yaml"
```



## OpenAPI

````yaml post /v1/manifest/validate
openapi: 3.1.0
info:
  title: Mixpeek API
  description: >-
    This is the Mixpeek API, providing access to various endpoints for data
    processing and retrieval.
  termsOfService: https://mixpeek.com/terms
  contact:
    name: Mixpeek Support
    url: https://mixpeek.com/contact
    email: info@mixpeek.com
  version: '0.82'
servers:
  - url: https://api.mixpeek.com
    description: Production
security:
  - BearerAuth: []
paths:
  /v1/manifest/validate:
    post:
      tags:
        - Manifest
      summary: Validate Manifest
      description: >-
        Validate a YAML manifest without applying.


        Checks:

        - YAML syntax validity

        - Schema validation against manifest models

        - Cross-resource reference validation

        - Dependency resolution (no circular dependencies)

        - Secret reference existence

        - Every extractor a namespace or collection names exists and is turned
        on

        - Retriever stages are registered and their parameters valid

        - Every feature URI a retriever or cluster names is written by a
        collection

        - Alert applications map every input their alert's retriever requires

        - Namespace budgets above the organization's bound (a warning: apply
        sets
          the bound)

        These are the checks apply runs before creating anything, so a manifest

        that validates with no errors is one apply will not refuse on
        references.


        Returns detailed validation results including:

        - Resource counts by type

        - Missing secrets that need to be configured

        - Validation errors and warnings


        **Example:**

        ```bash

        curl -X POST /v1/manifest/validate \
          -H "Authorization: Bearer $API_KEY" \
          -F "manifest_file=@mixpeek.yaml"
        ```
      operationId: validate_manifest_v1_manifest_validate_post
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/Body_validate_manifest_v1_manifest_validate_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateResult'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    Body_validate_manifest_v1_manifest_validate_post:
      properties:
        manifest_file:
          type: string
          contentMediaType: application/octet-stream
          title: Manifest File
          description: YAML manifest file
        parameters:
          anyOf:
            - type: string
            - type: 'null'
          title: Parameters
          description: >-
            JSON object of values for the manifest's declared parameters, e.g.
            {"camera_url": "rtsp://host/stream", "polling_seconds": 300}. Each
            value must match its declared type. Omit when the manifest declares
            none.
      type: object
      required:
        - manifest_file
      title: Body_validate_manifest_v1_manifest_validate_post
    ValidateResult:
      properties:
        valid:
          type: boolean
          title: Valid
          description: Whether the manifest is valid
        resources:
          additionalProperties:
            type: integer
          type: object
          title: Resources
          description: Count of each resource type
        missing_secrets:
          items:
            type: string
          type: array
          title: Missing Secrets
          description: Secret names referenced but not configured
        errors:
          items:
            type: string
          type: array
          title: Errors
          description: Validation errors
        warnings:
          items:
            type: string
          type: array
          title: Warnings
          description: Validation warnings
        parameters:
          items:
            $ref: '#/components/schemas/ManifestParameterSpec'
          type: array
          title: Parameters
          description: >-
            The parameters the manifest declares, returned whether or not values
            were supplied, so a form can collect them before apply
      type: object
      required:
        - valid
      title: ValidateResult
      description: Result of validating a manifest.
      examples:
        - errors: []
          missing_secrets: []
          resources:
            buckets: 2
            collections: 1
            namespaces: 1
            retrievers: 1
          valid: true
          warnings: []
    ErrorResponse:
      properties:
        success:
          type: boolean
          title: Success
          description: Always false for error responses
          default: false
        status:
          type: integer
          title: Status
          description: HTTP status code for this error
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: Error details payload
      type: object
      required:
        - status
        - error
      title: ErrorResponse
      description: Error response model.
      examples:
        - error:
            details:
              id: ns_123
              resource: namespace
            message: Namespace not found
            type: NotFoundError
          status: 404
          success: false
    ManifestParameterSpec:
      properties:
        name:
          type: string
          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
          title: Name
          description: Parameter name, referenced as ${{ params.<name> }}
          examples:
            - camera_url
        type:
          type: string
          enum:
            - string
            - integer
            - number
            - boolean
            - array
          title: Type
          description: >-
            Value type: string, integer, number, boolean or array. An array is a
            list of scalars, set with items, and is referenced as the whole
            value of a field.
          default: string
        items:
          anyOf:
            - type: string
              enum:
                - string
                - integer
                - number
                - boolean
            - type: 'null'
          title: Items
          description: >-
            Type of each list item when type is array: string (the default),
            integer, number or boolean. Not allowed on other types.
        enum:
          anyOf:
            - items:
                anyOf:
                  - type: string
                  - type: integer
                  - type: number
                  - type: boolean
              type: array
              minItems: 1
            - type: 'null'
          title: Enum
          description: >-
            Allowed values. A supplied value, and the default, must be one of
            them. On an array, every item must be one of them.
          examples:
            - - image
              - video
              - audio
        required:
          type: boolean
          title: Required
          description: Whether a value must be supplied. Ignored when a default is set.
          default: true
        default:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: boolean
            - items:
                anyOf:
                  - type: string
                  - type: integer
                  - type: number
                  - type: boolean
              type: array
            - type: 'null'
          title: Default
          description: Value used when none is supplied. A list for an array parameter.
        description:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Description
          description: What the value is for, shown next to the input
      additionalProperties: false
      type: object
      required:
        - name
      title: ManifestParameterSpec
      description: One value a manifest needs from whoever applies it.
      examples:
        - description: Your camera's rtsp:// url
          name: camera_url
          required: true
          type: string
        - default: 300
          name: polling_seconds
          type: integer
        - default:
            - image
            - video
          enum:
            - image
            - video
            - audio
          items: string
          name: modalities
          type: array
    ErrorDetail:
      properties:
        message:
          type: string
          title: Message
          description: Human-readable error message
        type:
          type: string
          title: Type
          description: Stable error type identifier (machine-readable)
        code:
          anyOf:
            - type: string
            - type: 'null'
          title: Code
          description: >-
            Fine-grained error code for programmatic handling (e.g.,
            namespace_name_taken, feature_extractor_not_found). Present only
            when consumers may need to branch on a specific error condition.
        details:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Details
          description: >-
            Optional structured details to help debugging (validation errors,
            IDs, etc.)
      type: object
      required:
        - message
        - type
      title: ErrorDetail
      description: Error detail model.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one
        in Studio under Settings → API Keys, or with an admin key via `POST
        /v1/organizations/users/{user_email}/api-keys`. A missing, malformed,
        unknown, revoked, inactive or expired key returns 401; a key without the
        permission, scope or plan an operation needs returns 403.

````

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