Checklist item statuses follow four values:
approved, rejected, pending, and not_applicable. Use not_applicable for items that are structurally part of a checklist but irrelevant to a specific review — it keeps your completion rates accurate without forcing artificial approvals.1
Create a checklist
A checklist is a reusable template of review items. Call Store the
POST /v2/qc/checklists to define the checklist and its items.Checklists come in two types, set with checklistType (defaults to quality):quality— items are evaluated as simple pass/fail.review— items can be organized into named groups, support N/A responses (allowNA), allow per-item reviewer notes, and can be assigned to roles. Onlyreview-type checklists can back the one-off requests in Step 3.
Optional fields include
description, checklistType, roles, and groupType (alphanumeric or numeric, applicable only to review checklists).cURL
Example Response
id (checklistId) — you will reference it when creating processes and requests.2
Create a QC process
A process links a checklist to a workflow stage and gives reviewers a named entry point for their queue. Call
POST /v2/qc/processes to create the process.Required fields:Optional fields include
description and checklistId. You can create a process without a checklist and link one later via PATCH /v2/qc/processes/{id}.cURL
Example Response
3
Create a QC request
A QC request is the individual review instance for a specific matter or document. Create one manually with
POST /v2/qc/requests for ad-hoc reviews.Required fields:Optional fields include
reviewee (user ID of the person being reviewed) and notes (context for the reviewer).cURL
Example Response
For document-triggered QC reviews, Slate automatically creates QC requests when a file request completes — you do not need to call this endpoint manually. Use the
processId association on your file request configuration to wire up the automatic trigger.4
Retrieve the request and review items
Load the full QC request — including all checklist items and their current statuses — by calling Your reviewer works through each item in the
GET /v2/qc/requests/{qcrID}. Present this data to your reviewer.cURL
Example Response
checklistItems array and records a decision for each one before submitting the overall review decision.5
Submit the review decision
Once the reviewer has evaluated every checklist item, submit the overall decision with
PATCH /v2/qc/requests/{qcrID}. Include the top-level status, the updated checklistItems array with per-item statuses, and optionally reviewedBy (user ID of the reviewer) and notes (rework notes for the request).Example Response
6
Undo a review decision
If a review was submitted in error or new information requires a re-evaluation, reset the request back to After the undo, return to Step 4 to reload the request and begin a fresh review.
pending by calling POST /v2/qc/requests/{qcrID}/undo. This clears the current decision and all per-item statuses, returning the request to its original reviewable state.cURL
Example Response
List and report on QC activity
To build reviewer queues and dashboards, use the list endpoints. Each requires anowner and returns its results under a named array alongside a pagination object:
GET /v2/qc/checklistsreturnsqcChecklists.GET /v2/qc/requestsreturnsqcRequests(filter bystatus,checklistType,review.shortId,actor,reviewedBy, and more).GET /v2/qc/processesreturnsqcProcesses.GET /v2/qc/feedbackreturnsqcRequestswith extended reporting metadata (“List all QC requests and checklists for reporting”), filterable byreviewedFrom/reviewedTo,processName,roleId, andstatus.
limit, cursor, orderBy, orderDirection). The pagination object carries nextCursor, previousCursor, and totalCount — pass a non-empty nextCursor back as the cursor query parameter to fetch the next page.
All paths in this guide are relative to the QC base URL,
https://api.slate.inc/qc (UAT: https://api.uat.slate.inc/qc). A full request URL therefore looks like https://api.slate.inc/qc/v2/qc/requests.