Uploads documents and initiates compliance analysis in a single call. Two mutually exclusive submission modes. Endpoint: POST /v1/documents/submit (Company Key) — multipart/form-data
Partner ──POST /v1/documents/submit──> API ──> Validate files (max 50MB each)
                                           ──> Validate complianceFrameworkId + controlId (Mode A)
                                           ──> Create or append to Compliance Review
                                           ──> Upload and convert documents to PDF
                                           ──> Queue for async compliance analysis
       <── 200 OK ──────────────────── API
           { documentId, complianceReviewId, status: "Pending",
             files, controlItemCount }
Form data fields:
FieldTypeRequiredDescription
filesFile[]YesFirst = parent doc, rest = appendices
businessEntityIdstringXORCreates new compliance review
complianceReviewIdstringXORAppends to existing review
complianceFrameworkIdstringWith businessEntityIdFramework to use (from GET /v1/compliance-frameworks)
controlIdstringWith businessEntityIdControl to use (from GET /v1/compliance-frameworks, nested in framework)
selectedControlItemIdsJSON stringNoSubset of control items to evaluate
selectedControlClusterIdsstringOptionalJSON array of cluster ULIDs. All non-obsolete items within those clusters are included. Unioned with selectedControlItemIds if both are provided.
auditLanguageIdstringNoLanguage for analysis output
isConsolidatedboolNoDefault: false
Control Item Selection: Use selectedControlClusterIds, selectedControlItemIds, or both to narrow the analysis scope:
  • Both provided → union of cluster items and individual items
  • Clusters only → all non-obsolete items within those clusters
  • Items only → only those specific items
  • Neither → all non-obsolete items across the entire control (default)
Invalid cluster IDs (not belonging to the active control) return 422. Response (200):
{
  "documentId": "01HXYZ...",
  "complianceReviewId": "01HXYZ...",
  "status": "Pending",
  "files": [
    { "fileName": "policy.pdf", "type": "parent" },
    { "fileName": "appendix.pdf", "type": "child" }
  ],
  "controlItemCount": 15,
  "message": "Document submitted successfully"
}
Constraints:
  • Max 50MB per file
  • Supported formats: PDF, DOCX, XLSX, PPTX
  • businessEntityId and complianceReviewId are mutually exclusive — provide exactly one