---
title: "Create follow request"
---

> 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 › directory

`POST /v2/directory/{subjectType}/{listingId}/follow-requests`

## Path parameters

- `subjectType` (`directory-create-follow-request.path.subjectType`; string, required)
  - one of `"person"`, `"entity"`
- `listingId` (`directory-create-follow-request.path.listingId`; string, required)
  - format `uuid`

## Request body

_Required._

- `idempotencyKey` (`directory-create-follow-request.idempotencyKey`; string, required)
  - minLength 8; maxLength 255
- `actingPrincipal` (`directory-create-follow-request.actingPrincipal`; object, optional)
  - `principalType` (`directory-create-follow-request.actingPrincipal.principalType`; string, required)
    - one of `"user"`, `"entity"`, `"organization"`
  - `principalId` (`directory-create-follow-request.actingPrincipal.principalId`; string, required)
    - minLength 1; maxLength 255
- `requestNote` (`directory-create-follow-request.requestNote`; string, optional)
  - maxLength 2000
- `reason` (`directory-create-follow-request.reason`; string, optional)
  - minLength 3; maxLength 2000
- `requestedTier` (`directory-create-follow-request.requestedTier`; string, optional)
  - one of `"follower"`, `"capital"`, `"diligence"`, `"custom"`
- `desiredObservation` (`directory-create-follow-request.desiredObservation`; string, optional)
  - minLength 3; maxLength 2000
- `requestedDurationDays` (`directory-create-follow-request.requestedDurationDays`; integer, optional)
  - min 1; max 365
- `packageId` (`directory-create-follow-request.packageId`; string, optional)
  - format `uuid`

## Example request

```json
{
  "actingPrincipal": {
    "principalType": "user",
    "principalId": "string"
  },
  "requestNote": "string",
  "reason": "string",
  "requestedTier": "follower",
  "desiredObservation": "string",
  "requestedDurationDays": 1,
  "idempotencyKey": "stringst",
  "packageId": "471cc1d4-ec27-4504-b7c2-949af95662bc"
}
```

## Code samples

### cURL

```bash
curl --request POST \
  --url 'https://api.sureshake.com/v2/directory/person/<listingId>/follow-requests' \
  --header 'Content-Type: application/json' \
  --data '
{
  "actingPrincipal": {
    "principalType": "user",
    "principalId": "string"
  },
  "requestNote": "string",
  "reason": "string",
  "requestedTier": "follower",
  "desiredObservation": "string",
  "requestedDurationDays": 1,
  "idempotencyKey": "stringst",
  "packageId": "471cc1d4-ec27-4504-b7c2-949af95662bc"
}
'
```

### TypeScript

```typescript
const url = 'https://api.sureshake.com/v2/directory/person/<listingId>/follow-requests';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    actingPrincipal: {principalType: 'user', principalId: 'string'},
    requestNote: 'string',
    reason: 'string',
    requestedTier: 'follower',
    desiredObservation: 'string',
    requestedDurationDays: 1,
    idempotencyKey: 'stringst',
    packageId: '471cc1d4-ec27-4504-b7c2-949af95662bc'
  })
};

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/directory/person/<listingId>/follow-requests"

payload = {
    "actingPrincipal": {
        "principalType": "user",
        "principalId": "string"
    },
    "requestNote": "string",
    "reason": "string",
    "requestedTier": "follower",
    "desiredObservation": "string",
    "requestedDurationDays": 1,
    "idempotencyKey": "stringst",
    "packageId": "471cc1d4-ec27-4504-b7c2-949af95662bc"
}
headers = {"Content-Type": "application/json"}

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

print(response.text)
```

## Responses

### 201

Default Response

#### Example

```json
{
  "data": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "subject": {
      "listingId": "8c73d933-f7ed-437e-9da1-caac95adc1ae",
      "subjectType": "person"
    },
    "actingPrincipal": {
      "principalType": "user",
      "principalId": "string"
    },
    "requestedByUserId": "string",
    "status": "pending",
    "requestNote": "string",
    "reason": "string",
    "requestedTier": "follower",
    "desiredObservation": "string",
    "requestedDurationDays": 1,
    "reviewDecision": "accepted",
    "grantedTier": "follower",
    "grantedDurationDays": 1,
    "requestedPackageId": "85666b99-03c1-49db-85ac-b2f8e233aa9c",
    "reviewedByUserId": "string",
    "reviewedAt": "2019-08-24T14:15:22Z",
    "decisionNotes": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z"
  },
  "meta": {
    "timestamp": "2019-08-24T14:15:22Z"
  }
}
```

- `data` (`directory-create-follow-request.response.201.data`; object, required)
  - `id` (`directory-create-follow-request.response.201.data.id`; string, required)
    - format `uuid`
  - `subject` (`directory-create-follow-request.response.201.data.subject`; object, required)
    - `listingId` (`directory-create-follow-request.response.201.data.subject.listingId`; string, required)
      - format `uuid`
    - `subjectType` (`directory-create-follow-request.response.201.data.subject.subjectType`; string, required)
      - one of `"person"`, `"entity"`
  - `actingPrincipal` (`directory-create-follow-request.response.201.data.actingPrincipal`; object, required)
    - `principalType` (`directory-create-follow-request.response.201.data.actingPrincipal.principalType`; string, required)
      - one of `"user"`, `"entity"`, `"organization"`
    - `principalId` (`directory-create-follow-request.response.201.data.actingPrincipal.principalId`; string, required)
      - minLength 1; maxLength 255
  - `requestedByUserId` (`directory-create-follow-request.response.201.data.requestedByUserId`; string, required)
  - `status` (`directory-create-follow-request.response.201.data.status`; string, required)
    - one of `"pending"`, `"approved"`, `"rejected"`, `"cancelled"`
  - `requestNote` (`directory-create-follow-request.response.201.data.requestNote`; string, required, nullable)
  - `reason` (`directory-create-follow-request.response.201.data.reason`; string, required, nullable)
  - `requestedTier` (`directory-create-follow-request.response.201.data.requestedTier`; string, required, nullable)
    - one of `"follower"`, `"capital"`, `"diligence"`, `"custom"`
  - `desiredObservation` (`directory-create-follow-request.response.201.data.desiredObservation`; string, required, nullable)
  - `requestedDurationDays` (`directory-create-follow-request.response.201.data.requestedDurationDays`; integer, required, nullable)
    - min 1; max 365
  - `reviewDecision` (`directory-create-follow-request.response.201.data.reviewDecision`; string, required, nullable)
    - one of `"accepted"`, `"narrowed"`, `"declined"`
  - `grantedTier` (`directory-create-follow-request.response.201.data.grantedTier`; string, required, nullable)
    - one of `"follower"`, `"capital"`, `"diligence"`, `"custom"`
  - `grantedDurationDays` (`directory-create-follow-request.response.201.data.grantedDurationDays`; integer, required, nullable)
    - min 1; max 365
  - `requestedPackageId` (`directory-create-follow-request.response.201.data.requestedPackageId`; string, required, nullable)
    - format `uuid`
  - `reviewedByUserId` (`directory-create-follow-request.response.201.data.reviewedByUserId`; string, required, nullable)
  - `reviewedAt` (`directory-create-follow-request.response.201.data.reviewedAt`; string, required, nullable)
    - format `date-time`
  - `decisionNotes` (`directory-create-follow-request.response.201.data.decisionNotes`; string, required, nullable)
  - `createdAt` (`directory-create-follow-request.response.201.data.createdAt`; string, required)
    - format `date-time`
  - `updatedAt` (`directory-create-follow-request.response.201.data.updatedAt`; string, required)
    - format `date-time`
- `meta` (`directory-create-follow-request.response.201.meta`; object, optional)
  - `timestamp` (`directory-create-follow-request.response.201.meta.timestamp`; string, required)
    - format `date-time`

### 400

Default Response

#### Example

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

- `error` (`directory-create-follow-request.response.400.error`; object, required)
  - `code` (`directory-create-follow-request.response.400.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`directory-create-follow-request.response.400.error.message`; string, required) — Human-readable error message
  - `details` (`directory-create-follow-request.response.400.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`directory-create-follow-request.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` (`directory-create-follow-request.response.401.error`; object, required)
  - `code` (`directory-create-follow-request.response.401.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`directory-create-follow-request.response.401.error.message`; string, required) — Human-readable error message
  - `details` (`directory-create-follow-request.response.401.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`directory-create-follow-request.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` (`directory-create-follow-request.response.403.error`; object, required)
  - `code` (`directory-create-follow-request.response.403.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`directory-create-follow-request.response.403.error.message`; string, required) — Human-readable error message
  - `details` (`directory-create-follow-request.response.403.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`directory-create-follow-request.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` (`directory-create-follow-request.response.404.error`; object, required)
  - `code` (`directory-create-follow-request.response.404.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`directory-create-follow-request.response.404.error.message`; string, required) — Human-readable error message
  - `details` (`directory-create-follow-request.response.404.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`directory-create-follow-request.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` (`directory-create-follow-request.response.409.error`; object, required)
  - `code` (`directory-create-follow-request.response.409.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`directory-create-follow-request.response.409.error.message`; string, required) — Human-readable error message
  - `details` (`directory-create-follow-request.response.409.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`directory-create-follow-request.response.409.error.traceId`; string, optional) — Unique ID for log correlation

### 429

Default Response

#### Example

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

- `error` (`directory-create-follow-request.response.429.error`; object, required)
  - `code` (`directory-create-follow-request.response.429.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`directory-create-follow-request.response.429.error.message`; string, required) — Human-readable error message
  - `details` (`directory-create-follow-request.response.429.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`directory-create-follow-request.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` (`directory-create-follow-request.response.500.error`; object, required)
  - `code` (`directory-create-follow-request.response.500.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`directory-create-follow-request.response.500.error.message`; string, required) — Human-readable error message
  - `details` (`directory-create-follow-request.response.500.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`directory-create-follow-request.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` (`directory-create-follow-request.response.503.error`; object, required)
  - `code` (`directory-create-follow-request.response.503.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`directory-create-follow-request.response.503.error.message`; string, required) — Human-readable error message
  - `details` (`directory-create-follow-request.response.503.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`directory-create-follow-request.response.503.error.traceId`; string, optional) — Unique ID for log correlation


Source: https://docs.sureshake.com/reference/directory-create-follow-request/index.md
