curl --request GET \
--url https://paradigm.lighton.ai/api/v3/content-types \
--header 'Authorization: Bearer <token>'import requests
url = "https://paradigm.lighton.ai/api/v3/content-types"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://paradigm.lighton.ai/api/v3/content-types', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"content_types": [
{
"path": "legal",
"code": "legal",
"label": "Legal",
"description": "Legal documents: contracts, litigation, compliance.",
"inherit_attributes": true,
"attributes": [
{
"name": "jurisdiction",
"label": "Jurisdiction",
"type": "multi-select",
"required": false,
"description": "Legal jurisdiction(s) governing the document",
"choices": [
"FR",
"US",
"UK",
"DE"
]
},
{
"name": "confidentiality_level",
"label": "Confidentiality Level",
"type": "select",
"required": false,
"description": "",
"choices": [
"Public",
"Internal",
"Confidential",
"Strictly Confidential"
]
}
],
"children": [
{
"path": "legal:contract",
"code": "contract",
"label": "Contract",
"description": "Binding agreements between parties.",
"inherit_attributes": true,
"attributes": [
{
"name": "jurisdiction",
"label": "Jurisdiction",
"type": "multi-select",
"required": false,
"description": "Legal jurisdiction(s) governing the document",
"choices": [
"FR",
"US",
"UK",
"DE"
],
"inherited": true
},
{
"name": "effective_date",
"label": "Effective Date",
"type": "date",
"required": false,
"description": "",
"choices": []
}
],
"children": [
{
"path": "legal:contract:nda",
"code": "nda",
"label": "Non-Disclosure Agreement",
"description": "",
"inherit_attributes": true,
"attributes": [
{
"name": "jurisdiction",
"label": "Jurisdiction",
"type": "multi-select",
"required": false,
"description": "Legal jurisdiction(s) governing the document",
"choices": [
"FR",
"US",
"UK",
"DE"
],
"inherited": true
},
{
"name": "effective_date",
"label": "Effective Date",
"type": "date",
"required": false,
"description": "",
"choices": [],
"inherited": true
},
{
"name": "counterparty",
"label": "Counterparty",
"type": "text",
"required": true,
"description": "Name of the other party",
"choices": []
},
{
"name": "is_mutual",
"label": "Is Mutual",
"type": "boolean",
"required": false,
"description": "",
"choices": []
}
]
}
]
}
]
}
],
"can_edit": true
}List content types
List your classification trees: the content types you’ve adopted from the starter templates or created from scratch. This is where you see what’s available to classify your documents with.
Content types are tree-based. Each tree is an independent classification
hierarchy (e.g., legal → contract → nda). You can have multiple trees
side by side (legal, finance, compliance), and a single document can be
classified under multiple trees simultaneously. For instance, a contract
can be both legal:contract:nda and finance:investment:term-sheet.
Each node in the tree can carry custom attributes (metadata fields like
jurisdiction, effective_date, contract_value). Attributes are inherited
down the tree: a document at legal:contract:nda gets attributes from all
three levels.
New here? Start by browsing available templates at
GET /api/v3/content-types/templates, then adopt the ones you need
via POST /api/v3/content-types {"action": "adopt"}.
Query params:
?query=5G antennas: filter to content types relevant to a search query (uses a first-pass retrieval). Without this param, the full catalog is returned.?path=legal: filter to a specific subtree?path=legal,finance: multiple subtrees (comma-separated)?depth=0: roots only.?depth=N: N levels of children.?include_attributes=true(default): include attribute definitions per node?include_attributes=false: omit attribute definitions for a lighter response
query and path can be combined: returns the intersection (only matched
content types under the requested paths).
Returns an empty list if no content types have been set up yet.
curl --request GET \
--url https://paradigm.lighton.ai/api/v3/content-types \
--header 'Authorization: Bearer <token>'import requests
url = "https://paradigm.lighton.ai/api/v3/content-types"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://paradigm.lighton.ai/api/v3/content-types', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"content_types": [
{
"path": "legal",
"code": "legal",
"label": "Legal",
"description": "Legal documents: contracts, litigation, compliance.",
"inherit_attributes": true,
"attributes": [
{
"name": "jurisdiction",
"label": "Jurisdiction",
"type": "multi-select",
"required": false,
"description": "Legal jurisdiction(s) governing the document",
"choices": [
"FR",
"US",
"UK",
"DE"
]
},
{
"name": "confidentiality_level",
"label": "Confidentiality Level",
"type": "select",
"required": false,
"description": "",
"choices": [
"Public",
"Internal",
"Confidential",
"Strictly Confidential"
]
}
],
"children": [
{
"path": "legal:contract",
"code": "contract",
"label": "Contract",
"description": "Binding agreements between parties.",
"inherit_attributes": true,
"attributes": [
{
"name": "jurisdiction",
"label": "Jurisdiction",
"type": "multi-select",
"required": false,
"description": "Legal jurisdiction(s) governing the document",
"choices": [
"FR",
"US",
"UK",
"DE"
],
"inherited": true
},
{
"name": "effective_date",
"label": "Effective Date",
"type": "date",
"required": false,
"description": "",
"choices": []
}
],
"children": [
{
"path": "legal:contract:nda",
"code": "nda",
"label": "Non-Disclosure Agreement",
"description": "",
"inherit_attributes": true,
"attributes": [
{
"name": "jurisdiction",
"label": "Jurisdiction",
"type": "multi-select",
"required": false,
"description": "Legal jurisdiction(s) governing the document",
"choices": [
"FR",
"US",
"UK",
"DE"
],
"inherited": true
},
{
"name": "effective_date",
"label": "Effective Date",
"type": "date",
"required": false,
"description": "",
"choices": [],
"inherited": true
},
{
"name": "counterparty",
"label": "Counterparty",
"type": "text",
"required": true,
"description": "Name of the other party",
"choices": []
},
{
"name": "is_mutual",
"label": "Is Mutual",
"type": "boolean",
"required": false,
"description": "",
"choices": []
}
]
}
]
}
]
}
],
"can_edit": true
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Tree depth limit. Omitted = full tree. 0 = roots only.
Include attribute definitions per content type node. Default: true.
Content type path(s) to filter (comma-separated).
When provided, filter the catalog to content types found in a first-pass retrieval for this query. Without this parameter, the full company catalog is returned (existing behavior).