> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nitsor.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Every page in this documentation carries a `plans` list in its frontmatter and a page-details table naming the plans its content applies to: `All plans`, or a subset of `Community`, `Team` and `Enterprise`. A page limited to some plans also opens with a plan marker naming them.
> Use [Capabilities and limits](/product-status) for capability entitlements and documented availability and limits, and [Plans and billing](/plans-and-billing) for plan pricing and billing policy. Those pages are canonical; do not duplicate their policy values here.
> Reading this documentation grants no product access and no permission. No agent can create or approve a Nitsor release.

# Read the model label outcomes one Task recorded



## OpenAPI

````yaml /openapi.json get /api/v1/model-label-outcomes/task
openapi: 3.1.1
info:
  title: Nitsor public API
  version: v1
  description: Generated from the Nitsor API contract; never edit by hand.
  x-nitsor-product-version: 0.1.0
servers:
  - url: https://api.nitsor.com
    description: Nitsor API
security:
  - bearerAuth: []
tags:
  - name: auth
    description: 'Authentication: the session a bearer credential reaches.'
  - name: blind-checks
    description: >-
      Blind checks: scans labelled without seeing the model, scored against it
      under a readiness plan fixed before checking starts. Plan writes need a
      person's own token, and these routes do not accept one yet; an Agent token
      is refused, so change plans on the Pipeline tab meanwhile.
  - name: capabilities
    description: 'Capability discovery: versions, limits and formats.'
  - name: datasets
    description: 'Datasets: named selections over a project''s version graph.'
  - name: decisions
    description: Audit decisions behind authorization refusals.
  - name: executions
    description: Pipeline executions and their work items.
  - name: ledger
    description: Account ledger entries.
  - name: model-label-outcomes
    description: >-
      Model label outcomes: what people did with each label a model proposed,
      per Task and per Proposal.
  - name: model-runs
    description: >-
      Model runs a person starts on Tasks: the estimate to confirm, and the
      start that runs one scan at a time.
  - name: openapi
    description: The OpenAPI description this deployment serves.
  - name: project-groups
    description: 'Project groups: the account''s shared folders on the project shelf.'
  - name: projects
    description: 'Projects: creation and listing.'
  - name: requests
    description: 'Async Requests: status, listing, cancel and the per-item report.'
  - name: service-accounts
    description: >-
      Service accounts and their tokens: the machine identities jobs run as,
      managed by a person holding service-accounts:manage on their own token. A
      secret is shown once, on the answer that created it. A service account's
      access to a project is given, changed and removed by that project's
      admins, with a personal token holding admin there.
  - name: sources
    description: Sources and mask-read presigning.
  - name: storage-connections
    description: >-
      Storage connections to customer object storage, and the
      operator-provisioned credential handles they name.
  - name: task-comments
    description: Task comments, replies and attention.
  - name: taxonomy
    description: Taxonomy definitions, display groups and binding.
  - name: version-graph
    description: Version-graph commits, branches, landmarks and merges.
  - name: workflow
    description: Workflow definition and binding.
paths:
  /api/v1/model-label-outcomes/task:
    get:
      tags:
        - model-label-outcomes
      summary: Read the model label outcomes one Task recorded
      operationId: modelLabelOutcomesTask
      parameters:
        - in: query
          name: projectId
          schema:
            type: string
            minLength: 1
            maxLength: 200
            x-nitsor-trim: true
          required: true
        - in: query
          name: taskId
          schema:
            type: string
            minLength: 1
            maxLength: 200
            x-nitsor-trim: true
          required: true
        - in: query
          name: cursor
          schema:
            $ref: '#/components/schemas/Cursor'
        - in: query
          name: limit
          schema:
            $ref: '#/components/schemas/PageLimit'
      responses:
        '200':
          description: Read the model label outcomes one Task recorded
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
            Nitsor-Token-Expires:
              $ref: '#/components/headers/TokenExpires'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelLabelOutcomeTaskResponse'
        '400':
          $ref: '#/components/responses/NitsorErrorAuthenticated'
        '401':
          $ref: '#/components/responses/NitsorError'
        '403':
          $ref: '#/components/responses/NitsorErrorAuthenticated'
        '404':
          $ref: '#/components/responses/NitsorErrorAuthenticated'
        '405':
          $ref: '#/components/responses/NitsorError'
        '409':
          $ref: '#/components/responses/NitsorErrorAuthenticated'
        '413':
          $ref: '#/components/responses/NitsorErrorAuthenticated'
        '422':
          $ref: '#/components/responses/NitsorErrorAuthenticated'
        '429':
          $ref: '#/components/responses/NitsorErrorAuthenticated'
components:
  schemas:
    Cursor:
      type: string
      minLength: 1
    PageLimit:
      type: integer
      minimum: 1
      maximum: 100
    ModelLabelOutcomeTaskResponse:
      type: object
      properties:
        state:
          type: string
          enum:
            - recorded
            - task_open
            - pending
            - failed
            - sent_back
            - not_recorded
            - no_model_labels
        standing:
          anyOf:
            - type: string
              enum:
                - final
                - provisional
                - superseded
            - type: 'null'
        supersededByTaskId:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        failure:
          anyOf:
            - type: object
              properties:
                message:
                  type: string
                attempts:
                  type: integer
                  exclusiveMinimum: 0
              required:
                - message
                - attempts
            - type: 'null'
        task:
          anyOf:
            - $ref: '#/components/schemas/ModelLabelOutcomeTask'
            - type: 'null'
        items:
          type: array
          items:
            $ref: '#/components/schemas/ModelLabelOutcomeTaskResponseItems'
        nextCursor:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - state
        - standing
        - supersededByTaskId
        - failure
        - task
        - items
        - nextCursor
    ModelLabelOutcomeTask:
      type: object
      properties:
        taskId:
          type: string
          minLength: 1
        projectId:
          type: string
          minLength: 1
        assetId:
          type: string
          minLength: 1
        approval:
          type: string
          enum:
            - approved
            - submitted
        finalApproval:
          type: boolean
        lineageRootTaskId:
          type: string
          minLength: 1
        jobs:
          minItems: 1
          type: array
          items:
            type: object
            properties:
              jobId:
                type: string
                minLength: 1
              jobStatus:
                type: string
                enum:
                  - submitted
                  - running
                  - succeeded
                  - failed
                  - refused
              runId:
                anyOf:
                  - type: string
                    minLength: 1
                  - type: 'null'
              modelSetupVersion:
                $ref: '#/components/schemas/ModelSetupVersion'
            required:
              - jobId
              - jobStatus
              - runId
              - modelSetupVersion
        position:
          type: object
          properties:
            branchId:
              type: string
              minLength: 1
            eventSeq:
              type: integer
              minimum: 0
          required:
            - branchId
            - eventSeq
        grid:
          $ref: '#/components/schemas/ModelLabelOutcomeTaskGrid'
        counts:
          type: object
          properties:
            keptAsIs:
              type: integer
              minimum: 0
            styleFix:
              type: integer
              minimum: 0
            smallFix:
              type: integer
              minimum: 0
            bigFix:
              type: integer
              minimum: 0
            deleted:
              type: integer
              minimum: 0
            wrongClass:
              type: integer
              minimum: 0
            missed:
              type: integer
              minimum: 0
            notRecorded:
              type: integer
              minimum: 0
            pendingRunPlane:
              type: integer
              minimum: 0
            notComparable:
              type: integer
              minimum: 0
          required:
            - keptAsIs
            - styleFix
            - smallFix
            - bigFix
            - deleted
            - wrongClass
            - missed
            - pendingRunPlane
            - notComparable
        interventions:
          type: object
          properties:
            edits:
              $ref: '#/components/schemas/ModelLabelInterventionCount'
            deletions:
              $ref: '#/components/schemas/ModelLabelInterventionCount'
            additions:
              $ref: '#/components/schemas/ModelLabelInterventionCount'
            reprompts:
              $ref: '#/components/schemas/ModelLabelInterventionCount'
            sendBacks:
              $ref: '#/components/schemas/ModelLabelInterventionCount'
          required:
            - edits
            - deletions
            - additions
            - reprompts
            - sendBacks
        scanFailed:
          anyOf:
            - type: boolean
            - type: 'null'
        unattributedMisses:
          type: array
          items:
            type: object
            properties:
              jobId:
                type: string
                minLength: 1
              classId:
                type: string
                minLength: 1
              count:
                type: integer
                exclusiveMinimum: 0
              annotationIds:
                maxItems: 32
                type: array
                items:
                  type: string
                  minLength: 1
            required:
              - jobId
              - classId
              - count
              - annotationIds
        activeTime:
          $ref: '#/components/schemas/ModelLabelActiveTime'
        rulesVersion:
          type: string
          minLength: 1
        thresholds:
          anyOf:
            - $ref: '#/components/schemas/ModelLabelOutcomeThresholds'
            - type: 'null'
        createdAt:
          $ref: '#/components/schemas/UtcTimestamp'
      required:
        - taskId
        - projectId
        - assetId
        - approval
        - finalApproval
        - lineageRootTaskId
        - jobs
        - position
        - grid
        - counts
        - interventions
        - scanFailed
        - activeTime
        - rulesVersion
        - createdAt
    ModelLabelOutcomeTaskResponseItems:
      oneOf:
        - $ref: '#/components/schemas/ModelLabelOutcomeRecord'
        - $ref: '#/components/schemas/FinalLabelOutcomeRecord'
      type: object
      discriminator:
        propertyName: kind
        mapping:
          model_label: '#/components/schemas/ModelLabelOutcomeRecord'
          final_label: '#/components/schemas/FinalLabelOutcomeRecord'
    NitsorError:
      anyOf:
        - $ref: '#/components/schemas/ErrorAuthorizationDenied'
        - $ref: '#/components/schemas/ErrorValidation'
        - $ref: '#/components/schemas/ErrorNotFound'
        - $ref: '#/components/schemas/ErrorAuth'
        - $ref: '#/components/schemas/ErrorMethodNotAllowed'
        - $ref: '#/components/schemas/ErrorCheckpointRequired'
        - $ref: '#/components/schemas/ErrorManifest'
        - $ref: '#/components/schemas/ErrorDomain'
    ModelSetupVersion:
      oneOf:
        - $ref: '#/components/schemas/ModelSetupVersionRecorded'
        - $ref: '#/components/schemas/ModelSetupVersionNotRecorded'
      type: object
      discriminator:
        propertyName: state
        mapping:
          recorded: '#/components/schemas/ModelSetupVersionRecorded'
          not_recorded: '#/components/schemas/ModelSetupVersionNotRecorded'
    ModelLabelOutcomeTaskGrid:
      oneOf:
        - $ref: '#/components/schemas/ModelLabelOutcomeTaskGridResolved'
        - $ref: '#/components/schemas/ModelLabelOutcomeTaskGridUnavailable'
      type: object
      discriminator:
        propertyName: state
        mapping:
          resolved: '#/components/schemas/ModelLabelOutcomeTaskGridResolved'
          unavailable: '#/components/schemas/ModelLabelOutcomeTaskGridUnavailable'
    ModelLabelInterventionCount:
      oneOf:
        - $ref: '#/components/schemas/ModelLabelInterventionCountRecorded'
        - $ref: '#/components/schemas/ModelLabelInterventionCountNotRecorded'
      type: object
      discriminator:
        propertyName: state
        mapping:
          recorded: '#/components/schemas/ModelLabelInterventionCountRecorded'
          not_recorded: '#/components/schemas/ModelLabelInterventionCountNotRecorded'
    ModelLabelActiveTime:
      oneOf:
        - $ref: '#/components/schemas/ModelLabelActiveTimeRecorded'
        - $ref: '#/components/schemas/ModelLabelActiveTimeNotRecorded'
      type: object
      discriminator:
        propertyName: state
        mapping:
          recorded: '#/components/schemas/ModelLabelActiveTimeRecorded'
          not_recorded: '#/components/schemas/ModelLabelActiveTimeNotRecorded'
    ModelLabelOutcomeThresholds:
      type: object
      properties:
        defaults:
          type: object
          properties:
            boxSmallFixMinIou:
              type: number
              minimum: 0
              maximum: 1
            contourStyleFixMinSurfaceDice:
              type: number
              minimum: 0
              maximum: 1
            contourSmallFixMinSurfaceDice:
              type: number
              minimum: 0
              maximum: 1
            keypointSmallFixRadiusMm:
              anyOf:
                - type: number
                  exclusiveMinimum: 0
                - type: 'null'
          required:
            - boxSmallFixMinIou
            - contourStyleFixMinSurfaceDice
            - contourSmallFixMinSurfaceDice
            - keypointSmallFixRadiusMm
        categories:
          type: array
          items:
            type: object
            properties:
              classId:
                type: string
                minLength: 1
              boxSmallFixMinIou:
                type: number
                minimum: 0
                maximum: 1
              contourStyleFixMinSurfaceDice:
                type: number
                minimum: 0
                maximum: 1
              contourSmallFixMinSurfaceDice:
                type: number
                minimum: 0
                maximum: 1
              keypointSmallFixRadiusMm:
                anyOf:
                  - type: number
                    exclusiveMinimum: 0
                  - type: 'null'
            required:
              - classId
              - boxSmallFixMinIou
              - contourStyleFixMinSurfaceDice
              - contourSmallFixMinSurfaceDice
              - keypointSmallFixRadiusMm
      required:
        - defaults
        - categories
    UtcTimestamp:
      type: string
      format: date-time
      pattern: >-
        ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|[+-]00:00))$
      description: >-
        RFC 3339 timestamp in UTC: the offset is `Z` or `+00:00`; any other
        offset is refused.
    ModelLabelOutcomeRecord:
      type: object
      properties:
        kind:
          type: string
          const: model_label
        taskId:
          type: string
          minLength: 1
        jobId:
          type: string
          minLength: 1
        proposalId:
          type: string
          minLength: 1
        componentId:
          type: string
          minLength: 1
        annotationId:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        modelFamily:
          type: string
          minLength: 1
        modelVersion:
          type: string
          minLength: 1
        modelSetupVersion:
          $ref: '#/components/schemas/ModelSetupVersion'
        modelClassId:
          type: string
          minLength: 1
        finalClassId:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        outcome:
          anyOf:
            - type: string
              enum:
                - kept_as_is
                - style_fix
                - small_fix
                - big_fix
                - deleted
                - wrong_class
                - missed
            - type: 'null'
        scoring:
          type: string
          enum:
            - scored
            - not_recorded
            - pending_run_plane
            - not_comparable
        scoringGap:
          anyOf:
            - type: string
              enum:
                - mask_scorer_not_built
                - admission_budget_exceeded
                - measure_budget_exceeded
                - mask_baseline_unsealed
            - type: 'null'
        deletedVia:
          anyOf:
            - type: string
              enum:
                - discarded
                - deleted_after_import
                - not_imported
            - type: 'null'
        deletionReason:
          anyOf:
            - type: string
            - type: 'null'
        disposition:
          anyOf:
            - type: string
              enum:
                - accepted
                - corrected
            - type: 'null'
        opened:
          type: string
          enum:
            - opened
            - never_opened
            - not_recorded
        editSize:
          anyOf:
            - $ref: '#/components/schemas/ModelLabelEditSize'
            - type: 'null'
        helperSources:
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/MaskHelperSource'
            - type: 'null'
        helperSourcesGap:
          anyOf:
            - type: string
              enum:
                - event_window_exceeds_scan
                - no_reprompt_event
            - type: 'null'
        measure:
          anyOf:
            - $ref: '#/components/schemas/ModelLabelMeasure'
            - type: 'null'
        beforeGeometryHash:
          type: string
          minLength: 1
        afterGeometryHash:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        approval:
          type: string
          enum:
            - approved
            - submitted
        standing:
          type: string
          enum:
            - final
            - provisional
            - superseded
        createdAt:
          $ref: '#/components/schemas/UtcTimestamp'
      required:
        - kind
        - taskId
        - jobId
        - proposalId
        - componentId
        - annotationId
        - modelFamily
        - modelVersion
        - modelSetupVersion
        - modelClassId
        - finalClassId
        - outcome
        - scoring
        - deletedVia
        - deletionReason
        - disposition
        - opened
        - editSize
        - beforeGeometryHash
        - afterGeometryHash
        - approval
        - standing
        - createdAt
    FinalLabelOutcomeRecord:
      type: object
      properties:
        kind:
          type: string
          const: final_label
        taskId:
          type: string
          minLength: 1
        jobId:
          type: string
          minLength: 1
        annotationId:
          type: string
          minLength: 1
        finalClassId:
          type: string
          minLength: 1
        outcome:
          anyOf:
            - type: string
              const: missed
            - type: 'null'
        scoring:
          type: string
          enum:
            - scored
            - not_recorded
            - pending_run_plane
            - not_comparable
        scoringGap:
          anyOf:
            - type: string
              enum:
                - mask_scorer_not_built
                - admission_budget_exceeded
                - measure_budget_exceeded
                - mask_baseline_unsealed
            - type: 'null'
        afterGeometryHash:
          type: string
          minLength: 1
        approval:
          type: string
          enum:
            - approved
            - submitted
        standing:
          type: string
          enum:
            - final
            - provisional
            - superseded
        createdAt:
          $ref: '#/components/schemas/UtcTimestamp'
      required:
        - kind
        - taskId
        - jobId
        - annotationId
        - finalClassId
        - outcome
        - scoring
        - afterGeometryHash
        - approval
        - standing
        - createdAt
    ErrorAuthorizationDenied:
      type: object
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        retryable:
          type: boolean
        reason:
          type: string
          minLength: 1
        code:
          type: string
          const: AUTHORIZATION_DENIED
        decisionId:
          type: string
          minLength: 1
        message:
          type: string
          minLength: 1
        missingScope:
          type: string
          minLength: 1
      required:
        - requestId
        - retryable
        - code
        - message
        - missingScope
    ErrorValidation:
      type: object
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        retryable:
          type: boolean
        reason:
          type: string
          minLength: 1
        code:
          type: string
          const: INVALID_ARGUMENT
        fieldPath:
          type: string
          minLength: 1
        message:
          type: string
          minLength: 1
        remediation:
          type: string
          minLength: 1
      required:
        - requestId
        - retryable
        - code
        - message
    ErrorNotFound:
      type: object
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        retryable:
          type: boolean
        reason:
          type: string
          minLength: 1
        code:
          type: string
          const: ACCOUNT_NOT_FOUND
        message:
          type: string
          minLength: 1
      required:
        - requestId
        - retryable
        - code
        - message
    ErrorAuth:
      type: object
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        retryable:
          type: boolean
        reason:
          type: string
          minLength: 1
        code:
          type: string
          enum:
            - AUTH_REQUIRED
            - AUTH_INVALID_TOKEN
        expiredAt:
          $ref: '#/components/schemas/UtcTimestamp'
        message:
          type: string
          minLength: 1
        remediation:
          type: string
          minLength: 1
      required:
        - requestId
        - retryable
        - code
        - message
        - remediation
    ErrorMethodNotAllowed:
      type: object
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        retryable:
          type: boolean
        reason:
          type: string
          minLength: 1
        code:
          type: string
          const: METHOD_NOT_ALLOWED
        message:
          type: string
          minLength: 1
        remediation:
          type: string
          minLength: 1
      required:
        - requestId
        - retryable
        - code
        - message
        - remediation
    ErrorCheckpointRequired:
      type: object
      properties:
        branchId:
          type: string
          minLength: 1
          maxLength: 200
          x-nitsor-trim: true
        headEventSeq:
          type: integer
          exclusiveMinimum: 0
        lastEventSeq:
          type: integer
          exclusiveMinimum: 0
        maxUncommittedEvents:
          type: number
          const: 256
        requestId:
          $ref: '#/components/schemas/RequestId'
        retryable:
          type: boolean
        reason:
          type: string
          minLength: 1
        code:
          type: string
          const: CHECKPOINT_REQUIRED
        message:
          type: string
          minLength: 1
        remediation:
          type: string
          minLength: 1
      required:
        - branchId
        - headEventSeq
        - lastEventSeq
        - maxUncommittedEvents
        - requestId
        - retryable
        - code
        - message
        - remediation
    ErrorManifest:
      type: object
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        retryable:
          type: boolean
        reason:
          type: string
          minLength: 1
        code:
          type: string
          const: NO_VALID_DICOM_SLICES
        manifest:
          type: array
          items:
            $ref: '#/components/schemas/SourceManifestEntry'
        message:
          type: string
          minLength: 1
        remediation:
          type: string
          minLength: 1
      required:
        - requestId
        - retryable
        - code
        - manifest
        - message
        - remediation
    ErrorDomain:
      type: object
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        retryable:
          type: boolean
        reason:
          type: string
          minLength: 1
        code:
          type: string
          enum:
            - API_ERROR
            - API_UNREACHABLE
            - CORRUPT_DICOM
            - CORRUPT_TIFF_STACK
            - CORRUPT_VGI
            - DATASET_NAME_CONFLICT
            - DATASET_NOT_FOUND
            - DATASET_REVISION_CONFLICT
            - DATASET_VERSION_NOT_FOUND
            - DATASET_VERSION_RESOLVING
            - DATASET_VERSION_NAME_CONFLICT
            - DATASET_HEAD_UNCOMMITTED
            - DATASET_NO_QUALIFYING_COMMIT
            - DATASET_MEMBERSHIP_UNDECLARED
            - DATASET_HARD_MEMBER_MISSING
            - DATASET_HARD_MEMBER_EXCLUDED
            - DATASET_SELECTION_EMPTY
            - DATASET_OBJECT_MISSING
            - DATASET_OBJECT_CHANGED
            - DATASET_MEMBER_TOO_LARGE
            - DATASET_LAYOUT_UNSATISFIABLE
            - DATASET_BUILD_UNAVAILABLE
            - DATASET_BUILD_INVALID
            - DATASET_FREEZE_TIMEOUT
            - DATASET_MANIFEST_HASH_MISMATCH
            - DATASET_READ_SESSION_NOT_FOUND
            - DATASET_READ_SESSION_CLOSED
            - DATASET_VERSION_REVOKED
            - DATASET_VERSION_TOMBSTONED
            - DATASET_VERSION_CANCELLED
            - DUPLICATE_SOP_INSTANCE_UID
            - GEOMETRY_INCONSISTENT
            - GEOMETRY_OUT_OF_RANGE
            - IDEMPOTENCY_CONFLICT
            - INVALID_JSON
            - MISSING_SLICE
            - MIXED_FORMAT_FAMILIES
            - MODEL_RUN_ESTIMATE_CHANGED
            - MODEL_RUN_MULTI_ITEM_UNSUPPORTED
            - MODEL_RUN_SCAN_TOO_LARGE
            - MODEL_RUN_NOT_OFFERED
            - PROJECT_CREATE_FAILED
            - RATE_LIMITED
            - REQUEST_NOT_CANCELLABLE
            - REQUEST_NOT_FOUND
            - REQUEST_REPORT_EXPIRED
            - SERIES_IDENTITY_MISMATCH
            - SLICE_ORDER_INCONSISTENT
            - SOURCE_LIST_FAILED
            - SOURCE_REGISTER_FAILED
            - SOURCE_VERSION_AMBIGUOUS
            - STORAGE_CONNECTION_REGISTER_FAILED
            - STORAGE_CREDENTIAL_ENVIRONMENT_FORBIDDEN
            - STORAGE_CREDENTIAL_HANDLE_CONFLICT
            - STORAGE_CREDENTIAL_HANDLE_INVALID
            - STORAGE_CREDENTIAL_HANDLE_NOT_FOUND
            - STORAGE_CREDENTIAL_HANDLE_REQUIRED
            - STORAGE_CREDENTIAL_PRESIGN_UNSUPPORTED
            - STORAGE_CREDENTIAL_ROLE_MISMATCH
            - STORAGE_CREDENTIAL_TARGET_MISMATCH
            - STORAGE_CREDENTIAL_UNAVAILABLE
            - STORAGE_CUSTOM_HOSTS_NOT_READY
            - STORAGE_OBJECT_CHANGED_DURING_READ
            - STORAGE_OBJECT_NOT_FOUND
            - STORAGE_OBJECT_TOO_LARGE
            - STORAGE_READ_FAILED
            - UNEXPECTED_ERROR
            - UNKNOWN_COMMAND
            - UNSUPPORTED_PIXEL_FORMAT
            - UNSUPPORTED_TRANSFER_SYNTAX
            - UNSUPPORTED_VGI_SCENE
            - UNRECOGNIZED_FORMAT
            - VERSION_GRAPH_OPERATION_FAILED
            - VGI_VOL_MISMATCH
            - TAXONOMY_OPERATION_FAILED
            - WORKFLOW_OPERATION_FAILED
        message:
          type: string
          minLength: 1
        remediation:
          type: string
          minLength: 1
      required:
        - requestId
        - retryable
        - code
        - message
        - remediation
    ModelSetupVersionRecorded:
      type: object
      properties:
        state:
          type: string
          const: recorded
        version:
          type: string
          minLength: 1
      required:
        - state
        - version
    ModelSetupVersionNotRecorded:
      type: object
      properties:
        state:
          type: string
          const: not_recorded
        reason:
          type: string
          const: run_records_no_setup_version
      required:
        - state
        - reason
    ModelLabelOutcomeTaskGridResolved:
      type: object
      properties:
        state:
          type: string
          const: resolved
        sourceVersionId:
          type: string
          minLength: 1
        toleranceMm:
          type: number
          exclusiveMinimum: 0
      required:
        - state
        - sourceVersionId
        - toleranceMm
    ModelLabelOutcomeTaskGridUnavailable:
      type: object
      properties:
        state:
          type: string
          const: unavailable
        reason:
          type: string
          enum:
            - source_not_registered
            - source_not_viewable
            - no_pixel_spacing
            - slice_positions_missing
            - source_version_ambiguous
        sourceVersionIds:
          type: array
          items:
            type: string
            minLength: 1
      required:
        - state
        - reason
        - sourceVersionIds
    ModelLabelInterventionCountRecorded:
      type: object
      properties:
        state:
          type: string
          const: recorded
        count:
          type: integer
          minimum: 0
      required:
        - state
        - count
    ModelLabelInterventionCountNotRecorded:
      type: object
      properties:
        state:
          type: string
          const: not_recorded
        reason:
          type: string
          enum:
            - event_window_exceeds_scan
            - no_reprompt_event
      required:
        - state
        - reason
    ModelLabelActiveTimeRecorded:
      type: object
      properties:
        state:
          type: string
          const: recorded
        durationMs:
          type: integer
          minimum: 0
        reason:
          type: string
          const: editor_activity
      required:
        - state
        - durationMs
        - reason
    ModelLabelActiveTimeNotRecorded:
      type: object
      properties:
        state:
          type: string
          const: not_recorded
        reason:
          type: string
          enum:
            - no_editor_activity
            - editor_events_untimed
            - activity_over_limit
            - activity_incomplete
      required:
        - state
        - reason
    ModelLabelEditSize:
      type: object
      properties:
        addedPathLengthMm:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
        addedVolumeMl:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
        removedPathLengthMm:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
        removedVolumeMl:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
        shiftMm:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
        surfaceDice:
          type: number
          minimum: 0
          maximum: 1
        toleranceMm:
          type: number
          exclusiveMinimum: 0
      required:
        - addedPathLengthMm
        - addedVolumeMl
        - removedPathLengthMm
        - removedVolumeMl
        - shiftMm
        - surfaceDice
        - toleranceMm
    MaskHelperSource:
      type: string
      enum:
        - interpolation
        - threshold-grow
        - fill-holes
        - remove-islands
    ModelLabelMeasure:
      oneOf:
        - $ref: '#/components/schemas/ModelLabelMeasureBox'
        - $ref: '#/components/schemas/ModelLabelMeasureKeypoint'
      type: object
      discriminator:
        propertyName: kind
        mapping:
          box: '#/components/schemas/ModelLabelMeasureBox'
          keypoint: '#/components/schemas/ModelLabelMeasureKeypoint'
    RequestId:
      type: string
      minLength: 1
      maxLength: 128
      pattern: ^[\x21-\x7e]+$
    SourceManifestEntry:
      type: object
      properties:
        byteSize:
          type: integer
          minimum: 0
        checksum:
          $ref: '#/components/schemas/Sha256Digest'
        contentFingerprint:
          $ref: '#/components/schemas/Sha256Digest'
        errors:
          maxItems: 1
          type: array
          items:
            $ref: '#/components/schemas/IngestIssue'
        etag:
          type: string
          minLength: 1
        etagWeak:
          type: boolean
        instanceNumber:
          type: integer
        objectKey:
          type: string
          minLength: 1
        pixelDataByteOffset:
          type: integer
          minimum: 0
        positionMm:
          type: number
        role:
          type: string
          enum:
            - descriptor
            - voxel-data
        sopInstanceUid:
          type: string
          minLength: 1
        status:
          type: string
          enum:
            - registered
            - rejected
      required:
        - errors
        - objectKey
        - status
    ModelLabelMeasureBox:
      type: object
      properties:
        kind:
          type: string
          const: box
        iou:
          type: number
          minimum: 0
          maximum: 1
        cornerShiftMm:
          type: number
          minimum: 0
        toleranceMm:
          type: number
          exclusiveMinimum: 0
      required:
        - kind
        - iou
        - cornerShiftMm
        - toleranceMm
    ModelLabelMeasureKeypoint:
      type: object
      properties:
        kind:
          type: string
          const: keypoint
        distanceMm:
          type: number
          minimum: 0
        smallFixRadiusMm:
          type: number
          exclusiveMinimum: 0
        toleranceMm:
          type: number
          exclusiveMinimum: 0
      required:
        - kind
        - distanceMm
        - smallFixRadiusMm
        - toleranceMm
    Sha256Digest:
      type: string
      pattern: ^sha256:([0-9a-f]{64})$
    IngestIssue:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/IssueCode'
        fieldPath:
          type: string
        message:
          type: string
          minLength: 1
          maxLength: 250
        remediation:
          type: string
          minLength: 1
          maxLength: 100
      required:
        - code
        - message
        - remediation
    IssueCode:
      type: string
      enum:
        - ACCOUNT_NOT_FOUND
        - API_ERROR
        - API_UNREACHABLE
        - AUTHORIZATION_DENIED
        - AUTH_INVALID_TOKEN
        - AUTH_REQUIRED
        - CHECKPOINT_REQUIRED
        - CORRUPT_VGI
        - CORRUPT_DICOM
        - CORRUPT_TIFF_STACK
        - DATASET_NAME_CONFLICT
        - DATASET_NOT_FOUND
        - DATASET_REVISION_CONFLICT
        - DATASET_VERSION_NOT_FOUND
        - DATASET_VERSION_RESOLVING
        - DATASET_VERSION_NAME_CONFLICT
        - DATASET_HEAD_UNCOMMITTED
        - DATASET_NO_QUALIFYING_COMMIT
        - DATASET_MEMBERSHIP_UNDECLARED
        - DATASET_HARD_MEMBER_MISSING
        - DATASET_HARD_MEMBER_EXCLUDED
        - DATASET_SELECTION_EMPTY
        - DATASET_OBJECT_MISSING
        - DATASET_OBJECT_CHANGED
        - DATASET_MEMBER_TOO_LARGE
        - DATASET_LAYOUT_UNSATISFIABLE
        - DATASET_BUILD_UNAVAILABLE
        - DATASET_BUILD_INVALID
        - DATASET_FREEZE_TIMEOUT
        - DATASET_VERSION_CANCELLED
        - DATASET_MANIFEST_HASH_MISMATCH
        - DATASET_READ_SESSION_NOT_FOUND
        - DATASET_READ_SESSION_CLOSED
        - DATASET_VERSION_REVOKED
        - DATASET_VERSION_TOMBSTONED
        - DUPLICATE_SOP_INSTANCE_UID
        - GEOMETRY_INCONSISTENT
        - GEOMETRY_OUT_OF_RANGE
        - IDEMPOTENCY_CONFLICT
        - INVALID_ARGUMENT
        - INVALID_JSON
        - METHOD_NOT_ALLOWED
        - MISSING_SLICE
        - MIXED_FORMAT_FAMILIES
        - MODEL_RUN_BUDGET_EXHAUSTED
        - MODEL_RUN_ESTIMATE_CHANGED
        - MODEL_RUN_ITEM_LANDS_FROM_JOB
        - MODEL_RUN_ITEM_SETTLED
        - MODEL_RUN_LANDED_LATE
        - MODEL_RUN_MODEL_FAILED
        - MODEL_RUN_MULTI_ITEM_UNSUPPORTED
        - MODEL_RUN_NOT_OFFERED
        - MODEL_RUN_PIN_CHANGED
        - MODEL_RUN_REPLACEMENT_CHANGED
        - MODEL_RUN_REPORT_EXPIRED
        - MODEL_RUN_REQUEST_STOPPING
        - MODEL_RUN_SCAN_TOO_LARGE
        - MODEL_RUN_SOURCE_CHANGED
        - MODEL_RUN_SUPERSEDED
        - MODEL_RUN_TASK_BINDING_LOST
        - MODEL_RUN_TASK_NOT_ELIGIBLE
        - MODEL_RUN_TIME_LIMIT
        - NO_VALID_DICOM_SLICES
        - PROJECT_CREATE_FAILED
        - RATE_LIMITED
        - REQUEST_LANDING_TOO_LARGE
        - REQUEST_NOT_CANCELLABLE
        - REQUEST_NOT_FOUND
        - REQUEST_REPORT_EXPIRED
        - REQUEST_WORKER_EXHAUSTED
        - SERIES_IDENTITY_MISMATCH
        - SERVER_VERSION_INCOMPATIBLE
        - SLICE_ORDER_INCONSISTENT
        - SOURCE_LIST_FAILED
        - SOURCE_REGISTER_FAILED
        - SOURCE_VERSION_AMBIGUOUS
        - STORAGE_CONNECTION_REGISTER_FAILED
        - STORAGE_CREDENTIAL_ENVIRONMENT_FORBIDDEN
        - STORAGE_CREDENTIAL_HANDLE_CONFLICT
        - STORAGE_CREDENTIAL_HANDLE_INVALID
        - STORAGE_CREDENTIAL_HANDLE_NOT_FOUND
        - STORAGE_CREDENTIAL_HANDLE_REQUIRED
        - STORAGE_CREDENTIAL_PRESIGN_UNSUPPORTED
        - STORAGE_CREDENTIAL_ROLE_MISMATCH
        - STORAGE_CREDENTIAL_TARGET_MISMATCH
        - STORAGE_CREDENTIAL_UNAVAILABLE
        - STORAGE_CUSTOM_HOSTS_NOT_READY
        - STORAGE_OBJECT_CHANGED_DURING_READ
        - STORAGE_OBJECT_NOT_FOUND
        - STORAGE_OBJECT_TOO_LARGE
        - STORAGE_READ_FAILED
        - UNEXPECTED_ERROR
        - UNKNOWN_COMMAND
        - UNSUPPORTED_VGI_SCENE
        - UNSUPPORTED_PIXEL_FORMAT
        - UNSUPPORTED_TRANSFER_SYNTAX
        - UNRECOGNIZED_FORMAT
        - VERSION_GRAPH_OPERATION_FAILED
        - VGI_VOL_MISMATCH
        - TAXONOMY_OPERATION_FAILED
        - WORKFLOW_OPERATION_FAILED
  headers:
    RequestId:
      description: The request id every answer carries; echo it when reporting a problem.
      schema:
        type: string
    TokenExpires:
      description: >-
        The instant the credential that made the request stops working, RFC 3339
        in UTC. Sent on every authenticated answer, a refusal after
        authentication included, once the credential has 14 days or fewer left.
        Never sent on a 401 or a 405, or by a route that needs no credential.
      schema:
        type: string
        format: date-time
    RetryAfter:
      description: >-
        Whole seconds to wait before polling an accepted Request or retrying a
        429 refusal.
      schema:
        type: integer
        minimum: 0
  responses:
    NitsorErrorAuthenticated:
      description: >-
        The request was refused. `code` names the refusal; `requestId`
        correlates it.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
        Nitsor-Token-Expires:
          $ref: '#/components/headers/TokenExpires'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NitsorError'
    NitsorError:
      description: >-
        The request was refused. `code` names the refusal; `requestId`
        correlates it.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NitsorError'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An Agent credential (`nits_…`), or a person token (`nitp_…`) on a
        deployment that enables them. `GET /api/v1/session` names the principal
        a credential proves.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.