Skip to main content
This guide walks you through a typical workflow for a document processing order. With this workflow, document processing begins running after you upload documents to the KarmaCheck system and create the order. By the end of this guide, you’ll know how to:
  1. Authenticate with KarmaCheck.
  2. Upload documents and create a secure document record for each one.
  3. Order document processing by providing the candidate’s PII and order data with the secure document record IDs.
  4. Retrieve document processing results and receive status updates.

Before you begin

Ensure that you have the following sandbox credentials:
  • An API key
  • A client access token
How you obtain these credentials depends on whether you’re a customer or a partner.

Step 1: Authenticate with KarmaCheck

Call POST /auth/api to retrieve an authentication token. Replace API_KEY and CLIENT_ACCESS_TOKEN with your credentials:
The response body contains your authentication token in the token field. Use this as Bearer AUTHENTICATION_TOKEN in all subsequent requests.

Step 2: Order document processing

Step 2a: Upload your documents to KarmaCheck

This step references the full Upload documents guide. The key flow is:
  1. Request upload URLs — Call POST /document/secure/upload to generate a secure, time-limited upload URL and fileKey for each document.
  2. Upload documents — Upload each file directly to the returned URL using an HTTP PUT request with the correct Content-Type.
  3. Create secure document records — Call POST /document/secure/create with the fileKey, documentTypeId, and originalFileName.
At this point you will not yet have a caseId. When no order exists yet, omit the accessGrants object from the request.
  1. Note the secureDocumentId returned for each document — you’ll pass these when creating the order.
For request examples, supported MIME types, and error handling, see Upload documents.

Step 2b: Get available packages

Call GET /package/min/list to get a list of available packages:
Find the package named Intelligent Document Processing and note its id.

Step 2c: Get services in the package

Call GET /package/id/{packageId}/services to retrieve the services included in the package:
Note the serviceId of the Document Processing service (service-intelligent-document-process). You’ll need this when providing order data.

Step 2d: Create a document processing order

Call POST /case/create to order document processing. The orderData array must include the minimally required candidate PII types plus one codt-idp entry per document:
orderData fields:
Set disableOptions to 7 to suppress KarmaCheck’s candidate and customer notification emails for a document processing order. Because document processing is not a background-check screening, candidates should not receive the standard screening invitation or status-update emails. disableOptions is a bitmask that combines candidate invitation (1), candidate status updates (2), and customer notifications (4); a value of 7 disables all three. Omit the field or set it to 0 to keep notifications enabled.
postbackUrl is for testing purposes only and supports only case.statuschange events. To configure webhooks for production, contact KarmaCheck to subscribe to webhook events.
A successful response returns the caseId of the order. Note this value — you’ll use it to retrieve results.

Step 3: Retrieve document processing results

Call GET /case/id/{caseId}/data/{serviceTypeId} using service-type-document-processing as the serviceTypeId:
The response returns a list of case data objects — one per document ordered. Key response fields: Example response:

Step 4: Receive status updates (optional)

If you provided a postbackUrl when creating the order, KarmaCheck sends a POST request to that URL whenever the order status changes. Example webhook payload:
Respond with an HTTP 2xx status to confirm receipt. If KarmaCheck does not receive a 2xx response, it will retry the delivery after a delay. See the webhooks overview for more details. If you don’t have a webhook set up, poll GET /case/id/{caseId} to retrieve the current status of the order.