Skip to main content
For AI agents: a documentation index is available at https://docs.coverbase.com/llms.txt — this page is also available in markdown by appending .md to the URL.
A document (cbvdoc_...) is an evidence file (SOC 2 report, pentest report, policy, contract, questionnaire, diagram, …) that belongs to a vendor (cbvndr_...). A document can additionally be linked to any number of that vendor’s services (cbsvc_...) and assessments (cbqsrw_...). Use this API to upload a document, attach it where it belongs, list and inspect documents, fetch a short-lived download URL, re-link, and archive. All endpoints are org-scoped to the API key. See API conventions for authentication, IDs, timestamps, idempotency, pagination, and the error envelope.
Smart limits. Uploads are capped at 100 MiB per file. Allowed file types: pdf, doc, docx, rtf, txt, md, xls, xlsx, xlsm, csv, ppt, pptx, png, jpg, jpeg, gif, webp, zip. Anything else is rejected with 400 unsupported_file_type; an oversized file is rejected with 413 file_too_large. List responses page at limit 1–200 (default 50).

Upload a document

POST
POST /v1/documents
Uploads a file and creates a document attached to a vendor. The request is multipart/form-data — send the file plus its links in one call. Returns 201 Created with the document object. After upload, Coverbase asynchronously classifies the document (and, where applicable, runs AI analysis). The returned status reflects this in-progress state; poll GET /v1/documents/{document_id} to observe it settle.

Form fields

file
required
The document file (multipart/form-data part).
string
required
The owning vendor ID (cbvndr_...).
string[]
Service IDs (cbsvc_...) to link the document to. Repeat the form field once per service.
string[]
Assessment IDs (cbqsrw_...) to attach the document to as supporting evidence.
string
Optional document type slug (e.g. soc2_type2_auditor_report, penetration_test_report, commercial_contract). Omit it to let Coverbase infer the type from the file. An unknown slug returns 422 invalid_document_type.
string
Optional display name. Defaults to the uploaded filename.

Headers

string
required
Bearer ak_...
string
Optional. Replaying the same key within 24 hours returns the original 201 body. See Idempotency.

Example request

Example response

201 Created — the document object:

The document object

string
Document ID (cbvdoc_...).
string
Owning vendor ID.
string
Display name.
string
Normalized file extension (no leading dot).
integer
File size in bytes.
string | null
The classified/declared document type slug, or null if not yet classified.
string | null
Processing status (e.g. created, analyzing, complete).
string[]
Linked service IDs.
string[]
Assessments the document is attached to.
integer
Creation time (Unix epoch seconds).
integer
Last-update time (Unix epoch seconds).

List documents

GET
GET /v1/documents
Returns a paginated list of documents. Combine the filters to narrow the result.
string
Only documents owned by this vendor.
string
Only documents linked to this service.
string
Only documents attached to this assessment.
integer
Page size, 1–200 (default 50).
integer
Pagination offset (default 0).
cURL

Get a document

GET
GET /v1/documents/{document_id}
Returns a single document’s metadata and links, or 404 document_not_found.
cURL

Download a document

GET
GET /v1/documents/{document_id}/download
Returns a short-lived (one hour) presigned URL for the document’s file. Follow the returned url with a plain GET (no Authorization header) to fetch the bytes — it serves the file as an attachment with the original filename.
cURL

Update a document

PATCH
PATCH /v1/documents/{document_id}
Updates the name, type, and links. All fields are optional; omitted fields are left unchanged. Supplying a list for service_ids / assessment_ids replaces the existing set (pass [] to clear it).
string
Replacement display name.
string
Replacement document type slug.
string[]
Replaces the set of linked services.
string[]
Replaces the set of attached assessments.
cURL

Archive a document

DELETE
DELETE /v1/documents/{document_id}
Archives (soft-deletes) the document. The underlying record is retained for audit but no longer appears in list results.
cURL

Attaching documents to assessments

There are two ways to link a document to an assessment:
  1. At upload time — pass assessment_ids to POST /v1/documents (or service_ids to attach to services).
  2. At assessment-create time — upload the document first, then pass its ID in supporting_document_ids when calling POST /v1/assessments.
  3. LaterPATCH /v1/documents/{document_id} with assessment_ids / service_ids.

Errors

See the error envelope for the response shape.