# Versions_GetMaterialization

`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}/materializations/{materialization}`

How far a tag's rendering is. FAILED_PRECONDITION when it failed for
good (the message says why).

- Base URL: `https://junction-api.qualiastudios.dev`
- Authentication: an API key in the `X-API-Key` header

## Parameters

- `account` (path, string, required): The account id.
- `dataset` (path, string, required): The dataset id.
- `version` (path, string, required): The version id.
- `materialization` (path, string, required): The materialization id.

## Responses

- `200` OK: `application/json` `qualia.v1.Materialization`
- `default` Default error response: `application/json` `google.rpc.Status`

## Schemas

```yaml
qualia.v1.Materialization:
  type: object
  properties:
    name:
      type: string
      description: |-
        accounts/{account}/datasets/{dataset}/versions/{version}/materializations/{materialization}.
        The version segment is the tag, also when the request named `stable` or
        a digest prefix.
    state:
      readOnly: true
      enum:
        - STATE_UNSPECIFIED
        - NOT_STARTED
        - RUNNING
        - SUCCEEDED
        - INTERRUPTED
      type: string
      description: How far the rendering is.
      format: enum
    digest:
      readOnly: true
      type: string
      description: |-
        "b3:<hex>", once SUCCEEDED: one hash over every artifact's path and
        content, so two renderings with one digest are the same files.
    artifactCount:
      readOnly: true
      type: string
      description: Files in the rendered dataset, once SUCCEEDED.
    episodeCount:
      readOnly: true
      type: string
      description: Episodes in it, once SUCCEEDED.
    frameCount:
      readOnly: true
      type: string
      description: Frames in it, once SUCCEEDED.
    renderer:
      readOnly: true
      type: string
      description: |-
        "b3:<hex>": the renderer revision this rendering is for. A new renderer
        starts over at NOT_STARTED.
  description: |-
    A tag rendered as a LeRobot or MCAP ROS2 dataset, to download.
    The files stay in object storage: each artifact carries a short-lived signed
    URI to its immutable object, never the bytes. Rendering runs in the
    background: StartMaterialization begins it, and every later call, from
    anyone, finds the same rendering. A tag never moves, so the same tag
    rendered by the same renderer gives the same files, byte for byte.

    The {materialization} id is the layout: `lerobot-v3` (LeRobot v3.0),
    `lerobot-v2-1` (LeRobot v2.1) or `mcap-ros2` (one ROS 2 MCAP file per
    episode). `head` is not pinned, so it has none: tag it first.

    Served by qds-api.
google.rpc.Status:
  oneOf:
    - $ref: "#/components/schemas/ApiError"
    - $ref: "#/components/schemas/GatewayError"
  description: "The body of a failed call: one of the two shapes below."
ApiError:
  title: API error
  type: object
  required:
    - code
    - message
    - retryable
    - details
  properties:
    code:
      type: string
      description: The gRPC code name in upper case, e.g. `NOT_FOUND`.
    message:
      type: string
    retryable:
      type: boolean
      description: Whether the same call may succeed if retried.
    details:
      type: array
      items:
        type: object
      description: "Empty, except when a dataset copy or move is refused: then one `google.rpc.ErrorInfo` with the refusal's `reason` code, its `domain` and, in `metadata`, the datasets it names."
  description: A refusal from the API itself.
GatewayError:
  title: Gateway error
  type: object
  required:
    - detail
  properties:
    detail:
      type: string
      description: What went wrong.
  description: A refusal from the gateway before the call reaches the API, for example `401` bad or missing API key, `403` key lacks the scope or environment closed, `413` body too large.
```
