---
title: "Create a new job ad"
method: POST
path: "/jobs/{jobId}/jobads"
tags: ["jobs"]
---

# Create a new job ad

`POST /jobs/{jobId}/jobads`

## Request

- Base URL: `https://api.smartrecruiters.com`
- URL: `https://api.smartrecruiters.com/jobs/{jobId}/jobads`
- Auth: one of:
  - API key in header `x-smarttoken`
  - OAuth 2
    - Authorization code: `https://www.smartrecruiters.com/identity/oauth/allow`
    - Token URL: `https://api.smartrecruiters.com/identity/oauth/token` scopes: `jobs_manage`

## Request body

- JobAdContent
  - `title` string, title, required
  - `language` JobAdLanguage
    - `code` 'af' | 'am' | 'ar' | 'hy' | 'az' | 'eu' | 'bn' | 'bg' | 'ca' | 'zh-CN' | 'zh-TW' | 'hr' | 'cs' | 'da' | 'nl' | 'en-GB' | 'en' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'gl' | 'ka' | 'de' | 'el' | 'gu' | 'iw' | 'hi' | 'hu' | 'is' | 'id' | 'ga' | 'it' | 'ja' | 'kn' | 'km' | 'ko' | 'lo' | 'lv' | 'lt' | 'ms' | 'ml' | 'mr' | 'mn' | 'ne' | 'no' | 'fa' | 'fil' | 'pl' | 'pt' | 'pt-BR' | 'pt-PT' | 'ro' | 'ru' | 'sr' | 'si' | 'sk' | 'sl' | 'es' | 'es-MX' | 'sw' | 'sv' | 'ta' | 'te' | 'tr' | 'uk' | 'ur' | 'vi' | 'cy' | 'zu' | 'en-AU', required: Language code, can be two-letter for the standard variant or with additional two letters after a hyphen to identify a specific locale Value "pt-PT" is deprecated and will not work, use "pt" instead.
  - `location` union
    - LocationDetails
      - `countryCode` string, required
      - `regionCode` string
      - `region` string
      - `address` string
      - `postalCode` string
      - `city` string, required
      - `longitude` union
        - number
        - string
      - `latitude` union
        - number
        - string
      - `remote` boolean
      - `hybrid` boolean
      - `hybridDescription` string
    - LocationByIdentifier
      - `identifier` string, required: The unique identifier of a predefined location configured for this company. Mutually exclusive with all LocationDetails fields.
      - `remote` boolean
      - `hybrid` boolean
      - `hybridDescription` string
  - `compensation` Compensation
    - `min` number, double, nullable
    - `max` number, double, nullable
    - `currency` string, nullable
    - `period` 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY', nullable: The time period to which the proposed min and max compensation values apply
  - `jobAd` JobAdSections
    - `companyDescription` JobAdSection
      - `title` string
      - `text` string
    - `jobDescription` JobAdSection
      - `title` string
      - `text` string
    - `qualifications` JobAdSection
      - `title` string
      - `text` string
    - `additionalInformation` JobAdSection
      - `title` string
      - `text` string
    - `videos` JobAdVideos
      - `urls` string[]

## Response `200`

Created job ad.

- JobAdItem
  - `id` string, required
  - `title` string, required
  - `language` Language, required
    - `code` string, required
    - `label` string
    - `labelNative` string
  - `location` Location
    - `country` string
    - `countryCode` string, required
    - `regionCode` string
    - `region` string
    - `city` string, required
    - `address` string, address
    - `postalCode` string
    - `longitude` string
    - `latitude` string
    - `manual` boolean
    - `remote` boolean
    - `hybrid` boolean
    - `hybridDescription` string
  - `compensation` Compensation
    - `min` number, double, nullable
    - `max` number, double, nullable
    - `currency` string, nullable
    - `period` 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY', nullable: The time period to which the proposed min and max compensation values apply
  - `jobAd` JobAdSections, required
    - `companyDescription` JobAdSection
      - `title` string
      - `text` string
    - `jobDescription` JobAdSection
      - `title` string
      - `text` string
    - `qualifications` JobAdSection
      - `title` string
      - `text` string
    - `additionalInformation` JobAdSection
      - `title` string
      - `text` string
    - `videos` JobAdVideos
      - `urls` string[]
  - `createdOn` string, date-time, required
  - `updatedOn` string, date-time, required
  - `applyUrl` string, url
  - `postingStatus` 'PUBLISHED' | 'NOT_PUBLISHED', required
  - `default` boolean, required
  - `actions` object, required
    - `postings` Action, required
      - `url` string, required
      - `method` 'GET' | 'POST' | 'PUT' | 'PATCH' | 'OPTIONS' | 'DELETE' | 'HEAD', required
  - `creator` Identifiable, required
    - `id` string, required
  - `visibility` 'PUBLIC' | 'INTERNAL' | 'PRIVATE', required

## Other responses

- `400`: with codes * **JOB_AD_LIMIT_REACHED** when job add limit (100 per job) is reached * **PROPERTY_INVALID** when one of job ad attribute contains invalid characters * **LOCATION_IDENTIFIER_NOT_FOUND** when provided location `identifier` does not match any predefined location for this company
- `404`: Job not found
- `422`: Input validation fails with codes * **COMPENSATION_INVALID_CURRENCY** – the currency code provided is invalid or not supported. * **TAGLINES_EXCEEDS_SECTION_SIZE** – Combined Additional Information and Job Ad Footers exceed the maximum allowed length.

---

[API](https://skmtc.dev/smartrecruiters/apis/jobs-api.md) - [All operations](https://skmtc.dev/smartrecruiters/apis/jobs-api/llms.txt) - [OpenAPI document](https://skmtc.dev/smartrecruiters/apis/jobs-api/revisions/d7e4e0f20115?raw)
