Containers
Containers are the top-level grouping for documents. Each organisation can have multiple containers — for example, one for “Website Agreements” and another for “Employee Onboarding”.
Endpoints
Section titled “Endpoints”| Method | Path | Description |
|---|---|---|
GET | /api/v1/containers | List all containers |
POST | /api/v1/containers | Create a container |
GET | /api/v1/containers/:id | Get a container |
DELETE | /api/v1/containers/:id | Delete a container |
POST | /api/v1/containers/:id/duplicate | Duplicate a container |
List containers GET
Section titled “List containers ”GET /api/v1/containersReturns all containers for the authenticated organisation.
Request: No body or query parameters required.
Response 200:
{ "data": [ { "id": "018e1234-abcd-7000-8000-000000000001", "name": "Website Agreements", "description": "All website legal documents", "org_id": "018e1234-abcd-7000-8000-000000000000", "created_by": "018e1234-abcd-7000-8000-000000000002", "created_at": "2026-02-01T09:00:00.000Z", "updated_at": "2026-02-01T09:00:00.000Z", "_count": { "documents": 3 } } ]}Error cases:
| Status | Code | Cause |
|---|---|---|
401 | UNAUTHORIZED | Missing or invalid API key |
Create a container POST
Section titled “Create a container ”POST /api/v1/containersRequest body:
| Field | Type | Required | Constraints |
|---|---|---|---|
name | string | Yes | 1–100 characters |
description | string | No | Max 500 characters |
{ "name": "Website Agreements", "description": "Terms of Service and Privacy Policy"}Response 201:
{ "data": { "id": "018e1234-abcd-7000-8000-000000000001", "name": "Website Agreements", "description": "Terms of Service and Privacy Policy", "org_id": "018e1234-abcd-7000-8000-000000000000", "created_by": "018e1234-abcd-7000-8000-000000000002", "created_at": "2026-02-01T09:00:00.000Z", "updated_at": "2026-02-01T09:00:00.000Z" }}Error cases:
| Status | Code | Cause |
|---|---|---|
400 | BAD_REQUEST | name is empty or exceeds 100 characters |
401 | UNAUTHORIZED | Missing or invalid API key |
403 | TIER_LIMIT | Container limit reached for the organisation’s plan |
Get a container GET
Section titled “Get a container ”GET /api/v1/containers/:idPath parameters:
| Parameter | Type | Description |
|---|---|---|
id | UUID | Container ID |
Response 200: Includes nested documents, each with its versions (summary fields only — no clause content).
{ "data": { "id": "018e1234-abcd-7000-8000-000000000001", "name": "Website Agreements", "description": "All website legal documents", "org_id": "018e1234-abcd-7000-8000-000000000000", "created_by": "018e1234-abcd-7000-8000-000000000002", "created_at": "2026-02-01T09:00:00.000Z", "updated_at": "2026-02-01T09:00:00.000Z", "documents": [ { "id": "018e1234-abcd-7000-8000-000000000010", "name": "Terms of Service", "description": null, "container_id": "018e1234-abcd-7000-8000-000000000001", "created_by": "018e1234-abcd-7000-8000-000000000002", "created_at": "2026-02-01T09:05:00.000Z", "updated_at": "2026-02-01T09:05:00.000Z", "versions": [ { "id": "018e1234-abcd-7000-8000-000000000020", "version_number": 1, "status": "ACTIVE", "published_at": "2026-02-01T09:10:00.000Z", "created_at": "2026-02-01T09:05:00.000Z", "_count": { "signing_requests": 12 } } ] } ] }}Error cases:
| Status | Code | Cause |
|---|---|---|
400 | BAD_REQUEST | id is not a valid UUID |
401 | UNAUTHORIZED | Missing or invalid API key |
404 | NOT_FOUND | Container does not exist in this organisation |
Duplicate a container POST
Section titled “Duplicate a container ”POST /api/v1/containers/:id/duplicateCreates a new container by copying the source container’s structure.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
id | UUID | Source container ID |
Request body:
| Field | Type | Required | Constraints |
|---|---|---|---|
name | string | No | Max 255 characters. Defaults to a generated name if omitted |
includeContent | boolean | No | Default true. When true, clones each document’s active version content; when false, clones structure only |
{ "name": "Website Agreements (Copy)", "includeContent": true }Response 201:
{ "data": { "id": "018e1234-abcd-7000-8000-000000000099", "name": "Website Agreements (Copy)" }}Error cases:
| Status | Code | Cause |
|---|---|---|
400 | BAD_REQUEST | id is not a valid UUID |
401 | UNAUTHORIZED | Missing or invalid API key |
404 | NOT_FOUND | Container does not exist in this organisation |
Delete a container DELETE
Section titled “Delete a container ”DELETE /api/v1/containers/:idPath parameters:
| Parameter | Type | Description |
|---|---|---|
id | UUID | Container ID |
Response 200:
{ "data": { "success": true }}Error cases:
| Status | Code | Cause |
|---|---|---|
400 | BAD_REQUEST | id is not a valid UUID |
401 | UNAUTHORIZED | Missing or invalid API key |
404 | NOT_FOUND | Container does not exist in this organisation |