---
title: "List Gl Close Runs"
method: GET
path: "/companies/{company_id}/gl/close-runs"
tags: ["gl-actions"]
---

# List Gl Close Runs

`GET /companies/{company_id}/gl/close-runs`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/companies/{company_id}/gl/close-runs`
- Auth: none declared

The company's period close/reopen ledger, newest first (CompanyMember read).

One row per close-run **and per reopen** (ZET-161): ``status`` is one of
``closed`` (completed close-run), ``failed``, ``reopened`` (an accountant
returned the period to open), or the transient ``started``/``validated``.

A **refused** close leaves no row: the refusal rolls its transaction back,
including the ``failed`` stamp, so an empty ledger does not mean nobody tried.

Each row carries ``period_id``,
the actor (``started_by``), timestamps, and ``reason`` — the written why that
a reopen always has and a close may have. This is the audit trail behind
``reopen_gl_period``; read it to see whether a period's current state was
reached by a plain close or by a reopen-and-re-close correction cycle.

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `200`

Successful Response

- GlCloseRunsResponse
  - `close_runs` GlCloseRunOut[], required
    - `id` string, required
    - `company_id` string, required
    - `period_id` string, required
    - `status` string, required
    - `reason` string, nullable
    - `started_by` string, nullable
    - `started_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zeno-works/apis/zeno-api.md) · [All operations](https://skmtc.dev/zeno-works/apis/zeno-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno-works/apis/zeno-api/revisions/1eb93dde146c?raw)
