---
title: "Create report"
---

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

`POST /v2/reports`

## Request body

_Required._

- `title` (`report-create.title`; string, required)
  - minLength 1
- `data` (`report-create.data`; map<unknown>, required)
- `description` (`report-create.description`; string, optional, nullable)
- `is_public` (`report-create.is_public`; boolean, optional)
  - default `false`
- `report_type` (`report-create.report_type`; string, optional)
  - one of `"forecast"`, `"projection"`, `"actual"`, `"formal_report"`, `"periodic_report"`, `"annual_report"`, `"quarterly_report"`, `"audit_report"`, `"compliance_report"`, `"clinical_trial"`, `"supply_chain"`, `"legal_document"`, `"government_filing"`, `"esg_report"`, `"kyc_resume"`, `"kyc_identity"`, `"kyc_address"`, `"kyc_selfie"`, `"kyc_complete"`, `"netsuite_ar_aging"`, `"netsuite_ap_aging"`, `"netsuite_inventory_aging"`, `"netsuite_customer_concentration"`, `"netsuite_vendor_concentration"`, `"netsuite_inventory_turnover"`, `"netsuite_financial_condition"`, `"netsuite_sales_bookings"`, `"netsuite_income_statement"`, `"netsuite_balance_sheet"`, `"netsuite_trial_balance"`, `"netsuite_cash_flows"`, `"netsuite_forecast"`, `"brokerage_statement"`, `"investor_report"`; default `"formal_report"`
- `linked_report_id` (`report-create.linked_report_id`; string, optional, nullable)
  - format `uuid`
- `fiscal_period_start` (`report-create.fiscal_period_start`; string, optional, nullable)
  - format `date-time`
- `fiscal_period_end` (`report-create.fiscal_period_end`; string, optional, nullable)
  - format `date-time`
- `status` (`report-create.status`; string, optional)
  - one of `"draft"`, `"uploading"`, `"attributes_added"`, `"ipfs_generated"`, `"submitted"`, `"verified"`, `"minted"`, `"archived"`; default `"draft"`
- `entity_id` (`report-create.entity_id`; string, optional)
  - format `uuid`
- `organization_id` (`report-create.organization_id`; string, optional, nullable)
- `document_key` (`report-create.document_key`; string, optional, nullable)
  - minLength 1
- `documentKey` (`report-create.documentKey`; string, optional, nullable)
  - minLength 1
- `document_type` (`report-create.document_type`; string, optional, nullable)
  - minLength 1
- `documentType` (`report-create.documentType`; string, optional, nullable)
  - minLength 1
- `ipfs_hash` (`report-create.ipfs_hash`; string, optional, nullable)
- `ipfsHash` (`report-create.ipfsHash`; string, optional, nullable)
- `ipfs_url` (`report-create.ipfs_url`; string, optional, nullable)
- `ipfsUrl` (`report-create.ipfsUrl`; string, optional, nullable)
- `nft_address` (`report-create.nft_address`; string, optional, nullable)
- `nftAddress` (`report-create.nftAddress`; string, optional, nullable)
- `nft_token_id` (`report-create.nft_token_id`; string, optional, nullable)
- `nftTokenId` (`report-create.nftTokenId`; string, optional, nullable)
- `transaction_hash` (`report-create.transaction_hash`; string, optional, nullable)
- `transactionHash` (`report-create.transactionHash`; string, optional, nullable)

## Example request

```json
{
  "title": "string",
  "description": "string",
  "data": {
    "property1": null,
    "property2": null
  },
  "is_public": false,
  "report_type": "forecast",
  "linked_report_id": "76246679-3292-4dc2-907d-bbc7b92e9b96",
  "fiscal_period_start": "2019-08-24T14:15:22Z",
  "fiscal_period_end": "2019-08-24T14:15:22Z",
  "status": "draft",
  "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
  "organization_id": "string",
  "document_key": "string",
  "documentKey": "string",
  "document_type": "string",
  "documentType": "string",
  "ipfs_hash": "string",
  "ipfsHash": "string",
  "ipfs_url": "string",
  "ipfsUrl": "string",
  "nft_address": "string",
  "nftAddress": "string",
  "nft_token_id": "string",
  "nftTokenId": "string",
  "transaction_hash": "string",
  "transactionHash": "string"
}
```

## Code samples

### cURL

```bash
curl --request POST \
  --url https://api.sureshake.com/v2/reports \
  --header 'Content-Type: application/json' \
  --data '
{
  "title": "string",
  "description": "string",
  "data": {
    "property1": null,
    "property2": null
  },
  "is_public": false,
  "report_type": "forecast",
  "linked_report_id": "76246679-3292-4dc2-907d-bbc7b92e9b96",
  "fiscal_period_start": "2019-08-24T14:15:22Z",
  "fiscal_period_end": "2019-08-24T14:15:22Z",
  "status": "draft",
  "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
  "organization_id": "string",
  "document_key": "string",
  "documentKey": "string",
  "document_type": "string",
  "documentType": "string",
  "ipfs_hash": "string",
  "ipfsHash": "string",
  "ipfs_url": "string",
  "ipfsUrl": "string",
  "nft_address": "string",
  "nftAddress": "string",
  "nft_token_id": "string",
  "nftTokenId": "string",
  "transaction_hash": "string",
  "transactionHash": "string"
}
'
```

### TypeScript

```typescript
const url = 'https://api.sureshake.com/v2/reports';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    title: 'string',
    description: 'string',
    data: {property1: null, property2: null},
    is_public: false,
    report_type: 'forecast',
    linked_report_id: '76246679-3292-4dc2-907d-bbc7b92e9b96',
    fiscal_period_start: '2019-08-24T14:15:22Z',
    fiscal_period_end: '2019-08-24T14:15:22Z',
    status: 'draft',
    entity_id: '8161163a-f227-466f-bc01-090a01e80165',
    organization_id: 'string',
    document_key: 'string',
    documentKey: 'string',
    document_type: 'string',
    documentType: 'string',
    ipfs_hash: 'string',
    ipfsHash: 'string',
    ipfs_url: 'string',
    ipfsUrl: 'string',
    nft_address: 'string',
    nftAddress: 'string',
    nft_token_id: 'string',
    nftTokenId: 'string',
    transaction_hash: 'string',
    transactionHash: 'string'
  })
};

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/reports"

payload = {
    "title": "string",
    "description": "string",
    "data": {
        "property1": None,
        "property2": None
    },
    "is_public": False,
    "report_type": "forecast",
    "linked_report_id": "76246679-3292-4dc2-907d-bbc7b92e9b96",
    "fiscal_period_start": "2019-08-24T14:15:22Z",
    "fiscal_period_end": "2019-08-24T14:15:22Z",
    "status": "draft",
    "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
    "organization_id": "string",
    "document_key": "string",
    "documentKey": "string",
    "document_type": "string",
    "documentType": "string",
    "ipfs_hash": "string",
    "ipfsHash": "string",
    "ipfs_url": "string",
    "ipfsUrl": "string",
    "nft_address": "string",
    "nftAddress": "string",
    "nft_token_id": "string",
    "nftTokenId": "string",
    "transaction_hash": "string",
    "transactionHash": "string"
}
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",
    "title": "string",
    "description": "string",
    "report_type": "forecast",
    "status": "draft",
    "is_public": true,
    "owner_id": "string",
    "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
    "linked_report_id": "76246679-3292-4dc2-907d-bbc7b92e9b96",
    "fiscal_period_start": "2019-08-24T14:15:22Z",
    "fiscal_period_end": "2019-08-24T14:15:22Z",
    "ipfs_hash": "string",
    "ipfs_url": "string",
    "document_key": "string",
    "document_type": "string",
    "nft_address": "string",
    "nft_token_id": "string",
    "transaction_hash": "string",
    "data": {
      "property1": null,
      "property2": null
    },
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z",
    "view_delivery": {
      "status": "ready",
      "receiptId": "4937ce52-e283-4321-b00f-c29b6dd5d0e9",
      "source": "share",
      "expiresAt": "2019-08-24T14:15:22Z",
      "policyVersion": "report-view-delivery-v2"
    },
    "collection_ids": [
      "497f6eca-6276-4993-bfeb-53cbbbba6f08"
    ],
    "tags": [
      {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "name": "string",
        "visibility": "private"
      }
    ]
  },
  "meta": {
    "timestamp": "2019-08-24T14:15:22Z"
  }
}
```

- `data` (`report-create.response.201.data`; object, required)
  - `id` (`report-create.response.201.data.id`; string, required)
    - format `uuid`
  - `title` (`report-create.response.201.data.title`; string, required)
  - `report_type` (`report-create.response.201.data.report_type`; string, required)
    - one of `"forecast"`, `"projection"`, `"actual"`, `"formal_report"`, `"periodic_report"`, `"annual_report"`, `"quarterly_report"`, `"audit_report"`, `"compliance_report"`, `"clinical_trial"`, `"supply_chain"`, `"legal_document"`, `"government_filing"`, `"esg_report"`, `"kyc_resume"`, `"kyc_identity"`, `"kyc_address"`, `"kyc_selfie"`, `"kyc_complete"`, `"netsuite_ar_aging"`, `"netsuite_ap_aging"`, `"netsuite_inventory_aging"`, `"netsuite_customer_concentration"`, `"netsuite_vendor_concentration"`, `"netsuite_inventory_turnover"`, `"netsuite_financial_condition"`, `"netsuite_sales_bookings"`, `"netsuite_income_statement"`, `"netsuite_balance_sheet"`, `"netsuite_trial_balance"`, `"netsuite_cash_flows"`, `"netsuite_forecast"`, `"brokerage_statement"`, `"investor_report"`
  - `status` (`report-create.response.201.data.status`; string, required)
    - one of `"draft"`, `"uploading"`, `"attributes_added"`, `"ipfs_generated"`, `"submitted"`, `"verified"`, `"minted"`, `"archived"`
  - `is_public` (`report-create.response.201.data.is_public`; boolean, required)
  - `owner_id` (`report-create.response.201.data.owner_id`; string, required)
  - `created_at` (`report-create.response.201.data.created_at`; string, required)
    - format `date-time`
  - `updated_at` (`report-create.response.201.data.updated_at`; string, required)
    - format `date-time`
  - `description` (`report-create.response.201.data.description`; string, optional, nullable)
  - `entity_id` (`report-create.response.201.data.entity_id`; string, optional, nullable)
    - format `uuid`
  - `linked_report_id` (`report-create.response.201.data.linked_report_id`; string, optional, nullable)
    - format `uuid`
  - `fiscal_period_start` (`report-create.response.201.data.fiscal_period_start`; string, optional, nullable)
    - format `date-time`
  - `fiscal_period_end` (`report-create.response.201.data.fiscal_period_end`; string, optional, nullable)
    - format `date-time`
  - `ipfs_hash` (`report-create.response.201.data.ipfs_hash`; string, optional, nullable)
  - `ipfs_url` (`report-create.response.201.data.ipfs_url`; string, optional, nullable)
  - `document_key` (`report-create.response.201.data.document_key`; string, optional, nullable)
  - `document_type` (`report-create.response.201.data.document_type`; string, optional, nullable)
  - `nft_address` (`report-create.response.201.data.nft_address`; string, optional, nullable)
  - `nft_token_id` (`report-create.response.201.data.nft_token_id`; string, optional, nullable)
  - `transaction_hash` (`report-create.response.201.data.transaction_hash`; string, optional, nullable)
  - `data` (`report-create.response.201.data.data`; map<unknown>, optional, nullable)
  - `view_delivery` (`report-create.response.201.data.view_delivery`; any of, optional)
    - any of:
      - `object`
        - `status` (`report-create.response.201.data.view_delivery.1.status`; string, required)
          - one of `"ready"`
        - `receiptId` (`report-create.response.201.data.view_delivery.1.receiptId`; string, required)
          - format `uuid`
        - `source` (`report-create.response.201.data.view_delivery.1.source`; string, required)
          - one of `"share"`, `"vault"`, `"direct"`, `"api"`
        - `expiresAt` (`report-create.response.201.data.view_delivery.1.expiresAt`; string, required)
          - format `date-time`
        - `policyVersion` (`report-create.response.201.data.view_delivery.1.policyVersion`; string, required)
          - one of `"report-view-delivery-v2"`
      - `object`
        - `status` (`report-create.response.201.data.view_delivery.2.status`; string, required)
          - one of `"policyExcluded"`
        - `reason` (`report-create.response.201.data.view_delivery.2.reason`; string, required)
          - one of `"owner_self"`, `"blocked"`, `"non_external_traffic"`
        - `policyVersion` (`report-create.response.201.data.view_delivery.2.policyVersion`; string, required)
          - one of `"report-view-delivery-v2"`
      - `object`
        - `status` (`report-create.response.201.data.view_delivery.3.status`; string, required)
          - one of `"unavailable"`
        - `reason` (`report-create.response.201.data.view_delivery.3.reason`; string, required)
          - one of `"viewer_policy_unavailable"`, `"lineage_unavailable"`, `"tracking_unavailable"`
        - `policyVersion` (`report-create.response.201.data.view_delivery.3.policyVersion`; string, required)
          - one of `"report-view-delivery-v2"`
  - `collection_ids` (`report-create.response.201.data.collection_ids`; array<string>, optional)
    - format `uuid`
  - `tags` (`report-create.response.201.data.tags`; array<object>, optional)
    - `id` (`report-create.response.201.data.tags.id`; string, required)
      - format `uuid`
    - `name` (`report-create.response.201.data.tags.name`; string, required)
    - `visibility` (`report-create.response.201.data.tags.visibility`; string, required)
      - one of `"private"`, `"public"`
- `meta` (`report-create.response.201.meta`; object, optional)
  - `timestamp` (`report-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` (`report-create.response.400.error`; object, required)
  - `code` (`report-create.response.400.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-create.response.400.error.message`; string, required) — Human-readable error message
  - `details` (`report-create.response.400.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-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` (`report-create.response.401.error`; object, required)
  - `code` (`report-create.response.401.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-create.response.401.error.message`; string, required) — Human-readable error message
  - `details` (`report-create.response.401.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-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` (`report-create.response.403.error`; object, required)
  - `code` (`report-create.response.403.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-create.response.403.error.message`; string, required) — Human-readable error message
  - `details` (`report-create.response.403.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-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` (`report-create.response.404.error`; object, required)
  - `code` (`report-create.response.404.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-create.response.404.error.message`; string, required) — Human-readable error message
  - `details` (`report-create.response.404.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-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` (`report-create.response.409.error`; object, required)
  - `code` (`report-create.response.409.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-create.response.409.error.message`; string, required) — Human-readable error message
  - `details` (`report-create.response.409.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-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` (`report-create.response.422.error`; object, required)
  - `code` (`report-create.response.422.error.code`; string, required) — Machine-readable error code (e.g., NOT_FOUND)
  - `message` (`report-create.response.422.error.message`; string, required) — Human-readable error message
  - `details` (`report-create.response.422.error.details`; unknown, optional) — Optional structured error details
  - `traceId` (`report-create.response.422.error.traceId`; string, optional) — Unique ID for log correlation

### 500

Default Response

#### Example

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

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


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