---
title: "Bulk create investors"
method: POST
path: "/v1/investors"
tags: ["Investors"]
---

# Bulk create investors

`POST /v1/investors`

## Request

- The document declares no server URL.
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/zestequity/apis/zest-equity-public-api-api/docs/v1/investors/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates one or more partner-managed investor records. Always returns 200 with a per-row { status, zestPersonId | error } result keyed by `partnerInvestorId`. Idempotent across replays: a repeated `partnerInvestorId` returns the existing Zest person id. `Idempotency-Key` is optional and provides response-level caching.

## Headers

- `Idempotency-Key` string

## Request body

- InvestorBulkCreate
  - `investors` InvestorCreateRow[], required
    - `partnerInvestorId` string, required: Stable Monark-side investor identifier; used for response correlation + dedupe.
    - `email` string, required
    - `firstName` string, required
    - `lastName` string, required
    - `dateOfBirth` string, required: ISO date YYYY-MM-DD.
    - `countryOfResidence` string: ISO 3166 alpha-2 country code.

## Response `200`

Successful Response

- InvestorBulkResponse
  - `results` InvestorRowResult[], required
    - `partnerInvestorId` string, required
    - `status` string, required
    - `zestPersonId` string
    - `error` InvestorRowError
      - `code` string, required
      - `field` string
      - `message` string, required
      - `retryable` boolean, required

## Other responses

- `401`: Invalid token
- `403`: Service not provisioned for partner API
- `409`: Idempotency-Key conflict (different body)
- `422`: Validation Error

---

[API](https://skmtc.dev/zestequity/apis/zest-equity-public-api-api.md) - [All operations](https://skmtc.dev/zestequity/apis/zest-equity-public-api-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zestequity/apis/zest-equity-public-api-api/revisions/0df065045794?raw)
