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

# Create an Artifact

> An endpoint to create an artifact



## OpenAPI

````yaml /openapi/public-api-endpoint-reference.yaml post /v1/projects/{projectId}/artifacts
openapi: 3.1.0
info:
  title: Maia Public REST API
  version: '1.0'
servers:
  - description: EU1
    url: https://eu1.api.matillion.com/dpc
  - description: US1
    url: https://us1.api.matillion.com/dpc
security:
  - bearerAuth: []
tags:
  - description: Manage Schedules
    name: Schedules
  - description: Manage Connections
    name: Connections
  - description: Operations for managing Project Variables
    name: Project Variables
  - description: Manage Pipelines
    name: Pipelines
  - description: Review pipelines against quality rules
    name: Pipeline Quality Review
  - description: Execute tests within a project
    name: Test Execution
  - description: Manage your AI agent tasks
    name: AI Agent Tasks
  - description: SCIM endpoints for user/group permission management
    name: Directory Integration
  - description: Publish shared pipeline artifacts
    name: Shared Pipeline Artifacts
  - description: Manage Repositories
    name: Repositories
  - description: Report on Credit Consumption
    name: Consumption
  - description: Manage Artifacts
    name: Artifacts
  - description: Operations for data lineage and governance
    name: Data Lineage
  - description: Manage Streaming Pipelines
    name: Streaming Pipelines
  - description: Execute a pipeline
    name: Pipeline Execution
  - description: ''
    name: Environments
  - description: ''
    name: Projects
  - description: Manage Agents
    name: Agents
  - description: Operations for managing Environment-level Overrides of Project Variables
    name: Project Variable Environment Overrides
  - description: Query audit events
    name: Audit Events
  - description: Connector Profiles
    name: Connectors
paths:
  /v1/projects/{projectId}/artifacts:
    post:
      tags:
        - Artifacts
      summary: Create an Artifact
      description: An endpoint to create an artifact
      operationId: createArtifacts
      parameters:
        - in: path
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - in: header
          name: content-type
          required: true
          schema:
            type: string
        - in: header
          name: versionName
          required: true
          schema:
            type: string
        - in: header
          name: environmentName
          required: true
          schema:
            type: string
        - in: header
          name: commitHash
          required: false
          schema:
            type: string
        - in: header
          name: branch
          required: false
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            encoding:
              filename-including-path:
                contentType: >-
                  application/json, text/plain, text/markdown, text/html,
                  text/yaml, application/vnd.matillion.dpl+yaml
            schema:
              properties:
                filename-including-path:
                  format: binary
        description: >-
          To create an artifact a MultiPart form data body is required.


          The request should contain all the assets(files) within your Data
          Productivity Cloud project.


          Each asset will need to set the multipart name as the full relative
          path of the asset including the asset name.

          Each asset will also require a text/plain content type header to be
          set. Currently only text files are supported.
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtifactResponse'
          description: Created artifact successfully
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Invalid request
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Forbidden
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unauthorized
        '415':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unsupported media type
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Unexpected error occurred
        '504':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Gateway timeout
components:
  schemas:
    ArtifactResponse:
      type: object
      properties:
        ignoredResources:
          type: array
          description: List of assets that were not included in the artifact
          items:
            $ref: '#/components/schemas/IgnoredAsset'
        versionName:
          type: string
          description: >-
            The generated artifact version name used to identify a specific
            artifact
          example: '1'
    ProblemDetail:
      type: object
      properties:
        detail:
          type: string
        instance:
          type: string
        status:
          type: integer
          format: int32
        title:
          type: string
        type:
          type: string
          format: uri
        violations:
          type: array
          items:
            type: string
    IgnoredAsset:
      type: object
      properties:
        name:
          type: string
          description: Name of the asset that has been ignored
        reason:
          type: string
          description: Reason the asset was ignored
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: a valid bearer token
      scheme: bearer
      type: http

````