> ## 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.

# Create Job

> Creates a new job scoped to the API key's company.

Creates a new job posting scoped to the API key's company. Jobs serve as containers for candidates and are required before creating candidates or scheduling interviews.

## Overview

The create job endpoint allows you to add new job postings to your recruitment pipeline. Each job must include at minimum a title, description, and status. Jobs can be enhanced with skills requirements, location information, salary details, and more.

## Use Cases

* **Job Posting Creation**: Add new positions to your recruitment system
* **ATS Integration**: Sync jobs from external ATS systems
* **Bulk Job Import**: Import multiple job postings
* **Job Template Creation**: Create job templates for recurring positions

## Basic Job Creation

```javascript theme={null}
{
  "title": "Senior Software Engineer",
  "description": "We are seeking an experienced software engineer...",
  "requiredSkills": ["JavaScript", "React", "Node.js"],
  "status": "OPEN"
}
```

## Company Scoping

Jobs are automatically scoped to your API key's company. All candidates and interviews associated with a job must belong to the same company.

## Status Management

Jobs start with a status (typically `OPEN` for active positions). You can update the status later using the [Update Job](/api-reference/jobs/update-job) endpoint.

## Related Resources

<CardGroup cols={2}>
  <Card title="Jobs Resource Guide" icon="briefcase" href="/guides/resources/jobs">
    Comprehensive guide to job management, including skills, location, and salary configuration
  </Card>

  <Card title="Create Candidate" icon="user" href="/api-reference/candidates/create-candidate">
    Add candidates to your jobs
  </Card>

  <Card title="List Jobs" icon="list" href="/api-reference/jobs/list-jobs">
    View all your job postings
  </Card>
</CardGroup>


## OpenAPI

````yaml POST /jobs
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:
    post:
      tags:
        - Jobs
      summary: Create job
      description: Creates a new job scoped to the API key's company.
      operationId: PublicJobsController_createJob_v1
      parameters:
        - 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/PublicCreateJobDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicJobDto'
      security:
        - bearer: []
components:
  schemas:
    PublicCreateJobDto:
      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
        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
          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'
        education:
          type: array
          description: Education requirements
          example:
            - BACHELOR_LEVEL
            - MASTER_LEVEL
          items:
            type: string
            enum:
              - UNDEFINED
              - PRIMARY_EDUCATION
              - SECONDARY_SCHOOL_STUDENT
              - SECONDARY_WITHOUT_DIPLOMA
              - SECONDARY_WITH_DIPLOMA
              - POST_SECONDARY_VOCATIONAL
              - UNIVERSITY_STUDENT
              - BACHELOR_LEVEL
              - MASTER_LEVEL
              - POSTGRADUATE
        experience:
          type: string
          description: Experience level required
          enum:
            - UNDEFINED
            - NO_EXPERIENCE
            - LESS_THAN_1_YEAR
            - ONE_TO_3_YEARS
            - THREE_TO_5_YEARS
            - FIVE_TO_10_YEARS
            - TEN_TO_15_YEARS
            - MORE_THAN_15_YEARS
          example: FIVE_TO_10_YEARS
        contractType:
          type: string
          description: Contract type
          enum:
            - UNDEFINED
            - FULL_TIME
            - PART_TIME
            - FREELANCE_CONTRACT
            - TRADE_LICENSE
            - INTERNSHIP
          example: FULL_TIME
        status:
          type: string
          description: Job status
          enum:
            - UNDEFINED
            - OPEN
            - CLOSED
          example: OPEN
          default: OPEN
        location:
          description: Job location
          allOf:
            - $ref: '#/components/schemas/PublicJobLocationDto'
        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 for extensibility (max 10KB, 5 levels deep, 50 keys)
          example:
            externalJobId: JOB-12345
            department: Engineering
            hiringManager: Jane Doe
      required:
        - title
    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

````