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

# Update a criterion

> GET/PATCH/DELETE a single criterion. DELETE soft-deletes it.



## OpenAPI

````yaml /swagger/v2_schema.yaml patch /jobs/{job_id}/interview-config/criteria/{criterion_id}
openapi: 3.0.3
info:
  title: TalentUnveiled API v2
  version: 2.0.0
  description: >-
    Public API v2 for managing jobs, applications, interviews, and webhooks.


    **Pagination:** list endpoints return a `{count, next, previous, results}`
    envelope. Page with the `limit` and `offset` query parameters; `limit`
    defaults to 50 and is capped at 200.
servers:
  - url: https://api.talentunveiled.com/api/v2
    description: Production server
security: []
tags:
  - name: Meta
    description: Identify the organization an API key belongs to.
  - name: Jobs
    description: Create, read, update, and archive job postings.
  - name: Applications
    description: Create applications and track them through the pipeline.
  - name: Interview Configuration
    description: The interview config and call schedule for a job.
  - name: Interview Criteria
    description: Evaluation criteria for a job's interview.
  - name: Interview Questions
    description: Questions asked during a job's interview.
  - name: Interview Results
    description: The scored interview result for an application.
  - name: Interview Calls
    description: Call attempts, scheduling, and transcripts.
  - name: CV Evaluations
    description: AI scoring of a candidate's CV against the job.
  - name: Insights
    description: Combined CV and interview insights for an application.
  - name: Webhooks
    description: Manage webhook subscriptions and inspect deliveries.
  - name: Hiring Team
    description: Manage the hiring team assigned to a job posting.
  - name: Members
    description: List the members of the organization.
paths:
  /jobs/{job_id}/interview-config/criteria/{criterion_id}:
    patch:
      tags:
        - Interview Criteria
      summary: Update a criterion
      description: GET/PATCH/DELETE a single criterion. DELETE soft-deletes it.
      operationId: jobs_interview_config_criteria_partial_update
      parameters:
        - in: path
          name: criterion_id
          schema:
            type: string
            format: uuid
          required: true
        - in: path
          name: job_id
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedInterviewCriteriaRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InterviewCriteria'
          description: ''
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication credentials were not provided or are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: The requested resource does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKeyAuth: []
components:
  schemas:
    PatchedInterviewCriteriaRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          description: >-
            Short label shown on the scorecard (e.g. 'Clinical judgment', 'Holds
            nursing license').
        description:
          type: string
          minLength: 1
          description: >-
            What this criterion evaluates. Role-specific and observable from the
            interview. For qualifications, the description must name the
            specific verifiable bar: the credential, license, work
            authorization, or numerical threshold the candidate must meet to
            pass.
        kind:
          allOf:
            - $ref: '#/components/schemas/CriterionKindEnum'
          description: >-
            Competency: graded 1-5 against a behaviorally anchored rubric (uses
            weight). Qualification: pass/fail against the bar stated in
            description (weight ignored).


            * `competency` - Competency

            * `qualification` - Qualification
        required:
          type: boolean
          description: >-
            If true, this criterion is a hard requirement. Failing it flags the
            candidate as ineligible regardless of other scores. For
            qualifications: failing = the bar in description not met. For
            competencies: failing = assessed score below minimum_score (if set),
            or criterion unassessable.
        minimum_score:
          type: integer
          maximum: 5
          minimum: 1
          nullable: true
          description: >-
            [Competency only] Optional 1-5 threshold for required competencies.
            Candidate fails the hard requirement if the scored level is below
            this. Leave null to require the criterion be assessable without a
            specific floor. Must be null for qualifications.
        level_1_description:
          type: string
          description: >-
            [Competency only] Level 1 - clear deficit. Would fail in the role.
            Required for competencies; must be blank for qualifications.
        level_2_description:
          type: string
          description: >-
            [Competency only] Level 2 - below expectations. Needs significant
            development. Required for competencies; must be blank for
            qualifications.
        level_3_description:
          type: string
          description: >-
            [Competency only] Level 3 - meets expectations. Solid hire for this
            role. Required for competencies; must be blank for qualifications.
        level_4_description:
          type: string
          description: >-
            [Competency only] Level 4 - exceeds expectations. Strong hire.
            Required for competencies; must be blank for qualifications.
        level_5_description:
          type: string
          description: >-
            [Competency only] Level 5 - exceptional. Stands out clearly.
            Required for competencies; must be blank for qualifications.
        weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          description: >-
            [Competency only] Relative importance of this competency in overall
            score calculation. Default is 1.0 (normal importance). Use 0.5 for
            nice-to-have, 1.5 for core skill. 0 means this criterion is not used
            for scoring.
    InterviewCriteria:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        name:
          type: string
          description: >-
            Short label shown on the scorecard (e.g. 'Clinical judgment', 'Holds
            nursing license').
        description:
          type: string
          description: >-
            What this criterion evaluates. Role-specific and observable from the
            interview. For qualifications, the description must name the
            specific verifiable bar: the credential, license, work
            authorization, or numerical threshold the candidate must meet to
            pass.
        kind:
          allOf:
            - $ref: '#/components/schemas/CriterionKindEnum'
          description: >-
            Competency: graded 1-5 against a behaviorally anchored rubric (uses
            weight). Qualification: pass/fail against the bar stated in
            description (weight ignored).


            * `competency` - Competency

            * `qualification` - Qualification
        required:
          type: boolean
          description: >-
            If true, this criterion is a hard requirement. Failing it flags the
            candidate as ineligible regardless of other scores. For
            qualifications: failing = the bar in description not met. For
            competencies: failing = assessed score below minimum_score (if set),
            or criterion unassessable.
        minimum_score:
          type: integer
          maximum: 5
          minimum: 1
          nullable: true
          description: >-
            [Competency only] Optional 1-5 threshold for required competencies.
            Candidate fails the hard requirement if the scored level is below
            this. Leave null to require the criterion be assessable without a
            specific floor. Must be null for qualifications.
        level_1_description:
          type: string
          description: >-
            [Competency only] Level 1 - clear deficit. Would fail in the role.
            Required for competencies; must be blank for qualifications.
        level_2_description:
          type: string
          description: >-
            [Competency only] Level 2 - below expectations. Needs significant
            development. Required for competencies; must be blank for
            qualifications.
        level_3_description:
          type: string
          description: >-
            [Competency only] Level 3 - meets expectations. Solid hire for this
            role. Required for competencies; must be blank for qualifications.
        level_4_description:
          type: string
          description: >-
            [Competency only] Level 4 - exceeds expectations. Strong hire.
            Required for competencies; must be blank for qualifications.
        level_5_description:
          type: string
          description: >-
            [Competency only] Level 5 - exceptional. Stands out clearly.
            Required for competencies; must be blank for qualifications.
        weight:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
          description: >-
            [Competency only] Relative importance of this competency in overall
            score calculation. Default is 1.0 (normal importance). Use 0.5 for
            nice-to-have, 1.5 for core skill. 0 means this criterion is not used
            for scoring.
        sequence_number:
          type: integer
          readOnly: true
          nullable: true
        is_active:
          type: boolean
          readOnly: true
          description: Inactive criteria are not used in interview scoring
      required:
        - created_at
        - description
        - id
        - is_active
        - kind
        - name
        - sequence_number
        - updated_at
    ErrorResponse:
      type: array
      description: List of errors
      items:
        $ref: '#/components/schemas/ErrorItem'
    CriterionKindEnum:
      enum:
        - competency
        - qualification
      type: string
      description: |-
        * `competency` - Competency
        * `qualification` - Qualification
    ErrorItem:
      type: object
      description: Individual error item
      properties:
        code:
          allOf:
            - $ref: '#/components/schemas/ErrorCodeEnum'
          description: Machine-readable error code
        detail:
          type: string
          description: Human-readable error message
        attr:
          type: string
          nullable: true
          description: Field name this error relates to (for validation errors)
      required:
        - code
        - detail
    ErrorCodeEnum:
      type: string
      enum:
        - error
        - invalid_input
        - parse_error
        - authentication_failed
        - not_authenticated
        - permission_denied
        - not_found
        - method_not_allowed
        - not_acceptable
        - unsupported_media_type
        - throttled
        - required
        - does_not_exist
        - incorrect_type
        - no_match
        - incorrect_match
        - not_a_list
        - not_a_dict
        - empty
        - candidate_user_mismatch
        - candidate_not_found
        - cross_organization_application
        - already_exists
        - call_service_error
        - call_not_joinable
        - call_config_error
        - call_access_denied
        - call_already_linked
        - date_range_too_large
        - date_range_start_after_end
        - invalid_date
        - language_not_configured
        - vapi_api_error
        - webhook_processing_error
        - proxy_error
        - configuration_error
        - interview_call_already_processed
        - call_type_switch_error
        - slot_in_past
        - interview_not_scheduled
        - interview_opt_out_not_eligible
        - interview_retry_not_allowed
        - retake_limit_reached
        - interview_session_not_joinable
        - interview_session_retake_not_eligible
        - interview_session_already_processing
        - interview_session_not_completed
        - interview_session_reset_not_allowed
        - interview_mode_locked
        - application_already_exists
        - gateway_verification_failed
        - invalid_file_type
        - file_too_large
        - cv_already_exists
        - cv_required
        - custom_fields_too_large
        - nylas_grant_already_exists
        - nylas_upstream_error
        - otp_challenge_not_found
        - job_posting_not_found
        - job_application_not_found
        - workflow_execution_error
        - llm_generation_failed
        - report_generation_failed
        - interview_config_has_no_criteria
        - scheduling_not_enabled
        - interview_session_not_reschedulable
        - interview_version_mismatch
        - v3_job_missing_config
        - idempotency_key_conflict
        - idempotency_key_invalid
        - application_status_transition_invalid
        - application_state_conflict
        - external_id_conflict
        - qualification_cannot_have_score
        - competency_requires_bars
      description: Machine-readable error code
  securitySchemes:
    apiKeyAuth:
      type: http
      scheme: bearer
      description: >-
        API key authentication for the public API. Pass your API key as a Bearer
        token.

````