---
title: "Hardware Order Animation"
method: GET
path: "/v1/bend-programs/{program_id}/hardware-order/{order}/{step}.glb"
tags: ["manufacturing-v1"]
---

# Hardware Order Animation

`GET /v1/bend-programs/{program_id}/hardware-order/{order}/{step}.glb`

## Request

- Base URL: `https://api.rmfg.com`
- URL: `https://api.rmfg.com/v1/bend-programs/{program_id}/hardware-order/{order}/{step}.glb`
- Auth: HTTP bearer

Animation of one hardware order step, whether it passes or crashes.

`pem` is the PEMSERTER press (static geometry; animate it from `extras.rmfg.pem.steps`):
the flat part for `hardware_first`, the formed part for `bending_first`. `bending` is the
press-brake run in the same format as `preview.glb`, with the hardware installed for
`hardware_first` and without it for `bending_first`.

## Path parameters

- `program_id` string, required
- `order` 'hardware_first' | 'bending_first', required
- `step` 'pem' | 'bending', required

## Other responses

- `303`: Short-lived authenticated redirect to a private GLB animation.
- `401`: Missing or invalid credentials.
- `403`: The credentials do not permit this operation.
- `404`: The resource does not exist or is not visible to the caller.
- `409`: The resource is not ready, or Idempotency-Key was reused with a different request.
- `422`: Validation failed; see `error.param` and `error.details`.
- `429`: Rate limit exceeded; retry after the `Retry-After` header.
- `500`: Unexpected failure; safe to retry with the same Idempotency-Key.
- `502`: An upstream service or saved artifact returned an invalid response.

## Changes

- **2026-10-31** `67d03196d8bf`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rmfg/apis/fastapi/changes/v1/bend-programs/:program_id/hardware-order/:order/:step.glb/get.md)

---

[API](https://skmtc.dev/rmfg/apis/fastapi.md) - [All operations](https://skmtc.dev/rmfg/apis/fastapi/llms.txt) - [OpenAPI document](https://skmtc.dev/rmfg/apis/fastapi/revisions/65ed46eb9e55?raw)
