---
title: "Get Company"
method: GET
path: "/companies/{company_id}"
tags: ["companies"]
---

# Get Company

`GET /companies/{company_id}`

## 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}`
- Auth: none declared

Get one company (jwt, scoped). 403 for a non-member non-admin, 404 if absent.

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Response `200`

Successful Response

- CompanyResponse: ``POST/PUT /companies/<id>`` → ``{"company": ...}`` (tenant fields only). Note: membership management (``user_company``) is NOT a company sub-resource in the api-contract — there are no member/role routes. Membership is edited via the users domain (the ``companies`` array or ``memberships`` list on ``POST/PUT /users/<id>``, A2); each membership carries a ``role`` (owner/accountant/member — doc/architecture.md §"Authentication & tenancy"; global ``User.is_admin`` bypasses role gates). See the companies router docstring + the agent report for this judgment call.
  - `company` CompanyOut, required: Serialized company tenant row + derived integration-presence flags.
    - `id` string, required
    - `company_name` string, required
    - `active` boolean, required
    - `is_demo` boolean
    - `ingest_lookback_months` 3 | 6 | 12, required
    - `language` 'de' | 'en' | 'fr' | 'it', required
    - `industry` string, nullable
    - `has_email` boolean
    - `has_epost` boolean
    - `has_bexio` boolean
    - `has_abacus` boolean
    - `has_storage` boolean
    - `has_accounting_settings` boolean

## 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)
