---
title: "Create Company Alias"
method: POST
path: "/companies/{company_id}/aliases"
tags: ["companies"]
---

# Create Company Alias

`POST /companies/{company_id}/aliases`

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

Register a trading name (accountant/owner).

Gated with ``CompanyAccountant`` deliberately: this is master data that decides
which documents the system treats as this company's, so it carries the same
authority as the books. A plain ``member`` is read-only in a company (owner ruling,
ZCT-257), and an ungated write here would let any member redirect another
company's invoices into this one.

⚠️ Register the name exactly as documents print it. Unlike the company's own name,
an alias is matched **exactly** — casing, punctuation, spacing and umlaut spelling
are normalised away and nothing else — so "Daily Pizza Zug" reaches neither the
separate legal entity "Daily Pizza Bern GmbH" nor "Daily Pizza Zug GmbH". Register
each printed form as its own row.

## Path parameters

- `company_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- CompanyAliasCreate: ``POST /companies/<id>/aliases`` body. ⚠️ Register the trading name exactly as documents print it. Unlike the company's own name, an alias is matched **exactly** (doculyse ``core.analyze.resolve._alias_matches``) — casing, punctuation, spacing and umlaut spelling are normalised away and nothing else. So ``"Daily Pizza Zug"`` matches a party printed ``"DAILY PIZZA ZUG"`` or ``"Daily-Pizza Zug"``, and matches neither the separate legal entity ``"Daily Pizza Bern GmbH"`` nor ``"Daily Pizza Zug GmbH"``. Register each form the documents actually carry. There is deliberately **no minimum length**: exact matching makes a short trading name perfectly safe, and the earlier five-character floor (a mirror of the tolerant matcher's distinctiveness rule) would now refuse a legitimate one.
  - `name` string, required

## Response `201`

Successful Response

- CompanyAliasResponse: ``POST /companies/<id>/aliases`` → the created row.
  - `msg` string, required
  - `alias` CompanyAliasOut, required: One registered trading name (ZCT-258).
    - `id` string, required
    - `name` string, required

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