---
title: "Creating a job"
method: POST
path: "/jobs"
tags: ["Jobs"]
---

# Creating a job

`POST /jobs`

Creates a new job. Click [here](../docs/creating-a-job) for more information.

## Request body

- JobPostRequest — Job to create
  - `templateId` integer — Job template to be used when creating the job. If provided, the template will be copied first.
  - `code` string — Company's job internal code. If not provided, the API will generate one.
  - `name` string, required — Job name
  - `quickApply` boolean — To create a quick_apply job post use quickApply = true. By using Public API resources in quick application type job post, you declare that you have read and agree to the [Quick Application Terms of Use](https://3299491.fs1.hubspotusercontent-na1.net/hubfs/3299491/LGPD/RS%20Empresa/TERMOS%20DE%20USO/candidaturas%20r%C3%A1pidas/termo-de-uso-candidatura-rapida.pdf).
  - `type` 'vacancy_type_apprentice' | 'vacancy_type_associate' | 'vacancy_type_talent_pool' | 'vacancy_type_effective' | 'vacancy_type_internship' | 'vacancy_type_summer' | 'vacancy_type_temporary' | 'vacancy_type_outsource' | 'vacancy_type_trainee' | 'vacancy_type_volunteer' | 'vacancy_legal_entity' | 'vacancy_type_lecturer' | 'vacancy_type_freelancer' | 'vacancy_type_autonomous' | 'vacancy_type_intermittent', required — Job type. Value "vacancy_type_talent_pool" is not available for quick apply job postings.
  - `publicationType` 'external' | 'internal', required — Job publication type
  - `hiringDeadline` string, date — Deadline for hiring candidates
  - `applicationDeadline` string, date — Final date for application
  - `numVacancies` integer, required — The number of open vacancies for this job
  - `departmentId` integer, required — Job department or area id
  - `roleId` integer, required — Job role id
  - `description` string — Job description, shown in the career page (free text)
  - `responsibilities` string — Responsibilities of the job, shown in the career page (free text)
  - `prerequisites` string — Pre-requisites of the job, shown in the career page (free text)
  - `additionalInformation` string — Additional information of the job, shown in the career page (free text)
  - `notes` string — Notes about the job (free text)
  - `disabilities` boolean — This job is available to person with disabilities
  - `addressStreet` string — Address street name
  - `addressNumber` string — Address number and complements
  - `addressCity` string — Address city
  - `addressState` string — Address state name (eg. São Paulo)
  - `addressStateShortName` string — Address state short name (eg. SP)
  - `addressCountry` string — Address country name (eg. Brasil)
  - `addressCountryShortName` string — Address country short name (eg. BRA)
  - `addressDistrict` string — Job address district
  - `addressComplements` string — Job address complements
  - `addressZipCode` string — Address Zip Code
  - `addressLatitude` number, double — Work location latitude. If not provided, the addressZipCode will be used to get the latitude (this functionality only works with Brazilian postal codes).
  - `addressLongitude` number, double — Work location longitude. If not provided, the addressZipCode will be used to get the longitude (this functionality only works with Brazilian postal codes).
  - `branchId` number — Job branch id
  - `remoteWorking` boolean — This job is for remote working. This field will soon be deprecated, please use workplaceType instead for setting remoteWorking accurately.
  - `workplaceType` 'hybrid' | 'on-site' | 'remote' — Workplace type. If provided, will be used to set the remoteWorking correctly.
  - `salary` object — Job salary information (not shown in the career page).
    - `currency` string, required — Job currency code (eg R$, USD)
    - `startsAt` number, double, required — Starting value
    - `endsAt` number, double — Ending value
  - `reason` 'staff_increase' | 'staff_replacement' — Job opening reason
  - `recruiterEmail` string, email — Job recruiter e-mail. If provided, must be an valid user in Gupy.
  - `managerEmail` string, email — Job manager e-mail. If provided, must be an valid user in Gupy.
  - `careerPageId` integer — Id of the career page where the job will be shown.
  - `customFields` JobCustomFieldData[] — Custom fields values defined for this job.
    - `id` string — Custom field id
    - `value` union
      - string — Custom field provided value
      - string[] — Custom field selected options which must be available in enum of `jobCustomFields`
  - `jobRatingCriterias` string[] — Rating criterias for the job
  - `videoUrl` string — A video url about the job.

## Response `201`

A confirmation of successful insertion of the job

- Job
  - `id` integer — Job ID
  - `code` string — Job posting code (eg. 999-99999)
  - `name` string — Job name (eg. Programador Node.js)
  - `status` 'draft' | 'waiting_approval' | 'approved' | 'disapproved' | 'published' | 'frozen' | 'closed' | 'canceled' — Job status
  - `type` 'vacancy_type_apprentice' | 'vacancy_type_associate' | 'vacancy_type_talent_pool' | 'vacancy_type_effective' | 'vacancy_type_internship' | 'vacancy_type_summer' | 'vacancy_type_temporary' | 'vacancy_type_outsource' | 'vacancy_type_trainee' | 'vacancy_type_volunteer' | 'vacancy_legal_entity' | 'vacancy_type_lecturer' | 'vacancy_type_freelancer' | 'vacancy_type_autonomous' | 'vacancy_type_intermittent' — Job type
  - `publicationType` 'external' | 'internal' — Publication type (eg. external, internal)
  - `numVacancies` integer — Number of total vacancies (eg. 10)
  - `departmentId` integer — Department ID
  - `departmentName` string — Department name (eg. Recursos Humanos, Logística)
  - `roleId` integer — Role ID
  - `roleName` string — Role name (eg. Desenvolvedor, Estagiário)
  - `branchId` integer — Branch ID
  - `branchName` string — Branch name
  - `description` string — Job description
  - `responsibilities` string — Main responsabilities and attribuitions
  - `prerequisites` string — Requirements and skills
  - `additionalInformation` string — Additional relevant informations
  - `notes` string — Internal notes about the job
  - `disabilities` boolean — Available for person with disabilities
  - `addressCountry` string — Job address country
  - `addressCountryShortName` string — Job address short country name
  - `addressState` string — Job address state
  - `addressStateShortName` string — Job address short state name
  - `addressCity` string — Job address city
  - `addressStreet` string — Job address street
  - `addressDistrict` string — Job address district
  - `addressComplements` string — Job address complements
  - `addressNumber` string — Job address number
  - `addressZipCode` string — Job address zip code
  - `addressLatitude` number, double — Work location latitude.
  - `addressLongitude` number, double — Work location longitude.
  - `remoteWorking` boolean — This job is for remote working. This field will soon be deprecated, please use workplaceType instead for setting remoteWorking accurately.
  - `workplaceType` 'hybrid' | 'on-site' | 'remote' — Workplace type. If provided, will be used to set the remoteWorking correctly.
  - `reason` 'staff_increase' | 'staff_replacement' — Job opening reason
  - `image` string — Image url for job website
  - `socialMediaImage` string — Image url for social media
  - `applicationDeadline` string, date — Final date for application
  - `careerPageId` integer — Career page ID
  - `careerPageName` string — Career page name
  - `vacancyCodes` object[] — Vacancy codes associated to job
    - `id` integer — Vacancy Code id
    - `code` string — Vacancy Code
    - `status` 'valid' | 'invalid' | 'error' | 'waiting' — Vacancy status
    - `errorMessage` string — Error message when status=error (eg. Gestor inválido)
  - `managerId` integer — User ID of the job manager
  - `managerName` string — Name of the job manager
  - `managerEmail` string, email — E-mail of the job manager
  - `recruiterId` integer — User ID of the job recruiter
  - `recruiterName` string — Name of the job recruiter
  - `recruiterEmail` string, email — E-mail of the job recruiter
  - `hiringDeadline` string, date — Deadline for hiring candidates
  - `salary` object — Salary data
    - `currency` string — Salary currency type (eg. R$)
    - `startsAt` number, double — Salary min value
    - `endsAt` number, double — Salary max value
  - `customFields` JobCustomField[] — Custom fields defined for this job
    - `id` string — Custom field id
    - `label` string — Custom field label
    - `value` union — Custom field provided value
      - string
      - string[]
    - `type` 'select' | 'multiSelect' | 'text' | 'boolean' | 'number' | 'date' | 'time' — Custom field type
    - `order` integer — Custom field order of appearance when editing a job
    - `required` boolean — Informs if this custom field response is mandatory
    - `enum` string[] — Possible options to be provided as value
  - `jobRatingCriterias` JobRatingCriteria[] — Rating criterias that belongs to the job
    - `jobId` integer
    - `name` string
  - `cancelReason` 'staff_increase_or_substitution_postponed' | 'cancellation_requested_by_manager' | 'internal_transfer' | 'organizational_restructuring' | 'budget_review' | 'other' — Job cancel reason
  - `cancelReasonNotes` string — Job cancel reason notes provided by user when cancelReason is other
  - `canceledByEmail` string, email — E-mail of the person who canceled the job
  - `cancelAt` string, date-time — Date of job cancel
  - `createdAt` string, date-time — Date of creation
  - `updatedAt` string, date-time — Date of update
  - `publishedAt` string, date-time — Date of job publication
  - `approvedAt` string, date-time — Date of job approve
  - `disapprovedAt` string, date-time — Date of job disapprove
  - `closedAt` string, date-time — Date of job close
  - `lastFreezeDate` string, date-time — Last date of job freeze
  - `lastUnFreezeDate` string, date-time — Last date of job unfreeze
  - `creatorId` integer — User ID of the job creator
  - `creatorName` string — Name of the job creator
  - `creatorEmail` string, email — E-mail of the job creator
  - `videoUrl` string — A video url about the job.
  - `approvers` number[] — User ids to be approvers of the job
  - `workflowRequestMethod` 'all_at_once' | 'in_order' — Workflow request method

## Other responses

- `400` — BadRequest / Invalid Input
- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.net/gupy/apis/gupy-public-api.md) · [All operations](https://skmtc.net/gupy/apis/gupy-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gupy/gupy-public-api/revisions/3f26defa2a42/schema)
