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

# Parse 3MF / GCODE metadata without storing

> Pre-flight parser. Accepts a multipart `file` field (3MF or GCODE only) and returns printer model, print time, filament weight, layer count, etc. The file is never persisted. Use this to surface metadata to the user before committing to an `/files` upload.



## OpenAPI

````yaml /api-reference/openapi.json post /files/parse-metadata
openapi: 3.1.0
info:
  title: AutoPrintFarm Public API
  version: 1.0.0
  description: >-
    Public API for AutoPrintFarm — read + write surface for printers, jobs,
    inventory, orders, SKUs, files, worklist, and assembly. Authorization uses
    three scopes: `read` (any list/get), `write` (data mutations — create,
    update, delete, uploads, fulfillment), and `control` (physical printer
    actions: start, pause, resume, stop, heaters, light, filament). Authenticate
    with an API key minted from Settings → API Keys in the AutoPrintFarm
    dashboard.
  contact:
    name: AutoPrintFarm
    url: https://autoprintfarm.com
servers:
  - url: https://api.autoprintfarm.com/public/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Printers
    description: Printer fleet status
  - name: Jobs
    description: Print job queue and history
  - name: Inventory
    description: Finished-goods stock levels
  - name: Orders
    description: Customer orders and line items
  - name: Wiki
    description: Internal documentation articles
  - name: Worklist
    description: Operational task queue
  - name: Products
    description: Product catalog, SKUs, components, and color presets
  - name: Files
    description: Print file metadata and versions
  - name: Hubs
    description: Hub fleet and connection status
  - name: Assembly
    description: Post-print assembly tasks with bundled wiki
  - name: Materials
    description: Filament, components, packaging, and printer parts inventory
  - name: Analytics
    description: >-
      Dashboard rollups and reporting (overview, production, printers, failures,
      inventory, revenue)
paths:
  /files/parse-metadata:
    post:
      tags:
        - Files
      summary: Parse 3MF / GCODE metadata without storing
      description: >-
        Pre-flight parser. Accepts a multipart `file` field (3MF or GCODE only)
        and returns printer model, print time, filament weight, layer count,
        etc. The file is never persisted. Use this to surface metadata to the
        user before committing to an `/files` upload.
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: Print file (3MF or GCODE). Max 100 MB.
              required:
                - file
      responses:
        '200':
          description: Parsed metadata
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - true
                  data:
                    type: object
                    properties:
                      printer_model_id:
                        type:
                          - string
                          - 'null'
                      print_time_seconds:
                        type:
                          - number
                          - 'null'
                      filament_weight_grams:
                        type:
                          - number
                          - 'null'
                      filament_length_meters:
                        type:
                          - number
                          - 'null'
                      filament_type:
                        type:
                          - string
                          - 'null'
                      nozzle_diameter:
                        type:
                          - number
                          - 'null'
                      layer_count:
                        type:
                          - number
                          - 'null'
                      curr_bed_type:
                        type:
                          - string
                          - 'null'
                      default_print_profile:
                        type:
                          - string
                          - 'null'
                      object_count:
                        type: number
                    required:
                      - printer_model_id
                      - print_time_seconds
                      - filament_weight_grams
                      - filament_length_meters
                      - filament_type
                      - nozzle_diameter
                      - layer_count
                      - curr_bed_type
                      - default_print_profile
                      - object_count
                required:
                  - success
                  - data
        '400':
          description: Validation or business-rule error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing, invalid, revoked, or expired API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: API key lacks the required scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: File exceeds maximum allowed size
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded (120 req/min/key)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth:
            - read
components:
  schemas:
    Error:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          properties:
            code:
              type: string
              description: >-
                Machine-readable error code (e.g. NOT_FOUND, VALIDATION_ERROR,
                FORBIDDEN, HUB_OFFLINE). Stable across releases — use this for
                branching.
              example: NOT_FOUND
            message:
              type: string
              description: >-
                Human-readable error message. May vary across releases — do not
                branch on this.
              example: Resource not found
            details:
              description: >-
                Optional structured detail. For VALIDATION_ERROR this is `{
                field: [messages] }`.
          required:
            - code
            - message
          description: Error detail object
      required:
        - success
        - error
      description: Standard error response envelope
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: apf_live_<64 hex>
      description: >-
        API keys are minted in the AutoPrintFarm web app under Settings → API
        Keys. Send as `Authorization: Bearer apf_live_...`. Keys are shown
        exactly once at creation and can be revoked at any time.

````