POST /developer/v1/ingest/{source_type} accepts a batch of records from an
external system and queues it for asynchronous processing. Scope —
ingest:write; it is only available to keys created by super-administrators.
Sources and payload types
Matching by external_id
Every record carries an external_id — the object’s identifier in your system.
The platform stores an external_id → internal id binding per source_type:
- a record with a known
external_idupdates the existing object; - a record with a new
external_idcreates an object only whencreate_missing: true, otherwise it is skipped; - references between records (
external_department_id,external_person_id, etc.) also use external identifiers — the platform resolves them itself.
The
external_id binding lives on the platform side and is not returned by
GET /employees: the Employee object has no external_id field and no filter
for it. To reconcile data after a load, keep the mapping on your side or rely on
natural keys (the employee_number, the IIN).Record schemas
Fields outside the schema are ignored. Dates areYYYY-MM-DD strings.
KEDO · PERSONS
KEDO · ORGANIZATIONS
KEDO · DEPARTMENTS
KEDO · EMPLOYEES
KEDO · JOB_TITLES
1C · EMPLOYEES_FULL
Records in the 1C export format — an employee together with the person, fields in Russian:ТабельныйНомер, ДатаПриема, Организация.Ссылка,
Подразделение.Ссылка, Должность.Ссылка, and a nested ФизЛицо object
(Имя, Фамилия, Отчество, ИИН, Телефон, ДатаРождения).
1C · DEPARTMENTS — Ссылка, Наименование, Родитель.Ссылка.
Response and tracking progress
ingest_request_id — a preview limitation. Practical ways to confirm the
result:
- Wait for processing (batches of hundreds of records take seconds).
- Re-read the data:
GET /employees?updated_since=…returns the created and updated employees. - Subscribe to the
employee.changedwebhook — every changed profile arrives as an event.
Next steps
Employee sync
Full and incremental export back out.
Limits
Request rates and sizes.