---
title: "Create entity"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.sureshake.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Sureshake API › entities

`POST /v2/entities`

## Authentication

Requires one of the following:

- `ApiKeyAuth`, apiKey, in header, header `X-API-Key`
- `BearerAuth`, http, header `Authorization`

## Request body

_Required._

- `name` (`entity-create.name`; string, required)
  - minLength 1; maxLength 255
- `slug` (`entity-create.slug`; string, optional)
  - minLength 3; maxLength 100; pattern `^[a-z0-9]+(?:-[a-z0-9]+)*$`
- `description` (`entity-create.description`; string, optional, nullable)
  - maxLength 2000
- `overview` (`entity-create.overview`; string, optional, nullable)
  - maxLength 5000
- `location` (`entity-create.location`; string, optional, nullable)
  - maxLength 255
- `domain` (`entity-create.domain`; string, optional, nullable)
  - maxLength 255
- `twitterUrl` (`entity-create.twitterUrl`; string, optional, nullable)
  - format `uri`; maxLength 255
- `linkedinUrl` (`entity-create.linkedinUrl`; string, optional, nullable)
  - format `uri`; maxLength 255
- `parentId` (`entity-create.parentId`; string, optional, nullable)
  - format `uuid`
- `collectionId` (`entity-create.collectionId`; string, optional, nullable)
  - format `uuid`
- `entityType` (`entity-create.entityType`; string, optional, nullable)
  - one of `"fund"`, `"company"`, `"portfolio"`, `"asset"`, `"investor"`, `"educational_institution"`, `"government_agency"`, `"non_profit"`, `"person"`, `"trust"`, `"other"`
- `tickerSymbol` (`entity-create.tickerSymbol`; string, optional, nullable)
  - pattern `^[A-Z0-9]{3,6}$`
- `recommendedCollectionKeys` (`entity-create.recommendedCollectionKeys`; array<string>, optional)
  - one of `"data_room"`, `"trade_references"`, `"financial_reporting"`, `"legal_compliance"`, `"corporate_documents"`, `"investor_materials"`, `"personnel_records"`, `"contracts_and_procurement"`
- `companyVerification` (`entity-create.companyVerification`; any of, optional)
  - any of:
    - `object`
      - `method` (`entity-create.companyVerification.1.method`; string, required)
        - one of `"authenticated_email_domain"`
    - `object`
      - `method` (`entity-create.companyVerification.2.method`; string, required)
        - one of `"operator_approval"`
      - `reason` (`entity-create.companyVerification.2.reason`; string, required)
        - minLength 20; maxLength 2000

## Example request

```json
{
  "name": "string",
  "slug": "string",
  "description": "string",
  "overview": "string",
  "location": "string",
  "domain": "string",
  "twitterUrl": "http://example.com",
  "linkedinUrl": "http://example.com",
  "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
  "collectionId": "0ffe69e2-b7af-4b1e-835c-867376165f50",
  "entityType": "fund",
  "tickerSymbol": "string",
  "recommendedCollectionKeys": [
    "data_room"
  ],
  "companyVerification": {
    "method": "authenticated_email_domain"
  }
}
```

## Code samples

### cURL

```bash
curl --request POST \
  --url https://api.sureshake.com/v2/entities \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <X-API-Key>' \
  --data '
{
  "name": "string",
  "slug": "string",
  "description": "string",
  "overview": "string",
  "location": "string",
  "domain": "string",
  "twitterUrl": "http://example.com",
  "linkedinUrl": "http://example.com",
  "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
  "collectionId": "0ffe69e2-b7af-4b1e-835c-867376165f50",
  "entityType": "fund",
  "tickerSymbol": "string",
  "recommendedCollectionKeys": [
    "data_room"
  ],
  "companyVerification": {
    "method": "authenticated_email_domain"
  }
}
'
```

### TypeScript

```typescript
const url = 'https://api.sureshake.com/v2/entities';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json', 'X-API-Key': '<X-API-Key>'},
  body: JSON.stringify({
    name: 'string',
    slug: 'string',
    description: 'string',
    overview: 'string',
    location: 'string',
    domain: 'string',
    twitterUrl: 'http://example.com',
    linkedinUrl: 'http://example.com',
    parentId: '70850378-7d3c-4f45-91b7-942d4dfbbd43',
    collectionId: '0ffe69e2-b7af-4b1e-835c-867376165f50',
    entityType: 'fund',
    tickerSymbol: 'string',
    recommendedCollectionKeys: ['data_room'],
    companyVerification: {method: 'authenticated_email_domain'}
  })
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://api.sureshake.com/v2/entities"

payload = {
    "name": "string",
    "slug": "string",
    "description": "string",
    "overview": "string",
    "location": "string",
    "domain": "string",
    "twitterUrl": "http://example.com",
    "linkedinUrl": "http://example.com",
    "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
    "collectionId": "0ffe69e2-b7af-4b1e-835c-867376165f50",
    "entityType": "fund",
    "tickerSymbol": "string",
    "recommendedCollectionKeys": ["data_room"],
    "companyVerification": { "method": "authenticated_email_domain" }
}
headers = {
    "Content-Type": "application/json",
    "X-API-Key": "<X-API-Key>"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
```

## Responses

### 201

Default Response

#### Example

```json
{
  "data": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "name": "string",
    "slug": "string",
    "description": "string",
    "overview": "string",
    "location": "string",
    "domain": "string",
    "twitterUrl": "string",
    "linkedinUrl": "string",
    "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
    "ownerId": "string",
    "collectionId": "0ffe69e2-b7af-4b1e-835c-867376165f50",
    "entityType": "string",
    "logoUrl": "string",
    "bannerUrl": "string",
    "metadata": {
      "property1": null,
      "property2": null
    },
    "verified": true,
    "placeholderEntity": true,
    "dataResidency": "string",
    "autoCreated": true,
    "claimedBy": "string",
    "claimedAt": "2019-08-24T14:15:22Z",
    "createdBy": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z"
  },
  "meta": {
    "timestamp": "2019-08-24T14:15:22Z"
  }
}
```

- `data` (`entity-create.response.201.data`; object, required)
  - `id` (`entity-create.response.201.data.id`; string, required)
    - format `uuid`
  - `name` (`entity-create.response.201.data.name`; string, required)
  - `slug` (`entity-create.response.201.data.slug`; string, required)
  - `description` (`entity-create.response.201.data.description`; string, required, nullable)
  - `parentId` (`entity-create.response.201.data.parentId`; string, required, nullable)
    - format `uuid`
  - `ownerId` (`entity-create.response.201.data.ownerId`; string, required)
  - `collectionId` (`entity-create.response.201.data.collectionId`; string, required, nullable)
    - format `uuid`
  - `entityType` (`entity-create.response.201.data.entityType`; string, required, nullable)
  - `createdAt` (`entity-create.response.201.data.createdAt`; string, required)
    - format `date-time`
  - `updatedAt` (`entity-create.response.201.data.updatedAt`; string, required)
    - format `date-time`
  - `overview` (`entity-create.response.201.data.overview`; string, optional, nullable)
  - `location` (`entity-create.response.201.data.location`; string, optional, nullable)
  - `domain` (`entity-create.response.201.data.domain`; string, optional, nullable)
  - `twitterUrl` (`entity-create.response.201.data.twitterUrl`; string, optional, nullable)
  - `linkedinUrl` (`entity-create.response.201.data.linkedinUrl`; string, optional, nullable)
  - `logoUrl` (`entity-create.response.201.data.logoUrl`; string, optional, nullable)
  - `bannerUrl` (`entity-create.response.201.data.bannerUrl`; string, optional, nullable)
  - `metadata` (`entity-create.response.201.data.metadata`; map<unknown>, optional, nullable)
  - `verified` (`entity-create.response.201.data.verified`; boolean, optional, nullable)
  - `placeholderEntity` (`entity-create.response.201.data.placeholderEntity`; boolean, optional, nullable)
  - `dataResidency` (`entity-create.response.201.data.dataResidency`; string, optional, nullable)
  - `autoCreated` (`entity-create.response.201.data.autoCreated`; boolean, optional, nullable)
  - `claimedBy` (`entity-create.response.201.data.claimedBy`; string, optional, nullable)
  - `claimedAt` (`entity-create.response.201.data.claimedAt`; string, optional, nullable)
    - format `date-time`
  - `createdBy` (`entity-create.response.201.data.createdBy`; string, optional, nullable)
- `meta` (`entity-create.response.201.meta`; object, optional)
  - `timestamp` (`entity-create.response.201.meta.timestamp`; string, required)
    - format `date-time`

### 400

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.400.error`; object, required)
  - `code` (`entity-create.response.400.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.400.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.400.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.400.error.traceId`; string, optional) — Unique ID for log correlation

### 401

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.401.error`; object, required)
  - `code` (`entity-create.response.401.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.401.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.401.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.401.error.traceId`; string, optional) — Unique ID for log correlation

### 403

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.403.error`; object, required)
  - `code` (`entity-create.response.403.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.403.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.403.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.403.error.traceId`; string, optional) — Unique ID for log correlation

### 404

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.404.error`; object, required)
  - `code` (`entity-create.response.404.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.404.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.404.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.404.error.traceId`; string, optional) — Unique ID for log correlation

### 409

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.409.error`; object, required)
  - `code` (`entity-create.response.409.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.409.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.409.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.409.error.traceId`; string, optional) — Unique ID for log correlation

### 422

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.422.error`; object, required)
  - `code` (`entity-create.response.422.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.422.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.422.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.422.error.traceId`; string, optional) — Unique ID for log correlation

### 429

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.429.error`; object, required)
  - `code` (`entity-create.response.429.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.429.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.429.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.429.error.traceId`; string, optional) — Unique ID for log correlation

### 500

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.500.error`; object, required)
  - `code` (`entity-create.response.500.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.500.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.500.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.500.error.traceId`; string, optional) — Unique ID for log correlation

### 503

Default Response

#### Example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": null,
    "traceId": "string"
  }
}
```

- `error` (`entity-create.response.503.error`; object, required)
  - `code` (`entity-create.response.503.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`entity-create.response.503.error.message`; string, required) — Human-readable error message
  - `details` (`entity-create.response.503.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`entity-create.response.503.error.traceId`; string, optional) — Unique ID for log correlation


Source: https://docs.sureshake.com/reference/entities/create/index.md
