---
title: "Get C4 Structurizr"
method: GET
path: "/snapshots/{snapshot_id}/c4/structurizr"
tags: ["c4"]
---

# Get C4 Structurizr

`GET /snapshots/{snapshot_id}/c4/structurizr`

Structurizr DSL for this snapshot, ready to open in Structurizr Lite.

By default this is the contents of a ``model`` block, meant to be included
from the caller's own ``workspace.dsl`` so their views and styles survive
regeneration. ``standalone=true`` returns a workspace that renders on its
own.

Unlike OSS, which builds the model from a live session per request, hosted
rebuilds it from the ``c4.json`` the indexer already produced. That is what
makes this work on every existing snapshot with no re-index, and it is also
why the export carries no health/ownership tags and no reading order:
neither survives into the artifact. See ``app.services.c4_model_adapter``.

``components=true`` is best-effort here for the same reason: the artifact
stores per-container L3 views, which cannot express a component edge that
crosses a container boundary.

Rate-limited harder than its siblings (30/min against 120) because it is a
download rather than a view fetch, and emitting the DSL is real CPU over
the whole model rather than a dict lookup into it.

## Path parameters

- `snapshot_id` string, required

## Query parameters

- `standalone` boolean — Emit a complete runnable workspace instead of a model fragment
- `components` boolean — Include the component (L3) level
- `externals` boolean — Include third-party dependencies

## Response `200`

Successful Response

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/repowise/apis/repowise-hosted-api.md) · [All operations](https://skmtc.dev/repowise/apis/repowise-hosted-api/llms.txt) · [OpenAPI document](https://skmtc.dev/repowise/apis/repowise-hosted-api/revisions/6bb9d0da77e3?raw)
