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.