Companies

Plan a companies CSV import

Classify up to 500 CSV rows against the workspace's companies without writing anything. Each row carries raw trimmed cells (`fields`, with blank cells omitted), an optional `id`, `owner_email`, `tags`

POST /v2/companies/import/plan

Request body

Content-Type: application/json

rows
array<object> required
rows[].row_index
integer required
rows[].id
string
rows[].fields
object required
rows[].fields.name
string
rows[].fields.description
string
rows[].fields.linkedin_description
string
rows[].fields.website_url
string
rows[].fields.linkedin_slug
string
rows[].fields.facebook_slug
string
rows[].fields.x_slug
string
rows[].fields.instagram_slug
string
rows[].fields.headquarters_location
string
rows[].fields.country_code
string
rows[].fields.email
string
rows[].fields.phone_number
string
rows[].fields.arr_estimate
string
rows[].fields.number_of_employees
string
rows[].owner_email
string
rows[].tags
array<string>
rows[].custom_fields
array<object>
rows[].custom_fields[].custom_field_id
string (uuid)
rows[].custom_fields[].raw
string

Example

{
  "rows": [
    {
      "row_index": 0,
      "fields": {
        "name": "string",
        "description": "string"
      }
    }
  ]
}

Responses

200 — Successful response

Content-Type: application/json

data
object required
data.results
array<object> required
data.results[].row_index
integer required
data.results[].action
string enum required
Possible values: "create", "update", "review", "skip_archived", "invalid"
data.results[].match_key
string | null required
data.results[].company_id
string (uuid)
data.results[].candidates
array<object>
data.results[].candidates[].id
string (uuid)
data.results[].candidates[].name
string
data.results[].candidates[].website_url
string | null
data.results[].candidate_count
integer
data.results[].changes
array<object>
data.results[].changes[].field
string
data.results[].changes[].from
string | null
data.results[].changes[].to
string
data.results[].changes[].fill_empty
boolean
data.results[].errors
array<object>
data.results[].errors[].field
string
data.results[].errors[].code
string
data.results[].errors[].message
string
data.results[].warnings
array<object>
data.results[].warnings[].field
string
data.results[].warnings[].code
string
data.results[].warnings[].message
string

Example

{
  "data": {
    "results": [
      {
        "row_index": 0,
        "action": "create",
        "match_key": "string"
      }
    ]
  }
}

400 — Request body failed validation.

Content-Type: application/json

(body)
any

401 — Missing or invalid API key.

Content-Type: application/json

(body)
any

403 — Valid key, insufficient permission.

Content-Type: application/json

(body)
any

404 — Resource does not exist.

Content-Type: application/json

(body)
any

409 — Request conflicts with the current state of the resource.

Content-Type: application/json

(body)
any

429 — Rate limit exceeded.

Content-Type: application/json

(body)
any

500 — Unexpected server error.

Content-Type: application/json

(body)
any

Code samples

curl https://api.prod.getdex.com/v2/companies/import/plan \
  --request POST \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "rows": [
    {
      "row_index": 0,
      "fields": {
        "name": "string",
        "description": "string"
      }
    }
  ]
}'
Copyright © 2026