Eiger Devices API

Lists Markforged printers (devices) in an Eiger organization, reads device state, sends builds to a printer, and manages each device's print queue.

OpenAPI Specification

markforged-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Eiger API V3
  description: >-
    REST API for the Markforged Eiger cloud 3D printing platform. The Eiger API
    is organized around resources (devices, builds, print jobs, parts, printed
    parts, users) each addressable at its own URI, accessed with standard HTTP
    methods. Responses are JSON. Authentication is HTTP Basic Auth using an Eiger
    Access Key (username) and Secret Key (password). Requests must use the fully
    qualified host https://www.eiger.io to avoid redirect/security issues. This
    document models the publicly documented Eiger API V3 surface; consult the
    official reference at https://www.eiger.io/developer/spec for request and
    response schemas, which are not fully reproduced here.
  termsOfService: https://markforged.com/terms
  contact:
    name: Markforged / Eiger Support
    url: https://support.markforged.com/portal/s/
  version: 'v3'
servers:
  - url: https://www.eiger.io/api/v3
security:
  - basicAuth: []
paths:
  /devices:
    get:
      operationId: listDevices
      tags:
        - Devices
      summary: List all devices (printers) in the organization.
      responses:
        '200':
          description: A list of devices.
  /devices/{device_id}:
    get:
      operationId: getDevice
      tags:
        - Devices
      summary: Get the state of a specific device.
      parameters:
        - name: device_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Device state.
    post:
      operationId: sendBuildToPrinter
      tags:
        - Devices
      summary: Send a build to a printer.
      parameters:
        - name: device_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Build sent to the printer.
  /devices/{device_id}/queue:
    get:
      operationId: listDeviceQueue
      tags:
        - Devices
      summary: List queued jobs for a device.
      parameters:
        - name: device_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: A list of queued jobs.
    post:
      operationId: addBuildToQueue
      tags:
        - Devices
      summary: Add a build to a device's queue.
      parameters:
        - name: device_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Build added to the queue.
  /devices/{device_id}/queue/{queued_job_id}:
    get:
      operationId: getQueuedJob
      tags:
        - Devices
      summary: Get details of a queued job.
      parameters:
        - name: device_id
          in: path
          required: true
          schema:
            type: string
        - name: queued_job_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Queued job details.
    delete:
      operationId: removeQueuedJob
      tags:
        - Devices
      summary: Remove a job from a device's queue.
      parameters:
        - name: device_id
          in: path
          required: true
          schema:
            type: string
        - name: queued_job_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Job removed from the queue.
  /builds:
    get:
      operationId: listBuilds
      tags:
        - Builds
      summary: List all builds in the organization.
      responses:
        '200':
          description: A list of builds.
  /builds/{build_id}:
    get:
      operationId: getBuild
      tags:
        - Builds
      summary: Retrieve a specific build.
      parameters:
        - name: build_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Build details.
  /builds/approved:
    get:
      operationId: listApprovedBuilds
      tags:
        - Builds
      summary: List approved builds.
      responses:
        '200':
          description: A list of approved builds.
    put:
      operationId: updateApprovedBuilds
      tags:
        - Builds
      summary: Update the approved-builds list.
      responses:
        '200':
          description: Approved-builds list updated.
    delete:
      operationId: disableBuildApprovals
      tags:
        - Builds
      summary: Disable build approvals.
      responses:
        '200':
          description: Build approvals disabled.
  /backlog/{build_id}:
    post:
      operationId: sendBuildToBacklog
      tags:
        - Builds
      summary: Send a build to the backlog.
      parameters:
        - name: build_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Build sent to backlog.
  /job-requests/{build_id}:
    post:
      operationId: addJobRequest
      tags:
        - Builds
      summary: Send a build to the job-request queue.
      parameters:
        - name: build_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Build added to the job-request queue.
    delete:
      operationId: removeJobRequest
      tags:
        - Builds
      summary: Remove a build from the job-request queue.
      parameters:
        - name: build_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Build removed from the job-request queue.
  /print_jobs:
    get:
      operationId: listPrintJobs
      tags:
        - Print Jobs
      summary: List print jobs.
      responses:
        '200':
          description: A list of print jobs.
  /print_jobs/{print_job_id}:
    get:
      operationId: getPrintJob
      tags:
        - Print Jobs
      summary: Get print job details.
      parameters:
        - name: print_job_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Print job details.
  /print_jobs/{print_job_id}/scan_report:
    get:
      operationId: getPrintJobScanReport
      tags:
        - Print Jobs
      summary: Get scan report URLs for a print job.
      parameters:
        - name: print_job_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Scan report URLs.
  /parts/{part_id}:
    get:
      operationId: getPart
      tags:
        - Parts
      summary: Get part details.
      parameters:
        - name: part_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Part details.
  /parts/upload_stl:
    post:
      operationId: uploadStl
      tags:
        - Parts
      summary: Upload an STL file.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: STL uploaded; slice job created.
  /parts/slice_status/{slice_job_id}:
    get:
      operationId: getSliceStatus
      tags:
        - Parts
      summary: Check slice job status.
      parameters:
        - name: slice_job_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Slice job status.
  /parts/settings_presets:
    get:
      operationId: listSettingsPresets
      tags:
        - Parts
      summary: List organization settings presets.
      responses:
        '200':
          description: A list of settings presets.
  /part_versions/{part_version_id}:
    get:
      operationId: getPartVersion
      tags:
        - Parts
      summary: Get a part version.
      parameters:
        - name: part_version_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Part version details.
  /part_versions/{part_version_id}/download:
    get:
      operationId: getPartVersionDownload
      tags:
        - Parts
      summary: Get a part version download URL.
      parameters:
        - name: part_version_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Part version download URL.
  /printed_parts:
    get:
      operationId: listPrintedParts
      tags:
        - Printed Parts
      summary: List printed parts.
      responses:
        '200':
          description: A list of printed parts.
  /printed_parts/{printed_part_id}:
    get:
      operationId: getPrintedPart
      tags:
        - Printed Parts
      summary: Get printed part details.
      parameters:
        - name: printed_part_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Printed part details.
  /printed_parts/{printed_part_id}/scan_report:
    get:
      operationId: getPrintedPartScanReport
      tags:
        - Printed Parts
      summary: Get a printed part scan report.
      parameters:
        - name: printed_part_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Printed part scan report.
  /users:
    get:
      operationId: listUsers
      tags:
        - Organizations
      summary: List organization users.
      responses:
        '200':
          description: A list of users.
  /users/{user_id}:
    get:
      operationId: getUser
      tags:
        - Organizations
      summary: Get user details.
      parameters:
        - name: user_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: User details.
  /dashboard/custom_analytics_csv:
    get:
      operationId: getCustomAnalyticsCsv
      tags:
        - Organizations
      summary: Export custom analytics CSV.
      responses:
        '200':
          description: Custom analytics CSV export.
          content:
            text/csv:
              schema:
                type: string
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        HTTP Basic Auth using an Eiger Access Key as the username and Secret Key
        as the password, generated from the Eiger organization settings.