---
title: Create a data room (POST /api/v2/data-rooms) | HelpRange API
description: POST /api/v2/data-rooms: Creates a data room, like &quot;New data room&quot; in the panel, with optional folders (one level – no folders inside folders) and settings.
url: https://www.helprange.com/developers/api/create-data-room
---

POST

# Create a data room

`https://www.helprange.com/api/v2/data-rooms`

Creates a data room, like "New data room" in the panel, with optional folders (one level – no folders inside folders) and settings. Defaults: watermark on, download off, no screenshot protection, guest notifications on, no NDA, no expiry (a default the plan does not include is left off; a setting you ASK for that the plan does not include: 402 naming the plan). The name must be unique in the team (400). Pro: up to 3 active rooms (402 when the limit is reached); Max, Unlimited, the Deal Room Pass and the trial: unlimited. Next: add documents (Add documents to a data room) and invite guests (Invite a guest) – invitations go out once the room has a document. Answers 201 with the room, including links.guest_link.

**Plans:** Pro, Max, Unlimited, Deal Room Pass, trial. **Auth:** `Authorization: Bearer hr_live_…` (team key), `X-API-Key`, `Authorization: Api-Key <key>` or an OAuth `Bearer` token. **Scope:** `rooms:write`. **Operation id:** `createDataRoom`

**Header** `Idempotency-Key` (optional, up to 255 characters): retry with the same key and body within 24 hours and you get the first response back (`Idempotent-Replayed: true`) – the request is not run twice. Another body: `422 idempotency_key_reused`; still running: `409 idempotency_key_in_progress`. [More](https://www.helprange.com/developers/api#idempotency).

## Request body

Content types: `application/json`, `application/x-www-form-urlencoded`.

| Field | Type | Description |
|---|---|---|
| `name` required | string | Room name (unique in the team). (max length 254) |
| `folders` | array of string | Room folder names, in order (up to 50; turns room folders on). |
| `settings` | object | Only the settings sent change (unknown keys: 400). They may also be sent at the top level. A setting the plan does not include: 402 naming the plan – never dropped silently. |

## Example request

```
curl -X POST https://www.helprange.com/api/v2/data-rooms \
  -H "X-API-Key: $HELPRANGE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary '{"name": "Project Falcon", "folders": ["01 Company", "02 Financials", "03 Legal"], "settings": {"nda": true, "nda_template": "ma", "qa": true, "expires_on": "2027-03-31"}}'
```

```
const res = await fetch('https://www.helprange.com/api/v2/data-rooms', {
  method: 'POST',
  headers: {'X-API-Key': process.env.HELPRANGE_API_KEY, 'Content-Type': 'application/json'},
  body: JSON.stringify({
    "name": "Project Falcon",
    "folders": [
      "01 Company",
      "02 Financials",
      "03 Legal"
    ],
    "settings": {
      "nda": true,
      "nda_template": "ma",
      "qa": true,
      "expires_on": "2027-03-31"
    }
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${res.status}: ${data.error || data.message || data.reason}`);
console.log(data);
```

```
import os

import requests

r = requests.post(
    'https://www.helprange.com/api/v2/data-rooms',
    headers={'X-API-Key': os.environ['HELPRANGE_API_KEY']},
    json={
        "name": "Project Falcon",
        "folders": ["01 Company", "02 Financials", "03 Legal"],
        "settings": {
            "nda": True,
            "nda_template": "ma",
            "qa": True,
            "expires_on": "2027-03-31",
        },
    },
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

The samples read the key from the `HELPRANGE_API_KEY` environment variable.

## Responses

| Status | Description |
|---|---|
| `201` | Created |
| `400` | Invalid input – the message says which parameter. |
| `401` | Missing or invalid API key / OAuth token. Team keys: code invalid_key, key_revoked, key_expired or key_owner_removed. |
| `402` | Your plan does not include the REST API (the Free plan) or this feature (e.g. NDA needs Max). |
| `403` | The team API key lacks the scope this endpoint needs. |
| `405` | Wrong HTTP method for this endpoint. |
| `409` | The data room is frozen, the signed PDF is not ready yet, (webhooks) the team already has an endpoint / the endpoint is turned off, or (code idempotency_key_in_progress) a request with the same Idempotency-Key is still running – retry in a few seconds. |
| `422` | code idempotency_key_reused: this Idempotency-Key was already used in the last 24 hours with a different request (method, path or body). Use a new key for a new request. |
| `429` | A usage limit was reached – wait Retry-After seconds. |

Example response · 201

```
{
  "id": 10,
  "name": "Project Falcon",
  "nda_required": "Falcon NDA",
  "folders_enabled": true,
  "settings": {
    "watermark": true,
    "download": false,
    "screenshot_protection": false,
    "notify": true,
    "expires_at": null,
    "nda": {
      "enabled": true,
      "nda_id": 4,
      "name": "Falcon NDA",
      "mode": "click"
    },
    "qa": true,
    "access_requests": false,
    "folders_enabled": true
  },
  "links": {
    "guest_link": "https://acme.helprange.com/data-room/0c6f2b9e7d1a4f3b8a5e6d7c9b0a1f2e/",
    "panel_url": "https://www.helprange.com/user/outside-team/10/",
    "owner_preview_url": "https://www.helprange.com/user/outside-team/10/preview"
  },
  "folders": [
    {
      "id": 5,
      "name": "Financials"
    }
  ],
  "approval_workflow": false,
  "guests": [
    {
      "id": 77,
      "email": "buyer@bidco.com",
      "link": "https://acme.helprange.com/view-team/0c6f2b9e7d1a4f3b8a5e6d7c9b0a1f2e/5b2e8c1d9f7a4e3b/",
      "views": 23,
      "last_view_at": "2026-11-09T17:40:00+00:00",
      "nda": "signed",
      "nda_signed_at": "2026-11-02T10:00:00+00:00"
    }
  ],
  "pending_access_requests": 1,
  "documents": [
    {
      "id": 250,
      "name": "teaser.pdf",
      "views": 11,
      "room_link_id": 901,
      "room_folder_id": null,
      "room_folder": null,
      "group": null,
      "approval": "published"
    }
  ],
  "expires_at": null,
  "index_numbering": true,
  "freeze": {
    "frozen": false,
    "guest_access": "full",
    "frozen_at": null,
    "archives": []
  },
  "qa": {
    "available": true,
    "open_questions": 3,
    "questions": 12,
    "request_items": 40,
    "guests_can_ask": true,
    "answers_need_approval": false,
    "guests_see_request_list": true
  }
}
```

## Try it

**Uses your real account.** The request goes from your browser straight to `www.helprange.com` with your API key and acts as you – this POST **changes data**. The key stays in this page (in this tab's session storage only if you tick the box), is never put in a URL and is not sent to analytics. Do not paste a key on a shared computer.
 API key

  Remember in this tab   JSON body { "name": "Project Falcon", "folders": [ "01 Company", "02 Financials", "03 Legal" ], "settings": { "nda": true, "nda_template": "ma", "qa": true, "expires_on": "2027-03-31" } }

```

```
