---
title: "Bulk create contacts from CSV import Throttled to prevent abuse - max 3 requests per minute per user"
method: POST
path: "/crm/bulk"
tags: ["CRM Contacts"]
---

# Bulk create contacts from CSV import Throttled to prevent abuse - max 3 requests per minute per user

`POST /crm/bulk`

## Request

- Base URL: `https://developer.meetergo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.meetergo.com/crm/bulk`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - API key in header `x-meetergo-api-user-id`

## Request body

- BulkCreateContactsDto
  - `contacts` BulkContactDto[], required
    - `firstName` string
    - `lastName` string
    - `email` string, email
    - `phoneNumber` string
    - `tags` string[]
    - `notes` string
    - `accountOwnerEmail` string, email: Email of a user in the same company who should be set as account owner.
    - `meetingTypeRef` string: Meeting type UUID or name within the same company.
    - `crmCompanyRef` string: CrmCompany UUID or display name. Unknown names are auto-created so spreadsheet rows that introduce new companies don't fail the row.
    - `additionalData` object: Arbitrary custom fields (UTM params, source data, ...) stored as additionalData.
  - `updateExisting` boolean: When true, contacts whose email already exists are updated in place instead of being skipped. Default false preserves the safe "skip duplicates" behavior.

## Response `201`

- BulkCreateResult
  - `created` number, required: Newly inserted contacts.
  - `updated` number, required: Existing contacts updated in place (only when updateExisting is true).
  - `skipped` number, required: Existing/duplicate contacts left untouched.
  - `failed` number, required: Contacts that hit a technical error.
  - `issues` object[]

## Other responses

- `400`: The request did not validate. `message` lists the constraints that failed.
- `401`: Missing, malformed, or expired credentials.
- `403`: Authenticated, but not allowed: the plan does not include this feature, or the token is scoped away from it.
- `429`: Rate limited. Back off and retry.

---

[API](https://skmtc.dev/meetergo/apis/meetergo-platform-api.md) · [All operations](https://skmtc.dev/meetergo/apis/meetergo-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meetergo/apis/meetergo-platform-api/revisions/b5d66cd8be67?raw)
