---
title: "Create companies in bulk (v2)"
method: POST
path: "/v2/companies/batch"
tags: ["companies"]
---

# Create companies in bulk (v2)

`POST /v2/companies/batch`

## Request

- Base URL: `https://api.prod.getdex.com`
- URL: `https://api.prod.getdex.com/v2/companies/batch`
- Auth: HTTP bearer

Create up to 100 companies, all or nothing: one invalid company or website conflict (with an existing company or another in the batch) creates none. A website conflict is 409 with `details.existing_company_id` (null for a duplicate inside the batch) and `details.index`. Viewers are refused. Workspace-only: send the `X-Dex-Workspace` header (404 `record_not_found` without it). **Requires an `Idempotency-Key` header**. Returns `{ data: { companies: [...] } }` in request order with status 201.

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `companies` object[], required
    - `name` string, required
    - `description` string
    - `linkedin_description` string
    - `website_url` string
    - `linkedin_slug` string
    - `facebook_slug` string
    - `x_slug` string
    - `instagram_slug` string
    - `headquarters_location` string
    - `country_code` string
    - `email` string
    - `phone_number` string
    - `arr_estimate` integer
    - `number_of_employees` integer

## Response `201`

Created

- object
  - `data` object, required
    - `companies` object[], required
      - `id` string, uuid, required
      - `user_id` string, required
      - `workspace_id` string, uuid, nullable, required
      - `name` string, required
      - `description` string, nullable, required
      - `linkedin_description` string, nullable, required
      - `logo_url` string, nullable, required
      - `website_url` string, nullable, required
      - `linkedin_slug` string, nullable, required
      - `facebook_slug` string, nullable, required
      - `x_slug` string, nullable, required
      - `instagram_slug` string, nullable, required
      - `headquarters_location` string, nullable, required
      - `country_code` string, nullable, required
      - `email` string, nullable, required
      - `phone_number` string, nullable, required
      - `arr_estimate` integer, nullable, required
      - `number_of_employees` integer, nullable, required
      - `linkedin_data` object, nullable, required
        - `industry` string
        - `company_type` string
        - `size_range` string
        - `specialities` string[]
      - `ignore_merge` boolean, required
      - `archived_at` union, required
        - string, date-time
        - unknown
      - `created_at` union, required
        - string, date-time
        - unknown
      - `updated_at` union, required
        - string, date-time
        - unknown
    - `pagination` object
      - `nextCursor` string, nullable
      - `count` integer

## Other responses

- `400`: Request body failed validation.
- `401`: Missing or invalid API key.
- `403`: Valid key, insufficient permission.
- `404`: Resource does not exist.
- `409`: Request conflicts with the current state of the resource.
- `429`: Rate limit exceeded.
- `500`: Unexpected server error.

## Changes

- **2026-10-22** `657247ddcf7c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/getdex/apis/dex-public-api/changes/v2/companies/batch/post.md)

---

[API](https://skmtc.dev/getdex/apis/dex-public-api.md) · [All operations](https://skmtc.dev/getdex/apis/dex-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getdex/apis/dex-public-api/revisions/657247ddcf7c?raw)
