Skip to main content
After you submit documents, an operator runs the evaluation in the TruEnroll UI. You can retrieve the results and download reports through the Partner API. These endpoints do not start an evaluation. Do not add evaluation to an upload’s features array. The JSON response includes candidate, institution, and qualification details alongside the evaluated results. You do not need to call /extraction first.

Integration flow

  1. Submit documents with POST /cases and retain the returned caseId and uploadId. For a case an operator created in TruEnroll, use its case ID or case number from GET /cases.
  2. Arrange for an operator to evaluate the case in TruEnroll.
  3. Poll GET /cases/{id}/evaluation, or use case.evaluation.completed as a prompt to fetch the current results. Keep polling as a fallback because this event is best-effort.
  4. Download a credential report once its evaluation row has status: "completed".
  5. Poll GET /cases/{id}/evaluation/combined for the combined equivalency. Combined readiness is separate from the JSON evaluation status, so /evaluation can read completed while the combined equivalency is still processing.
  6. Download a combined report once that endpoint reports completed.
All paths below are relative to https://api.truenroll.com/partner/v1.

Get evaluation results

string
required
TruEnroll case ID, or the case number. See Addressing a case.
string
Limit the response to credentials produced by this upload. Available immediately after upload.
string
Limit the response to one credential in this case. Discover credential IDs from the case summary or evaluation response after classification.
Omit both query parameters for the whole case. Send at most one; sending both returns 400. Both identifiers must be 24-character hexadecimal strings; hex digits are accepted in either case. A missing upload or credential, including a deleted credential, returns 404.

Status and targets

data.status aggregates the credentials that can be evaluated: those past extraction and not uncategorized. This is the same rule case.evaluation.completed uses, so the webhook never arrives while this endpoint still reads processing. Every credential is still listed.
  • queued when none of them has been evaluated yet. A credential still being extracted, or an upload still being classified, keeps the case queued, because evaluation work is still coming.
  • completed when every one of them has a completed evaluation.
  • processing otherwise. A credential with evaluations: [] counts as still waiting and holds the aggregate at processing.
Inspect the credentials and rows you need before downloading. The case summary’s processing status is separate from evaluation status. Each credential owns its evaluations array. An unfinished row contains only evaluationId, status, completedAt: null, and targetInstitute. Completed rows also contain equivalency, courses, and note. Reopening an evaluation returns it to processing and hides the completed output until it is completed again. targetInstitute is always present. null identifies the general evaluation. When target institutes are configured, additional rows contain { "id": "...", "name": "..." }. Find the general row by targetInstitute === null; do not rely on array order. Before an operator initiates evaluation, the array can be empty. A credential can have more than one evaluation for the same target. Every endpoint returns the same one: a completed evaluation if there is one, otherwise the first.

Completed response

Response fields

Course grades, points, and credits are evaluated output. Use extraction results if you also need the transcript’s original values. This response does not include accreditation findings, grade scales, or course codes. Combined equivalency has its own endpoint.

Download a credential report

Send exactly one of these query parameters: Both IDs are 24-character hexadecimal strings and hex digits are accepted in either case. Sending neither or both returns 400. An evaluation not in the case returns 404. An existing unfinished evaluation returns 409.
The response is a binary attachment, not a JSON success envelope. PDF responses use application/pdf; XLSX responses use application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. TruEnroll names the file in the Content-Disposition header (attachment; filename="...", with spaces replaced by underscores). Read the filename from that header rather than deriving one from the request.

Get combined equivalency as JSON

Combined equivalency is the case’s credentials evaluated together against one target, rather than each on its own. This returns that result with the credentials it was built from.
string
Select a target institute from an evaluation row’s targetInstitute.id. Omit for the general combined equivalency. This is an institute ID, not an evaluation ID.
Courses are omitted here; they are the bulk of the payload and /evaluation already carries them. An unknown target institute returns 404.

How this differs from /evaluation

combinedEquivalencies[].credentialIds names the credentials a statement was derived from. It is empty when an operator wrote the statement by hand, because a manual edit does not record its sources. The combined report has the same gap, so treat a populated array as a bonus rather than a guarantee.

Poll this, not the report

A target is completed only when every credential that can be evaluated has a completed evaluation for it and its combined equivalency has been produced. While it is queued or processing, pendingCredentialIds lists the credentials still waiting on an evaluation. It is [] once they are all evaluated. This endpoint returns 200 with a status rather than the 409 the report routes return, which gives you something to poll. Reading it never triggers combined equivalency generation, so polling it has no side effects. /evaluation and /evaluation/combined can disagree, and both are right: every credential can be completed while the combined equivalency for a target is still processing. Check this endpoint before downloading a combined report.

Download a combined report

string
Select a target institute from an evaluation row’s targetInstitute.id. Omit this parameter for the general combined report. This is an institute ID, not an evaluation ID.
These routes serve a report only when the combined equivalency JSON would read completed: There is no webhook for a failed combined equivalency, so watch for failed on the JSON endpoint. An unknown target institute returns 404. The response is a binary PDF or XLSX attachment, named in the Content-Disposition header as above. Poll the combined equivalency JSON rather than retrying these routes to find out when a target is ready.
Poll the JSON endpoint for progress. Each PDF request generates a fresh report with a new report ID and QR verification link. Repeated downloads can produce separately verifiable documents. Request reports when you need a download.

Errors

Both JSON endpoints return 200 with a current status rather than refusing an unfinished result; only the report downloads return 409. An evaluation has no failed status and there is no case.evaluation.failed event. If operator work cannot be completed, the evaluation remains processing. Only the combined equivalency can be failed.