# Libtmux.Snapshot.create

- **Module:** Libtmux
- **Package:** libtmux
- **Language:** OCaml
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-ocaml/blob/205dfda49742592b479247049d186956e4a4cfe9/lib/libtmux.mli#L458
- **Public owner:** Libtmux
- **Page:** https://libtmux.org/en/ocaml/latest/reference/libtmux-snapshot-create/

```
val create :
  source:Source.t ->
  id:Id.t ->
  started_at_ns:int64 ->
  finished_at_ns:int64 ->
  sessions:Input.session list ->
  windows:Input.window list ->
  window_links:Input.window_link list ->
  panes:Input.pane list -> clients:Input.client list -> (t, Error.t) result
```

Validate and materialize a complete captured graph without I/O. Equal duplicate global rows collapse in first-occurrence order; conflicting rows and dangling references return [`Error.Capture_raced`](/en/ocaml/latest/reference/libtmux-error-t-capture_raced/). Links at different indexes remain distinct, including within one session. At most 10,000 input rows are admitted. Each session needs one current link and each window one active pane. Capture spans an interval, not an atomic instant. Input strings are bytes; no Unicode normalization is performed.

## Parameters

- `source` (`Source.t`)
- `id` (`Id.t`)
- `started_at_ns` (`int64`)
- `finished_at_ns` (`int64`)
- `sessions` (`Input.session list`)
- `windows` (`Input.window list`)
- `window_links` (`Input.window_link list`)
- `panes` (`Input.pane list`)
- `clients` (`Input.client list`)
