Skip to main content
A case represents a single candidate or evaluation subject and is identified by your externalId. Each time you submit documents for the same externalId, a new upload is added to the existing case. Credentials (extracted documents) accumulate across all uploads.

Create a case / add an upload

If the externalId already exists for your organization, the files are added as a new upload to the existing case. If not, a new case is created.

Request fields

file[]
required
One or more document files. Accepted formats: PDF, PNG, JPG, JPEG, WebP, ZIP. Up to 20 files per request. Max 30 MB per file, 40 MB total payload. Files inside a ZIP that are not of a supported type will appear in the upload’s files[] list but will not be processed. PDFs are limited to 130 pages.
string
required
Your reference for this case: the candidate ID, application number, or any identifier that maps to a person in your system. Unique per organization. Subsequent submissions with the same externalId append to the existing case.
string (JSON array)
Which capabilities to run on this upload. Valid values: "extraction", "forensics", "translation". Defaults to all three when omitted.
boolean
default:"true"
Whether to run AI document classification. When true (default), TruEnroll analyses the uploaded files and splits them into credentials, one per education qualification identified. When false, the requested features run directly against the raw uploaded files instead of classified credentials. Use this only if you know the document type in advance.
object (JSON)
Arbitrary key-value pairs attached to the case. Values must be strings, numbers, or booleans.

Optional headers

string
Makes the upload safe to retry. If a request fails or times out, resend it with the same Idempotency-Key and an identical payload, and TruEnroll returns the original upload instead of creating a duplicate. Reusing a key with a different payload returns 409 Conflict.
A successful submission returns 202 Accepted. The files are accepted and processing runs asynchronously. Watch webhooks or poll GET /cases/{id} for results.

Example

Response fields

boolean
Always true on a successful response.
string
Human-readable confirmation, e.g. "Upload accepted".
object

Get a case

Returns the full case including all uploads and their credentials.

Path parameters

string
required
TruEnroll case ID (caseId) returned when the case was created.

Response fields

object

List cases

Returns all cases for your organization, newest first.

Query parameters

string
Filter by your external reference.
number
Number of results per page. Default: 20, max: 100.
number
Number of results to skip for pagination. Default: 0.

Delete a case

Soft-deletes the case. It no longer appears in list results and subsequent GET requests return 404. A deleted case cannot receive new uploads. Submitting the same externalId after deletion returns 409 Conflict.

Path parameters

string
required
TruEnroll case ID.
Returns 204 No Content on success.

Error codes

Features & limits

Full details on upload constraints and feature capability requirements.