Skip to content

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”.

MethodPathDescription
GET/api/v1/containersList all containers
POST/api/v1/containersCreate a container
GET/api/v1/containers/:idGet a container
DELETE/api/v1/containers/:idDelete a container
POST/api/v1/containers/:id/duplicateDuplicate a container

GET /api/v1/containers

Returns 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:

StatusCodeCause
401UNAUTHORIZEDMissing or invalid API key

POST /api/v1/containers

Request body:

FieldTypeRequiredConstraints
namestringYes1–100 characters
descriptionstringNoMax 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:

StatusCodeCause
400BAD_REQUESTname is empty or exceeds 100 characters
401UNAUTHORIZEDMissing or invalid API key
403TIER_LIMITContainer limit reached for the organisation’s plan

GET /api/v1/containers/:id

Path parameters:

ParameterTypeDescription
idUUIDContainer 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:

StatusCodeCause
400BAD_REQUESTid is not a valid UUID
401UNAUTHORIZEDMissing or invalid API key
404NOT_FOUNDContainer does not exist in this organisation

POST /api/v1/containers/:id/duplicate

Creates a new container by copying the source container’s structure.

Path parameters:

ParameterTypeDescription
idUUIDSource container ID

Request body:

FieldTypeRequiredConstraints
namestringNoMax 255 characters. Defaults to a generated name if omitted
includeContentbooleanNoDefault 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:

StatusCodeCause
400BAD_REQUESTid is not a valid UUID
401UNAUTHORIZEDMissing or invalid API key
404NOT_FOUNDContainer does not exist in this organisation

DELETE /api/v1/containers/:id

Path parameters:

ParameterTypeDescription
idUUIDContainer ID

Response 200:

{
"data": { "success": true }
}

Error cases:

StatusCodeCause
400BAD_REQUESTid is not a valid UUID
401UNAUTHORIZEDMissing or invalid API key
404NOT_FOUNDContainer does not exist in this organisation