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

# Update Job

> Updates an existing job scoped to the API key's company.

Updates an existing job posting using partial updates. Only provided fields will be updated; omitted fields remain unchanged.

## Overview

The update job endpoint allows you to modify job details without recreating the job. This supports partial updates, meaning you only need to provide the fields you want to change. Useful for updating job descriptions, changing status, adjusting salary, or modifying skills requirements.

## Use Cases

* **Status Updates**: Change job status (OPEN to CLOSED, etc.)
* **Content Updates**: Update job description or requirements
* **Salary Adjustments**: Modify salary ranges as needed
* **Skills Refinement**: Update required or nice-to-have skills

## Partial Updates

You can update any combination of fields:

```javascript theme={null}
// Update only status
PATCH /jobs/{id}
{
  "status": "CLOSED"
}

// Update multiple fields
PATCH /jobs/{id}
{
  "title": "Updated Job Title",
  "description": "Updated description",
  "requiredSkills": ["New", "Skills", "List"]
}
```

## Status Transitions

Jobs can transition between statuses:

* `OPEN` → `CLOSED`: Position filled or paused
* `CLOSED` → `OPEN`: Reopening a position

<Info>
  Status changes do not affect existing candidates or interviews. Candidates remain associated with the job regardless of status.
</Info>

## Company Isolation

You can only update jobs that belong to your API key's company. Attempting to update a job from another company will result in a `403 Forbidden` error.

## Error Scenarios

* **404 Not Found**: Job doesn't exist or has been deleted
* **403 Forbidden**: Job belongs to a different company
* **400 Bad Request**: Invalid field values or validation errors

## Related Resources

<CardGroup cols={2}>
  <Card title="Jobs Resource Guide" icon="briefcase" href="/guides/resources/jobs">
    Learn about job management and status workflows
  </Card>

  <Card title="Get Job" icon="eye" href="/api-reference/jobs/get-job">
    Retrieve current job configuration
  </Card>

  <Card title="Create Job" icon="plus" href="/api-reference/jobs/create-job">
    Create new job postings
  </Card>
</CardGroup>


## OpenAPI

````yaml PATCH /jobs/{id}
openapi: 3.0.0
info:
  title: InstaView API
  description: |-
    InstaView API Documentation

    ## Authentication

    All endpoints require API key authentication using Bearer token:
    ```
    Authorization: Bearer sk_your_api_key_here
    ```

    ## API Key Management

    The API Key module provides comprehensive key management for:
    - **Direct Client Keys**: Company-scoped keys for your applications
    - **ATS Partner Keys**: Resource-scoped keys for ATS integrations

    ### Key Features
    - HMAC-SHA256 hashing for API key storage
    - Configurable rate limiting
    - Comprehensive audit logging
    - Company-level isolation
    - Resource scoping for ATS partners
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.instaview.sk
    description: Production API Gateway
security: []
tags: []
paths:
  /jobs/{id}:
    patch:
      tags:
        - Jobs
      summary: Update job
      description: Updates an existing job scoped to the API key's company.
      operationId: PublicJobsController_updateJob_v1
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
            format: uuid
        - name: companyId
          required: false
          in: query
          description: >-
            Required for ATS API keys to specify which company to access.
            Ignored for standard company API keys.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicUpdateJobDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicJobDto'
      security:
        - bearer: []
components:
  schemas:
    PublicUpdateJobDto:
      type: object
      properties:
        title:
          type: string
          description: Job title
          example: Senior TypeScript Developer
          minLength: 5
          maxLength: 200
        description:
          type: string
          description: Job description
          example: We are looking for an experienced TypeScript developer...
          minLength: 10
          maxLength: 5000
        requiredSkills:
          description: Required skills
          example:
            - TypeScript
            - React
            - Node.js
          maxItems: 10
          type: array
          items:
            type: string
        niceToHaveSkills:
          description: Nice-to-have skills
          example:
            - Docker
            - AWS
            - GraphQL
          maxItems: 10
          type: array
          items:
            type: string
        languageRequirements:
          description: Language requirements with proficiency levels
          example:
            - language: EN
              proficiency: B2
            - language: SK
              proficiency: C1
          maxItems: 5
          type: array
          items:
            $ref: '#/components/schemas/PublicLanguageRequirementDto'
        descriptionUrl:
          type: string
          description: URL to full job description
          example: https://example.com/jobs/senior-typescript-dev
        workMode:
          type: string
          description: Work mode
          enum:
            - UNDEFINED
            - ONSITE
            - REMOTE
            - HYBRID
          example: REMOTE
        location:
          description: Job location details
          allOf:
            - $ref: '#/components/schemas/PublicJobLocationDto'
        status:
          type: string
          description: Job status
          enum:
            - UNDEFINED
            - OPEN
            - CLOSED
          example: OPEN
        salary:
          description: >-
            Salary range with comprehensive validation: min and max must be >=
            0, min < max, currency and period are required if min or max is
            provided, at least one of min or max must be provided if any salary
            field is present
          example:
            min: 50000
            max: 80000
            currency: USD
            period: YEARLY
          allOf:
            - $ref: '#/components/schemas/PublicSalaryRangeDto'
        metadata:
          type: object
          description: >-
            Custom metadata (merged with existing metadata, max 10KB, 5 levels
            deep, 50 keys)
          example:
            salaryRange: 80k-120k
            benefits:
              - health insurance
              - remote work
    PublicJobDto:
      type: object
      properties:
        id:
          type: string
          description: Job ID
          example: 123e4567-e89b-12d3-a456-426614174000
        companyId:
          type: string
          description: Company ID
          example: 987e6543-e21b-12d3-a456-426614174000
        title:
          type: string
          description: Job title
          example: Senior TypeScript Developer
        description:
          type: string
          description: Job description
          example: We are looking for an experienced TypeScript developer...
          nullable: true
        status:
          type: string
          description: Job status
          enum:
            - UNDEFINED
            - OPEN
            - CLOSED
          example: OPEN
        jobUrl:
          type: string
          description: Job URL
          example: https://company.com/careers/senior-typescript-dev
        benefits:
          type: string
          description: Benefits
          example: Health insurance, remote work, flexible hours
        requiredSkills:
          description: Required skills
          example:
            - TypeScript
            - React
            - Node.js
          type: array
          items:
            type: string
        niceToHaveSkills:
          description: Nice-to-have skills
          example:
            - Docker
            - AWS
          type: array
          items:
            type: string
        languageRequirements:
          description: Language requirements with proficiency levels
          example:
            - language: EN
              proficiency: B2
            - language: SK
              proficiency: C1
          type: array
          items:
            $ref: '#/components/schemas/PublicLanguageRequirementDto'
        education:
          description: Education requirements
          example:
            - BACHELORS
          type: array
          items:
            type: string
        experience:
          type: string
          description: Experience level
          example: SENIOR
        contractType:
          type: string
          description: Contract type
          example: FULL_TIME
        location:
          description: Location information
          allOf:
            - $ref: '#/components/schemas/PublicJobLocationDto'
        salary:
          description: Salary range
          example:
            min: 50000
            max: 80000
            currency: USD
            period: YEARLY
          allOf:
            - $ref: '#/components/schemas/PublicSalaryRangeDto'
        metadata:
          type: object
          description: Custom metadata
          example:
            externalJobId: JOB-12345
            department: Engineering
        createdAt:
          type: string
          description: Created timestamp
          example: '2024-11-16T10:30:00Z'
        updatedAt:
          type: string
          description: Updated timestamp
          example: '2024-11-16T10:30:00Z'
      required:
        - id
        - companyId
        - title
        - status
        - createdAt
        - updatedAt
    PublicLanguageRequirementDto:
      type: object
      properties:
        language:
          type: string
          description: Language
          enum:
            - UNDEFINED
            - EN
            - JA
            - ZH
            - DE
            - HI
            - FR
            - KO
            - PT
            - IT
            - ES
            - ID
            - NL
            - TR
            - FIL
            - PL
            - SV
            - BG
            - RO
            - AR
            - CS
            - EL
            - FI
            - HR
            - MS
            - SK
            - DA
            - TA
            - UK
            - RU
            - HU
            - 'NO'
            - VI
          example: EN
        proficiency:
          type: string
          description: Proficiency level (CEFR)
          enum:
            - UNDEFINED
            - A1
            - A2
            - B1
            - B2
            - C1
            - C2
          example: B2
      required:
        - language
        - proficiency
    PublicJobLocationDto:
      type: object
      properties:
        workMode:
          type: string
          description: Work mode
          enum:
            - UNDEFINED
            - ONSITE
            - REMOTE
            - HYBRID
          example: REMOTE
        street:
          type: string
          description: Street address
          example: Hlavná 123
          minLength: 2
          maxLength: 200
        city:
          type: string
          description: City
          example: Bratislava
          minLength: 2
          maxLength: 100
        postalCode:
          type: string
          description: Postal code
          example: '81101'
          minLength: 2
          maxLength: 20
        countryCode:
          type: string
          description: Country code (ISO 3166-1 alpha-2)
          enum:
            - XX
            - AF
            - AL
            - DZ
            - AS
            - AD
            - AO
            - AI
            - AQ
            - AG
            - AR
            - AM
            - AW
            - AU
            - AT
            - AZ
            - BS
            - BH
            - BD
            - BB
            - BY
            - BE
            - BZ
            - BJ
            - BM
            - BT
            - BO
            - BA
            - BW
            - BR
            - IO
            - BN
            - BG
            - BF
            - BI
            - KH
            - CM
            - CA
            - CV
            - KY
            - CF
            - TD
            - CL
            - CN
            - CX
            - CC
            - CO
            - KM
            - CG
            - CD
            - CK
            - CR
            - CI
            - HR
            - CU
            - CY
            - CZ
            - DK
            - DJ
            - DM
            - DO
            - EC
            - EG
            - SV
            - GQ
            - ER
            - EE
            - SZ
            - ET
            - FK
            - FO
            - FJ
            - FI
            - FR
            - GF
            - PF
            - TF
            - GA
            - GM
            - GE
            - DE
            - GH
            - GI
            - GR
            - GL
            - GD
            - GP
            - GU
            - GT
            - GG
            - GN
            - GW
            - GY
            - HT
            - HM
            - VA
            - HN
            - HK
            - HU
            - IS
            - IN
            - ID
            - IR
            - IQ
            - IE
            - IM
            - IL
            - IT
            - JM
            - JP
            - JE
            - JO
            - KZ
            - KE
            - KI
            - KP
            - KR
            - KW
            - KG
            - LA
            - LV
            - LB
            - LS
            - LR
            - LY
            - LI
            - LT
            - LU
            - MO
            - MG
            - MW
            - MY
            - MV
            - ML
            - MT
            - MH
            - MQ
            - MR
            - MU
            - YT
            - MX
            - FM
            - MD
            - MC
            - MN
            - ME
            - MS
            - MA
            - MZ
            - MM
            - NA
            - NR
            - NP
            - NL
            - NC
            - NZ
            - NI
            - NE
            - NG
            - NU
            - NF
            - MK
            - MP
            - 'NO'
            - OM
            - PK
            - PW
            - PS
            - PA
            - PG
            - PY
            - PE
            - PH
            - PN
            - PL
            - PT
            - PR
            - QA
            - RE
            - RO
            - RU
            - RW
            - BL
            - SH
            - KN
            - LC
            - MF
            - PM
            - VC
            - WS
            - SM
            - ST
            - SA
            - SN
            - RS
            - SC
            - SL
            - SG
            - SX
            - SK
            - SI
            - SB
            - SO
            - ZA
            - GS
            - SS
            - ES
            - LK
            - SD
            - SR
            - SJ
            - SE
            - CH
            - SY
            - TW
            - TJ
            - TZ
            - TH
            - TL
            - TG
            - TK
            - TO
            - TT
            - TN
            - TR
            - TM
            - TC
            - TV
            - UG
            - UA
            - AE
            - GB
            - US
            - UM
            - UY
            - UZ
            - VU
            - VE
            - VN
            - VG
            - VI
            - WF
            - EH
            - YE
            - ZM
            - ZW
          example: SK
    PublicSalaryRangeDto:
      type: object
      properties:
        min:
          type: number
          description: Minimum salary (must be greater than or equal to 0)
          example: 50000
          minimum: 0
        max:
          type: number
          description: Maximum salary (must be greater than or equal to 0)
          example: 80000
          minimum: 0
        currency:
          type: string
          description: Currency (ISO 4217 alpha-3)
          pattern: ^[A-Z]{3}$
          example: USD
        period:
          type: string
          description: Salary period
          enum:
            - UNDEFINED
            - HOURLY
            - DAILY
            - MONTHLY
            - YEARLY
          example: YEARLY
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: API key for authentication using Bearer scheme

````