Skip to the content
Menu: Results

Results

Results, reports, certificates and completion records.

GET/v1/results/{id}

Get a result

getResultresults:readread: 600/min per keySince 2026-10-01

Numbers follow the released rule: nothing while a reviewer still decides a scored attempt or the organisation shares results through a person only, nothing for a void, the reviewer's decision once decided. A practice attempt is the person's own and is never listed; a candidate's interview or any other job interview isn't a result here.

Path parameters

  • idstringrequired

    Result id (res_…); the id without its prefix is accepted too.

Returns

200 The result. data is Result.

Fields of data
  • idstringrequired

    res_ + the session's id.

    pattern `^res_.*`

  • sessionIdstring | nullrequired
  • portalIdstring | nullrequired

    The portal it was started from (portal_…; bare for keys on 2026-07-08).

  • subjectIdstring | nullrequired

    sub_… (bare for keys on 2026-07-08).

  • subjectNamestring | nullrequired
  • kindstring | nullrequired

    What the subject is: assessor, roleplay, tutor, …

  • personobject | nullrequired
    • idstringrequired

      Person id (usr_…).

      pattern `^usr_.*`

    • externalIdstring | nullrequired

      Your own id for them; only for a key holding people:read.

  • unitIdstring | nullrequired
  • startedAtstring (date-time) | nullrequired
  • endedAtstring (date-time) | nullrequired
  • durationSecondsinteger | nullrequired
  • scoredbooleanrequired

    A scored attempt (an assessment); its numbers follow the released rule.

  • release"not_scored" | "awaiting_review" | "reviewers_only" | "voided" | "released"required

    not_scored (a role-play, a lesson: its numbers are the report's); awaiting_review (a reviewer still decides it); reviewers_only (results go to the person through a reviewer only); voided; released.

  • scorenumber | nullrequired

    0-100: the released percent of a scored attempt, else the report's overall. Null while not released.

  • percentnumber | nullrequired
  • passedboolean | nullrequired
  • passMarknumber | nullrequired
  • scenarioobject | nullrequired
    • idstringrequired
    • titlestringrequired
  • questionSetobject | nullrequired
    • idstringrequired
    • titlestringrequired
  • difficultystring | nullrequired
  • categoriesobject[]required

    The rubric's categories with evidence, 0-100. Empty while not released.

    • idstringrequired
    • labelstringrequired
    • scorenumberrequired
  • reviewobject | nullrequired

    A reviewer's decision; null while the result is held for a reviewer or kept from the person (it would say pass or fail).

    • decisionstring | nullrequired

      confirm, pass, not_yet or void.

    • decidedAtstring (date-time)required

      ISO 8601 UTC timestamp.

    • reviewerobject | nullrequired
      • idstringrequired

        Person id (usr_…).

        pattern `^usr_.*`

    • correctedbooleanrequired

      The reviewer corrected marks.

  • contestobject | nullrequired

    The person asked for another look (never their words).

    • atstring (date-time)required

      ISO 8601 UTC timestamp.

    • openbooleanrequired
  • certificateobject | nullrequired

    The certificate; null while the result is held for a reviewer or kept from the person.

    • idstringrequired

      Certificate id (cert_…).

      pattern `^cert_.*`

    • numberstringrequired
    • status"valid" | "expired" | "withdrawn"required
    • validUntilstring | nullrequired
    • verifyUrlstringrequired
  • completionobject | nullrequired

    The completion record; null while the result is held for a reviewer or kept from the person.

    • status"recorded" | "withdrawn"required
    • atstring (date-time)required

      ISO 8601 UTC timestamp.

  • reportAvailablebooleanrequired

    A written report exists (GET /results/{id}/report, with transcripts:read, where the rules allow the words).

  • erasedbooleanrequired

    The retention job took the conversation's words out.

  • updatedAtstring (date-time)required

    ISO 8601 UTC timestamp.

Errors

invalid_requestunauthorizedforbiddenupgrade_requirednot_foundrate_limitedserver_error

Request

curl "https://app.zentiqai.com/v1/results/res_123" \
  -H "Authorization: Bearer $ZENTIQ_API_KEY"
Example answer
Response
{
  "data": {
    "id": "res_cmfq2b7x10000abcd1234",
    "sessionId": "sess_cmfq2b7x10000abcd1234",
    "portalId": "portal_cmfq2b7x10000abcd1234",
    "subjectId": "sub_cmfq2b7x10000abcd1234",
    "subjectName": "…",
    "kind": "roleplay"
  },
  "error": null,
  "requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}
GET/v1/results/{id}/report

A result's written report

getResultReportresults:readtranscripts:readread: 600/min per keySince 2026-10-01Beta

The report's words: its summary, strengths, what to work on and the next step. Only where the conversation itself may be read (never a young learner's, nor a website visitor's who said they are under 18: 403 learner_conversation), once the result is released; a subject that keeps nothing has no words.

Path parameters

  • idstringrequired

    Result id (res_…); the id without its prefix is accepted too.

Returns

200 The report's words. data is ResultReport.

Fields of data
  • resultIdstringrequired

    Result id (res_…).

    pattern `^res_.*`

  • summarystring | nullrequired
  • strengthsstring[]required
  • workOnstring[]required
  • nextstring | nullrequired

Errors

invalid_requestunauthorizedforbiddenupgrade_requiredcandidate_interviewlearner_conversationnot_foundrate_limitedserver_error

Request

curl "https://app.zentiqai.com/v1/results/res_123/report" \
  -H "Authorization: Bearer $ZENTIQ_API_KEY"
Example answer
Response
{
  "data": {
    "resultId": "res_cmfq2b7x10000abcd1234",
    "summary": "…",
    "strengths": [
      "…"
    ],
    "workOn": [
      "…"
    ],
    "next": "…"
  },
  "error": null,
  "requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d"
}
GET/v1/results

List results

listResultsresults:readread: 600/min per keySince 2026-10-01

Newest first. Numbers follow the released rule: nothing while a reviewer still decides a scored attempt or the organisation shares results through a person only, nothing for a void, the reviewer's decision once decided. A practice attempt is the person's own and is never listed; a candidate's interview or any other job interview isn't a result here. updatedAfter lists what changed since (a review, a certificate, a completion): for syncing.

Query parameters

  • limitinteger

    Page size, 1-200 (default 50).

  • cursorstring
  • portalIdstring

    Portal id (portal_…).

  • subjectIdstring

    Subject id (sub_…).

  • unitIdstring

    Unit id (unit_…).

  • personIdstring

    Person id (usr_…).

  • externalUserIdstring

    The person you know by this id (needs people:read).

  • release"not_scored" | "awaiting_review" | "reviewers_only" | "voided" | "released"
  • passed"true" | "false"
  • fromstring

    Reported at or after.

  • tostring

    Reported before.

  • updatedAfterstring

    Changed since (a report, a review, a contest, a certificate, a completion): for syncing.

Returns

200 A page of results. A page: data is a list of Result, and nextCursor fetches the next page.

Fields of data
  • idstringrequired

    res_ + the session's id.

    pattern `^res_.*`

  • sessionIdstring | nullrequired
  • portalIdstring | nullrequired

    The portal it was started from (portal_…; bare for keys on 2026-07-08).

  • subjectIdstring | nullrequired

    sub_… (bare for keys on 2026-07-08).

  • subjectNamestring | nullrequired
  • kindstring | nullrequired

    What the subject is: assessor, roleplay, tutor, …

  • personobject | nullrequired
    • idstringrequired

      Person id (usr_…).

      pattern `^usr_.*`

    • externalIdstring | nullrequired

      Your own id for them; only for a key holding people:read.

  • unitIdstring | nullrequired
  • startedAtstring (date-time) | nullrequired
  • endedAtstring (date-time) | nullrequired
  • durationSecondsinteger | nullrequired
  • scoredbooleanrequired

    A scored attempt (an assessment); its numbers follow the released rule.

  • release"not_scored" | "awaiting_review" | "reviewers_only" | "voided" | "released"required

    not_scored (a role-play, a lesson: its numbers are the report's); awaiting_review (a reviewer still decides it); reviewers_only (results go to the person through a reviewer only); voided; released.

  • scorenumber | nullrequired

    0-100: the released percent of a scored attempt, else the report's overall. Null while not released.

  • percentnumber | nullrequired
  • passedboolean | nullrequired
  • passMarknumber | nullrequired
  • scenarioobject | nullrequired
    • idstringrequired
    • titlestringrequired
  • questionSetobject | nullrequired
    • idstringrequired
    • titlestringrequired
  • difficultystring | nullrequired
  • categoriesobject[]required

    The rubric's categories with evidence, 0-100. Empty while not released.

    • idstringrequired
    • labelstringrequired
    • scorenumberrequired
  • reviewobject | nullrequired

    A reviewer's decision; null while the result is held for a reviewer or kept from the person (it would say pass or fail).

    • decisionstring | nullrequired

      confirm, pass, not_yet or void.

    • decidedAtstring (date-time)required

      ISO 8601 UTC timestamp.

    • reviewerobject | nullrequired
      • idstringrequired

        Person id (usr_…).

        pattern `^usr_.*`

    • correctedbooleanrequired

      The reviewer corrected marks.

  • contestobject | nullrequired

    The person asked for another look (never their words).

    • atstring (date-time)required

      ISO 8601 UTC timestamp.

    • openbooleanrequired
  • certificateobject | nullrequired

    The certificate; null while the result is held for a reviewer or kept from the person.

    • idstringrequired

      Certificate id (cert_…).

      pattern `^cert_.*`

    • numberstringrequired
    • status"valid" | "expired" | "withdrawn"required
    • validUntilstring | nullrequired
    • verifyUrlstringrequired
  • completionobject | nullrequired

    The completion record; null while the result is held for a reviewer or kept from the person.

    • status"recorded" | "withdrawn"required
    • atstring (date-time)required

      ISO 8601 UTC timestamp.

  • reportAvailablebooleanrequired

    A written report exists (GET /results/{id}/report, with transcripts:read, where the rules allow the words).

  • erasedbooleanrequired

    The retention job took the conversation's words out.

  • updatedAtstring (date-time)required

    ISO 8601 UTC timestamp.

Errors

invalid_requestunauthorizedforbiddenupgrade_requiredrate_limitedserver_error

Request

curl "https://app.zentiqai.com/v1/results?limit=20" \
  -H "Authorization: Bearer $ZENTIQ_API_KEY"
Example answer
Response
{
  "data": [
    {
      "id": "res_cmfq2b7x10000abcd1234",
      "sessionId": "sess_cmfq2b7x10000abcd1234",
      "portalId": "portal_cmfq2b7x10000abcd1234",
      "subjectId": "sub_cmfq2b7x10000abcd1234",
      "subjectName": "…",
      "kind": "roleplay"
    }
  ],
  "error": null,
  "requestId": "req_4f1c2e9a7b3d5e6f7a8b9c0d",
  "nextCursor": null
}