---
title: "Создать карточку сотрудника"
method: POST
path: "/api/v1/core/employees"
tags: ["Core employees"]
---

# Создать карточку сотрудника

`POST /api/v1/core/employees`

## Request

- Base URL: `https://erp.akeda.ru`
- URL: `https://erp.akeda.ru/api/v1/core/employees`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`
  - OAuth 2 (authorization code, authorization URL `https://erp.akeda.ru/oauth2/authorize`, token URL `https://erp.akeda.ru/oauth2/token`, scopes: `akeda:delegate`)
  - HTTP bearer

Учётная запись необязательна; роль и логин меняются в настройках кабинета, а не здесь. Реквизиты (inn, bank_bic, bank_account, phone, email, notes) без права `core.employee_requisites:write` не сохраняются. Контрагент сотрудника здесь не заводится — он появляется при приёме в штат. Если в «Команде» уже есть действующая карточка с той же рабочей почтой, телефоном или ИНН, ответ — 409 с кодом core.employee.duplicate и списком duplicates; повтор с allow_duplicate=true заводит карточку осознанно. Карточку без доступа заводит и кадровик с одним правом «Приглашать сотрудников» (settings.invite:write) без записи справочников. affiliation external или guest требует organization_contact_id; гость (guest) — подрядчик «только где участник», места тарифа не занимает.

## Headers

- `X-Tenant` string, required

## Request body

- union
  - object
    - `full_name` string, required
    - `first_name` string
    - `last_name` string
    - `middle_name` string
    - `position` string
    - `position_id` string, uuid, nullable: Legacy compatibility; prefer position
    - `company_id` string, uuid, nullable
    - `department` string
    - `department_id` string, uuid, nullable: Подразделение — элемент справочника departments; null — вне оргструктуры
    - `location` string
    - `phone` string
    - `email` string
    - `user_id` integer, nullable
    - `manager_employee_id` string, uuid, nullable: Не задаётся: руководителя вычисляет оргструктура. Новое значение отклоняется кодом core.employee.manager_derived, прежнее пропускается
    - `employed_at` string, date, nullable
    - `is_active` boolean
    - `notes` string
    - `inn` string: Применяется только с правом core.employee_requisites:write
    - `bank_bic` string: Применяется только с правом core.employee_requisites:write
    - `bank_account` string: Применяется только с правом core.employee_requisites:write
    - `allow_duplicate` boolean: Завести карточку, хотя в «Команде» уже есть действующая с той же почтой, телефоном или ИНН
    - `affiliation` 'own' | 'external' | 'guest': own — свой человек (умолчание), external — внешний участник, guest — гость-подрядчик. Внешнему и гостю нужна организация, иначе 400 core.employee.affiliation_invalid
    - `organization_contact_id` string, uuid, nullable: Контрагент-организация внешнего участника: юрлицо или ИП из контрагентов кабинета
  - object
    - `first_name` string, required
    - `full_name` string
    - `last_name` string
    - `middle_name` string
    - `position` string
    - `position_id` string, uuid, nullable: Legacy compatibility; prefer position
    - `company_id` string, uuid, nullable
    - `department` string
    - `department_id` string, uuid, nullable: Подразделение — элемент справочника departments; null — вне оргструктуры
    - `location` string
    - `phone` string
    - `email` string
    - `user_id` integer, nullable
    - `manager_employee_id` string, uuid, nullable: Не задаётся: руководителя вычисляет оргструктура. Новое значение отклоняется кодом core.employee.manager_derived, прежнее пропускается
    - `employed_at` string, date, nullable
    - `is_active` boolean
    - `notes` string
    - `inn` string: Применяется только с правом core.employee_requisites:write
    - `bank_bic` string: Применяется только с правом core.employee_requisites:write
    - `bank_account` string: Применяется только с правом core.employee_requisites:write
    - `allow_duplicate` boolean: Завести карточку, хотя в «Команде» уже есть действующая с той же почтой, телефоном или ИНН
    - `affiliation` 'own' | 'external' | 'guest': own — свой человек (умолчание), external — внешний участник, guest — гость-подрядчик. Внешнему и гостю нужна организация, иначе 400 core.employee.affiliation_invalid
    - `organization_contact_id` string, uuid, nullable: Контрагент-организация внешнего участника: юрлицо или ИП из контрагентов кабинета
  - object
    - `last_name` string, required
    - `full_name` string
    - `first_name` string
    - `middle_name` string
    - `position` string
    - `position_id` string, uuid, nullable: Legacy compatibility; prefer position
    - `company_id` string, uuid, nullable
    - `department` string
    - `department_id` string, uuid, nullable: Подразделение — элемент справочника departments; null — вне оргструктуры
    - `location` string
    - `phone` string
    - `email` string
    - `user_id` integer, nullable
    - `manager_employee_id` string, uuid, nullable: Не задаётся: руководителя вычисляет оргструктура. Новое значение отклоняется кодом core.employee.manager_derived, прежнее пропускается
    - `employed_at` string, date, nullable
    - `is_active` boolean
    - `notes` string
    - `inn` string: Применяется только с правом core.employee_requisites:write
    - `bank_bic` string: Применяется только с правом core.employee_requisites:write
    - `bank_account` string: Применяется только с правом core.employee_requisites:write
    - `allow_duplicate` boolean: Завести карточку, хотя в «Команде» уже есть действующая с той же почтой, телефоном или ИНН
    - `affiliation` 'own' | 'external' | 'guest': own — свой человек (умолчание), external — внешний участник, guest — гость-подрядчик. Внешнему и гостю нужна организация, иначе 400 core.employee.affiliation_invalid
    - `organization_contact_id` string, uuid, nullable: Контрагент-организация внешнего участника: юрлицо или ИП из контрагентов кабинета
  - object
    - `middle_name` string, required
    - `full_name` string
    - `first_name` string
    - `last_name` string
    - `position` string
    - `position_id` string, uuid, nullable: Legacy compatibility; prefer position
    - `company_id` string, uuid, nullable
    - `department` string
    - `department_id` string, uuid, nullable: Подразделение — элемент справочника departments; null — вне оргструктуры
    - `location` string
    - `phone` string
    - `email` string
    - `user_id` integer, nullable
    - `manager_employee_id` string, uuid, nullable: Не задаётся: руководителя вычисляет оргструктура. Новое значение отклоняется кодом core.employee.manager_derived, прежнее пропускается
    - `employed_at` string, date, nullable
    - `is_active` boolean
    - `notes` string
    - `inn` string: Применяется только с правом core.employee_requisites:write
    - `bank_bic` string: Применяется только с правом core.employee_requisites:write
    - `bank_account` string: Применяется только с правом core.employee_requisites:write
    - `allow_duplicate` boolean: Завести карточку, хотя в «Команде» уже есть действующая с той же почтой, телефоном или ИНН
    - `affiliation` 'own' | 'external' | 'guest': own — свой человек (умолчание), external — внешний участник, guest — гость-подрядчик. Внешнему и гостю нужна организация, иначе 400 core.employee.affiliation_invalid
    - `organization_contact_id` string, uuid, nullable: Контрагент-организация внешнего участника: юрлицо или ИП из контрагентов кабинета

## Response `201`

Созданная карточка

- CoreEmployee
  - `id` string, uuid, required
  - `full_name` string, required
  - `first_name` string, required
  - `last_name` string, required
  - `middle_name` string, required
  - `position` string, required
  - `position_id` string, uuid, nullable, required
  - `position_label` string, required
  - `company_id` string, uuid, nullable, required
  - `company_name` string, required
  - `department` string, required
  - `location` string, required
  - `manager_employee_id` string, uuid, nullable, required: Руководитель из оргструктуры: руководитель подразделения сотрудника, а у самого руководителя — руководитель выше по дереву. Пересчитывается при любом изменении структуры
  - `manager_name` string, required
  - `phone` string, required: Пусто у чужой карточки без права core.employee_requisites:read
  - `email` string, required: Пусто у чужой карточки без права core.employee_requisites:read
  - `user_id` integer, nullable, required
  - `username` string, required
  - `role_name` string, required
  - `employed_at` string, required: Date or empty string
  - `is_active` boolean, required
  - `notes` string, required: Пусто у чужой карточки без права core.employee_requisites:read
  - `has_photo` boolean, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `inn` string: ИНН для выплаты; пусто у чужой карточки без права core.employee_requisites:read
  - `bank_bic` string: БИК банка выплаты; пусто у чужой карточки без права core.employee_requisites:read
  - `bank_account` string: Счёт или карта выплаты; пусто у чужой карточки без права core.employee_requisites:read
  - `affiliation` 'own' | 'external' | 'guest', required: own — свой человек кабинета, external — внешний участник: интегратор, аутсорс; guest — гость-подрядчик: видит только задачи, чаты и папки, куда его позвали, места тарифа не занимает. Внешний и гость не стоят в оргструктуре и штате и руководителем не выбираются
  - `organization_contact_id` string, uuid, nullable, required: Контрагент-организация, от которой пришёл внешний участник
  - `organization_name` string, required: Название организации внешнего участника

## Other responses

- `400`: Некорректный запрос или нарушение бизнес-правила
- `401`: Сессия, ключ или кабинет не подтверждены
- `403`: Текущая роль не имеет требуемого права
- `409`: Учётная запись уже привязана к другой карточке или в «Команде» уже есть этот человек (core.employee.duplicate)

---

[API](https://skmtc.dev/akeda/apis/akeda-erp-client-api.md) · [All operations](https://skmtc.dev/akeda/apis/akeda-erp-client-api/llms.txt) · [OpenAPI document](https://skmtc.dev/akeda/apis/akeda-erp-client-api/revisions/3c60ded179f2?raw)
