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

# Upload files to project items

> uploads files (docs/images) to project items via a JSON manifest and named file parts



## OpenAPI

````yaml /swagger.yaml post /projects/{id}/items/files
openapi: 3.1.0
info:
  title: Fohlio REST API
  description: This is the documentation for the Fohlio REST API.
  version: 1.0.0
servers:
  - url: /openapi
  - url: https://app.fohlio.com/be/openapi
security: []
paths:
  /projects/{id}/items/files:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
    post:
      tags:
        - Project Item
      summary: Upload files to project items
      description: >-
        uploads files (docs/images) to project items via a JSON manifest and
        named file parts
      operationId: project_items#upload_files
      parameters: []
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: string
        required: true
        description: JSON array of { id, project_item_id, column_key, file_name }
      responses:
        '200':
          description: OK
          content:
            application/json:
              examples:
                ok:
                  $ref: '#/components/examples/projectItemFilesUpload'
              schema:
                $ref: '#/components/schemas/responseBodyProjectItemFiles'
        '400':
          description: Bad Request
          content:
            application/json:
              examples:
                bad_request:
                  $ref: '#/components/examples/responseBodyErrorBadRequest'
              schema:
                $ref: '#/components/schemas/error'
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                unauthorized:
                  $ref: '#/components/examples/responseBodyErrorUnauthorized'
              schema:
                $ref: '#/components/schemas/error'
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                forbidden:
                  $ref: '#/components/examples/responseBodyErrorForbidden'
              schema:
                $ref: '#/components/schemas/error'
        '413':
          description: Payload Too Large
          content:
            application/json:
              examples:
                payload_too_large:
                  $ref: '#/components/examples/responseBodyErrorPayloadTooLarge'
              schema:
                $ref: '#/components/schemas/error'
      security:
        - apiKey: []
components:
  examples:
    projectItemFilesUpload:
      summary: OK
      value:
        results:
          - id: f1
            project_item_id: 3
            column_key: docs
            name: report.pdf
            url: https://app.fohlio.com/uploads/project_model_docs/report.pdf
          - id: f2
            project_item_id: 3
            column_key: images
            error: >-
              File content ('text/plain') does not match a supported format for
              'images' columns.
    responseBodyErrorBadRequest:
      value:
        error: 'Bad Request: <description>'
    responseBodyErrorUnauthorized:
      value:
        error: Unauthorized
    responseBodyErrorForbidden:
      value:
        error: Forbidden
    responseBodyErrorPayloadTooLarge:
      value:
        error: Payload Too Large
  schemas:
    responseBodyProjectItemFiles:
      type: object
      properties:
        results:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: The client-generated correlation id from the manifest entry.
              project_item_id:
                type: integer
              column_key:
                type: string
              name:
                type: string
                description: Present when the upload succeeded.
              url:
                type: string
                description: Present when the upload succeeded.
              error:
                type: string
                description: Present when the upload failed.
    error:
      type: object
      properties:
        error:
          type: string
  securitySchemes:
    apiKey:
      type: apiKey
      name: authorization
      in: header

````