---
title: "Import companies"
method: POST
path: "/companies/importer"
tags: ["Company"]
---

# Import companies

`POST /companies/importer`

## Request

- Base URL: `https://api.gleap.io/v3`
- URL: `https://api.gleap.io/v3/companies/importer`
- Auth: HTTP bearer

Create or update many companies at once, matched by `companyId` (the dashboard's CSV importer). Body:
`{ companies: [{ companyId, name, plan, domain, value, sla, tags, address, customData, ownerEmail }] }`,
at most 1000 rows per call. Each row is written like PUT /companies/{companyId}; rows sharing a
`companyId` are collapsed (the last one wins) and `lastSeenAt` is not touched. Answers how many were
imported, the positions of rows without a `companyId`, and the companies that failed. Re-sending rows
is safe.

## Headers

- `project` string, required

## Request body

- unknown

## Response `200`

Ok

- CompanyImportResult
  - `failed` object[], required: Companies whose write failed; re-sending them is safe.
    - `message` string, required
    - `companyId` string, required
  - `invalidRows` number[], required: Positions (0-based) of rows without a usable `companyId`; nothing was written for them.
  - `imported` number, double, required: Companies created or updated.

## Changes

- **2026-10-19** `e5e36b975c7a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/gleap/apis/gleap-server/changes/companies/importer/post.md)

---

[API](https://skmtc.dev/gleap/apis/gleap-server.md) - [All operations](https://skmtc.dev/gleap/apis/gleap-server/llms.txt) - [OpenAPI document](https://skmtc.dev/gleap/apis/gleap-server/revisions/3b025e883cef?raw)
