---
title: "Gl Period Prepare Close With Ai"
method: POST
path: "/companies/{company_id}/gl/periods/{period_id}/prepare-close-with-ai"
tags: ["gl-actions"]
---

# Gl Period Prepare Close With Ai

`POST /companies/{company_id}/gl/periods/{period_id}/prepare-close-with-ai`

## 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/periods/{period_id}/prepare-close-with-ai`
- Auth: none declared

Enqueue AI close preparation for an open period (ai-on-demand plan §D2/D3).

Only **enqueues** an ``ai_task`` row (202) — the ``ai-tasks`` worker runs
the close checks + the autopost-gated accrual sweep (posting ``origin=ai``
under the autonomy policy) and the checks again for the before/after
delta; poll ``GET …/ai-tasks/{task_id}``. Nothing close-side is ever
*scheduled* — the queue only executes this human click asynchronously,
and the final **close-run** stays a human action. 422 unless the period
is open; 409 while an AI task for this period is already active.

## Path parameters

- `company_id` string, required
- `period_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `202`

Successful Response

- AiTaskOut: One ``ai_task`` row — the poll target for a "Run with AI" click. ``result`` is the executor's structured outcome once ``done`` (a ``failed`` task may carry a partial result too, e.g. payroll blocking findings); ``error`` is the trimmed failure message.
  - `id` string, required
  - `kind` 'payroll_run' | 'ar_draft' | 'period_close' | 'fixed_asset_review' | 'statement_review', required: Which "Run with AI" flow an ``ai_task`` row executes. ``payroll_run`` — advance a draft payroll run calculate→approve→post; ``ar_draft`` — draft + ready an outgoing AR invoice from an instruction; ``period_close`` — run the close checks + the autopost accrual sweep; ``fixed_asset_review`` — apply the recognition settings to a fiscal year's asset inventory, post its due depreciation, accept the year's unambiguous held capitalization proposals, and (under ``auto`` only) finalize the review. ``statement_review`` — produce the AI-accountant narrative assessment for one statement-review finding (doc/pipeline.md §Statement review); the verdict stays deterministic, the task only explains and proposes.
  - `status` 'pending' | 'processing' | 'done' | 'failed', required: Queue lifecycle of an ``ai_task`` row (doc/architecture.md §"Work queue"). ``pending → processing`` on claim (heartbeat ``claimed_at``), then a terminal ``done``/``failed``; the stuck-row sweep returns abandoned ``processing`` rows to ``pending``.
  - `target_id` string, nullable
  - `payload` object, required
  - `result` unknown
  - `error` string, nullable
  - `requested_by` string, nullable
  - `created_at` string, date-time, required
  - `finished_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)
