---
title: "Create Position"
method: POST
path: "/api/v2/core/positions"
tags: ["Position"]
---

# Create Position

`POST /api/v2/core/positions`

To add a new position in the system, send the position information in the payload. positionId will be sent back in case of a successful response

## Headers

- `Authorization` string, required

## Request body

- PositionSchema
  - `createdAt` integer, nullable — Creation timestamp in epoch format
  - `confidential` boolean, nullable — if the position is confidential or not
  - `hiringManager` Person
    - `email` string, nullable — email
    - `name` string, nullable, required — Name
  - `groupId` string, nullable — group id
  - `name` string, nullable, required — Title of the Position
  - `followers` string[], nullable — all the followers of the position
  - `jobDescription` string, nullable — Detailed Job Description in a text format
  - `systemId` string, nullable — system id
  - `positionDisplayId` string, nullable — display job id
  - `recruiter` Person
    - `email` string, nullable — email
    - `name` string, nullable, required — Name
  - `calibrationConfirmedBy` string, nullable — User who confirmed the calibration
  - `open` boolean, nullable — if the position is open or not
  - `createdBy` string, nullable — source of the job
  - `calibrationConfirmedAt` integer, nullable — Confirmed timestamp for the calibration
  - `atsData` ATSPositionData
    - `createdAt` integer, nullable, required — creation timestamp in epoch format
    - `locationCountry` string, nullable — Country of the location
    - `coordinators` Person[], nullable — all the coordinators related to this position
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `businessUnit` string, nullable — business unit
    - `isPrivate` boolean, nullable — Indicates if a position is a private posting
    - `workLocationOption` string, nullable — Indicates the option for working location e.g. onsite, remote_global, remote_local, hybrid
    - `atsEntityId` string, nullable, required — position_id in the ats system
    - `hiringManager` Person
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `internalPostingUrl` string, nullable — internal posting url
    - `evergreen` boolean, nullable — is evergreen
    - `skills` string[], nullable — skills
    - `company` string, nullable, required — company
    - `locationCity` string, nullable — City of the location
    - `lastUpdated` integer, nullable, required — last modified date time in epoch format
    - `displayJobId` string, nullable — display job id
    - `openings` AtsOpenings
      - `closedAt` integer, nullable — Closing timestamp in epoch format
      - `openingDetails` AtsOpeningDetail[], nullable — Details of the openings
        - `status` string, nullable — Status of the opening
        - `closedAt` integer, nullable — Closing timestamp in epoch format
        - `openingId` string, nullable — Opening ID
        - `openedAt` integer, nullable — Opening timestamp in epoch format
        - `closeReason` string, nullable — Reason for closing the opening
        - `candidateId` string, nullable — List of candidate ID
        - `applicationId` string, nullable — List of application ID
      - `numOpenings` integer, nullable — Number of openings. Set to -1 for unlimited openings
      - `openedAt` integer, nullable — Opening timestamp in epoch format
      - `numOpeningsFilled` integer, nullable — Number of openings filled
    - `hiringTeam` HiringTeamMember[], nullable — Unified hiring team array. Each entry: {role, roleKey, name, email}. Includes primary/secondary HMs, primary/secondary recruiters, and custom roles.
      - `role` string, nullable — Role label (e.g. Hiring Manager, HRBP)
      - `email` string, nullable — Email of the team member
      - `name` string, nullable — Name of the team member
      - `roleKey` string, nullable — Storage key for the role (e.g. hiring_manager, secondary_hiring_managers, cust_hrbp)
    - `followers` Person[], nullable — all the followers of the positions as hiring managers etc.
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `startDate` string, nullable — start date of the position in ISO 8601 format (e.g. 2024-05-01)
    - `requisitionType` string, nullable — Requisition Type
    - `systemId` string, nullable — system id
    - `activities` PositionActivities[], nullable — all the activities related to this positions
      - `activityTime` integer, nullable, required — activity time in epoch format
      - `activityType` string, nullable, required — activity type
      - `changeLogs` ChangeLog[], nullable — all the change logs for the activity
        - `newValue` string, nullable, required — new value
        - `fieldName` string, nullable, required — field name
        - `prevValue` string, nullable, required — previous value
      - `message` string, nullable, required — message for the activity
    - `postedFor` string, nullable — internal for internal jobs, external for external jobs, or all for both. Can be omitted for unposted positions.Input values must be one of these: internal, external, all, None
    - `questionnaires` Questionnaire[], nullable — questionnaires
      - `questionDependencies` QuestionDependencies[], nullable — question dependencies
        - `questionId` string, nullable, required — question id
        - `questionSource` string, nullable — question source
        - `choiceValue` string, nullable, required — choice value
        - `dependencyType` string, nullable — dependency type
        - `childQuestionIds` string[], nullable — child question ids
      - `questionnaireId` string, nullable, required — questionnaire id
    - `restrictAccess` boolean, nullable — restrict access
    - `title` string, nullable, required — job title
    - `templateId` integer, nullable — Template id of the template used to create the position
    - `recruiter` Person, required
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `jobPosts` JobPost[], nullable — job postings
      - `publishedTime` integer, nullable, required — published time in epoch format
      - `expirationTime` integer, nullable — expiration time in epoch format
      - `postingTitle` string, nullable, required — posting title
      - `postingId` string, nullable, required — posting id
      - `locale` string, nullable — locale of the ats job post
      - `primaryPost` boolean, nullable — is primary post
      - `jobDescription` string, nullable — job description
      - `postedFor` string, nullable, required — internal for internal jobs, external for external jobs, or all for both.
    - `hiringBand` string, nullable — hiring band
    - `postingTitle` string, nullable — posting title
    - `employmentType` string, nullable — Employment Type
    - `posted` boolean, nullable, required — status of the position posted or not
    - `locationFlexibility` string, nullable — Indicates the flexibility on location e.g. not_flexible, flexible_within_country, flexible_global
    - `orgUnits` object, nullable — Org units of the position
    - `companyDescription` string, nullable — Company description
    - `customFields` object, nullable — custom fields
    - `sourcers` Person[], nullable — all the recruiters/sourcers related to this positions
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `workflowTemplateId` string, nullable — Indicates which workflow this position belongs to
    - `status` string, nullable, required — status
    - `jobCode` string, nullable — ATS attribute which identifies the job this jobrequestion is mapped to
    - `open` boolean, nullable, required — status of the position open or not
    - `postingUrl` string, nullable — posting url
    - `atsUserGroups` AtsUserGroups[], nullable — ATS user groups
      - `userGroupId` string, nullable — Ats Group of a user
    - `createdBy` string, nullable — Email of the user who created this position
    - `function` string, nullable — job function
    - `jobStages` string[], nullable — job_stages
    - `requiredSkills` string[], nullable — required skills
    - `questions` Questions[], nullable — questions
      - `choices` QuestionChoice[], nullable — Question choices
        - `label` string, nullable — label
        - `value` string, nullable — value
      - `choicesV2` QuestionLabel[], nullable — Question choices V2. It supports language mapping.
        - `langMappingList` LangMapping[], nullable — lang_mapping_list
          - `locale` string, nullable — locale
          - `label` string, nullable — label
        - `label` string, nullable — label
        - `value` string, nullable — value
      - `questionId` string, nullable, required — question_id
      - `help` string, nullable — help
      - `type` string, nullable — type of the question. e.g.-choice, numeric or text
      - `question` QuestionLabel
        - `langMappingList` LangMapping[], nullable — lang_mapping_list
          - `locale` string, nullable — locale
          - `label` string, nullable — label
        - `label` string, nullable — label
        - `value` string, nullable — value
      - `required` boolean, nullable — required
    - `locationState` string, nullable — State of the location
    - `locations` string[], nullable — location
    - `positionId` integer, nullable — EF Position ID
    - `description` string, nullable — job description
  - `calibrationData` CalibrationData
    - `flags` string[], nullable — flags
    - `graduationYear` string, nullable — graduationYear
    - `workCategories` string[], nullable — workCategories
    - `skills` string[], nullable — skills
    - `diversity` string[], nullable — diversity
    - `idealCandidates` string[], nullable — ideal_candidates
    - `companies` string[], nullable — companies
    - `titles` string[], nullable — titles
    - `educationLevel` string[], nullable — different education levels
    - `relocation` string[], nullable — relocation
    - `seniorities` string[], nullable — seniorities
    - `maxExperience` integer, nullable — maxExperience
    - `schools` string[], nullable — schools
    - `skillProficiencies` SkillProficiency[], nullable — skill proficiencies of the role
      - `proficiency` number, float, nullable — proficiency of the role
      - `skillGroupList` SkillGroupList[], nullable — skill group list of a role
        - `proficiency` number, float, nullable — group proficiency of the skill group
        - `groupName` string, nullable — name of the skill group
        - `level` string, nullable — level of the role
        - `skillCategory` string, nullable — skill category of the skill group
      - `level` string, nullable — level of the role
      - `name` string, nullable — name of the role
    - `idealCandidateUrls` string[], nullable — idealCandidatesUrls
    - `minExperience` integer, nullable — minExperience
    - `notes` string, nullable — notes
    - `locations` string[], nullable — locations
  - `role` Role
    - `templates` CalibrationTemplate[], nullable — all calibration templates associated with the role
      - `id` integer, nullable — id of the calibration template
      - `name` string, nullable — Name of the calibration template
    - `name` string, nullable — name of the role
  - `positionId` integer, nullable — job id

## Response `200`

OK

- PositionSchema
  - `createdAt` integer, nullable — Creation timestamp in epoch format
  - `confidential` boolean, nullable — if the position is confidential or not
  - `hiringManager` Person
    - `email` string, nullable — email
    - `name` string, nullable, required — Name
  - `groupId` string, nullable — group id
  - `name` string, nullable, required — Title of the Position
  - `followers` string[], nullable — all the followers of the position
  - `jobDescription` string, nullable — Detailed Job Description in a text format
  - `systemId` string, nullable — system id
  - `positionDisplayId` string, nullable — display job id
  - `recruiter` Person
    - `email` string, nullable — email
    - `name` string, nullable, required — Name
  - `calibrationConfirmedBy` string, nullable — User who confirmed the calibration
  - `open` boolean, nullable — if the position is open or not
  - `createdBy` string, nullable — source of the job
  - `calibrationConfirmedAt` integer, nullable — Confirmed timestamp for the calibration
  - `atsData` ATSPositionData
    - `createdAt` integer, nullable, required — creation timestamp in epoch format
    - `locationCountry` string, nullable — Country of the location
    - `coordinators` Person[], nullable — all the coordinators related to this position
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `businessUnit` string, nullable — business unit
    - `isPrivate` boolean, nullable — Indicates if a position is a private posting
    - `workLocationOption` string, nullable — Indicates the option for working location e.g. onsite, remote_global, remote_local, hybrid
    - `atsEntityId` string, nullable, required — position_id in the ats system
    - `hiringManager` Person
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `internalPostingUrl` string, nullable — internal posting url
    - `evergreen` boolean, nullable — is evergreen
    - `skills` string[], nullable — skills
    - `company` string, nullable, required — company
    - `locationCity` string, nullable — City of the location
    - `lastUpdated` integer, nullable, required — last modified date time in epoch format
    - `displayJobId` string, nullable — display job id
    - `openings` AtsOpenings
      - `closedAt` integer, nullable — Closing timestamp in epoch format
      - `openingDetails` AtsOpeningDetail[], nullable — Details of the openings
        - `status` string, nullable — Status of the opening
        - `closedAt` integer, nullable — Closing timestamp in epoch format
        - `openingId` string, nullable — Opening ID
        - `openedAt` integer, nullable — Opening timestamp in epoch format
        - `closeReason` string, nullable — Reason for closing the opening
        - `candidateId` string, nullable — List of candidate ID
        - `applicationId` string, nullable — List of application ID
      - `numOpenings` integer, nullable — Number of openings. Set to -1 for unlimited openings
      - `openedAt` integer, nullable — Opening timestamp in epoch format
      - `numOpeningsFilled` integer, nullable — Number of openings filled
    - `hiringTeam` HiringTeamMember[], nullable — Unified hiring team array. Each entry: {role, roleKey, name, email}. Includes primary/secondary HMs, primary/secondary recruiters, and custom roles.
      - `role` string, nullable — Role label (e.g. Hiring Manager, HRBP)
      - `email` string, nullable — Email of the team member
      - `name` string, nullable — Name of the team member
      - `roleKey` string, nullable — Storage key for the role (e.g. hiring_manager, secondary_hiring_managers, cust_hrbp)
    - `followers` Person[], nullable — all the followers of the positions as hiring managers etc.
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `startDate` string, nullable — start date of the position in ISO 8601 format (e.g. 2024-05-01)
    - `requisitionType` string, nullable — Requisition Type
    - `systemId` string, nullable — system id
    - `activities` PositionActivities[], nullable — all the activities related to this positions
      - `activityTime` integer, nullable, required — activity time in epoch format
      - `activityType` string, nullable, required — activity type
      - `changeLogs` ChangeLog[], nullable — all the change logs for the activity
        - `newValue` string, nullable, required — new value
        - `fieldName` string, nullable, required — field name
        - `prevValue` string, nullable, required — previous value
      - `message` string, nullable, required — message for the activity
    - `postedFor` string, nullable — internal for internal jobs, external for external jobs, or all for both. Can be omitted for unposted positions.Input values must be one of these: internal, external, all, None
    - `questionnaires` Questionnaire[], nullable — questionnaires
      - `questionDependencies` QuestionDependencies[], nullable — question dependencies
        - `questionId` string, nullable, required — question id
        - `questionSource` string, nullable — question source
        - `choiceValue` string, nullable, required — choice value
        - `dependencyType` string, nullable — dependency type
        - `childQuestionIds` string[], nullable — child question ids
      - `questionnaireId` string, nullable, required — questionnaire id
    - `restrictAccess` boolean, nullable — restrict access
    - `title` string, nullable, required — job title
    - `templateId` integer, nullable — Template id of the template used to create the position
    - `recruiter` Person, required
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `jobPosts` JobPost[], nullable — job postings
      - `publishedTime` integer, nullable, required — published time in epoch format
      - `expirationTime` integer, nullable — expiration time in epoch format
      - `postingTitle` string, nullable, required — posting title
      - `postingId` string, nullable, required — posting id
      - `locale` string, nullable — locale of the ats job post
      - `primaryPost` boolean, nullable — is primary post
      - `jobDescription` string, nullable — job description
      - `postedFor` string, nullable, required — internal for internal jobs, external for external jobs, or all for both.
    - `hiringBand` string, nullable — hiring band
    - `postingTitle` string, nullable — posting title
    - `employmentType` string, nullable — Employment Type
    - `posted` boolean, nullable, required — status of the position posted or not
    - `locationFlexibility` string, nullable — Indicates the flexibility on location e.g. not_flexible, flexible_within_country, flexible_global
    - `orgUnits` object, nullable — Org units of the position
    - `companyDescription` string, nullable — Company description
    - `customFields` object, nullable — custom fields
    - `sourcers` Person[], nullable — all the recruiters/sourcers related to this positions
      - `email` string, nullable — email
      - `name` string, nullable, required — Name
    - `workflowTemplateId` string, nullable — Indicates which workflow this position belongs to
    - `status` string, nullable, required — status
    - `jobCode` string, nullable — ATS attribute which identifies the job this jobrequestion is mapped to
    - `open` boolean, nullable, required — status of the position open or not
    - `postingUrl` string, nullable — posting url
    - `atsUserGroups` AtsUserGroups[], nullable — ATS user groups
      - `userGroupId` string, nullable — Ats Group of a user
    - `createdBy` string, nullable — Email of the user who created this position
    - `function` string, nullable — job function
    - `jobStages` string[], nullable — job_stages
    - `requiredSkills` string[], nullable — required skills
    - `questions` Questions[], nullable — questions
      - `choices` QuestionChoice[], nullable — Question choices
        - `label` string, nullable — label
        - `value` string, nullable — value
      - `choicesV2` QuestionLabel[], nullable — Question choices V2. It supports language mapping.
        - `langMappingList` LangMapping[], nullable — lang_mapping_list
          - `locale` string, nullable — locale
          - `label` string, nullable — label
        - `label` string, nullable — label
        - `value` string, nullable — value
      - `questionId` string, nullable, required — question_id
      - `help` string, nullable — help
      - `type` string, nullable — type of the question. e.g.-choice, numeric or text
      - `question` QuestionLabel
        - `langMappingList` LangMapping[], nullable — lang_mapping_list
          - `locale` string, nullable — locale
          - `label` string, nullable — label
        - `label` string, nullable — label
        - `value` string, nullable — value
      - `required` boolean, nullable — required
    - `locationState` string, nullable — State of the location
    - `locations` string[], nullable — location
    - `positionId` integer, nullable — EF Position ID
    - `description` string, nullable — job description
  - `calibrationData` CalibrationData
    - `flags` string[], nullable — flags
    - `graduationYear` string, nullable — graduationYear
    - `workCategories` string[], nullable — workCategories
    - `skills` string[], nullable — skills
    - `diversity` string[], nullable — diversity
    - `idealCandidates` string[], nullable — ideal_candidates
    - `companies` string[], nullable — companies
    - `titles` string[], nullable — titles
    - `educationLevel` string[], nullable — different education levels
    - `relocation` string[], nullable — relocation
    - `seniorities` string[], nullable — seniorities
    - `maxExperience` integer, nullable — maxExperience
    - `schools` string[], nullable — schools
    - `skillProficiencies` SkillProficiency[], nullable — skill proficiencies of the role
      - `proficiency` number, float, nullable — proficiency of the role
      - `skillGroupList` SkillGroupList[], nullable — skill group list of a role
        - `proficiency` number, float, nullable — group proficiency of the skill group
        - `groupName` string, nullable — name of the skill group
        - `level` string, nullable — level of the role
        - `skillCategory` string, nullable — skill category of the skill group
      - `level` string, nullable — level of the role
      - `name` string, nullable — name of the role
    - `idealCandidateUrls` string[], nullable — idealCandidatesUrls
    - `minExperience` integer, nullable — minExperience
    - `notes` string, nullable — notes
    - `locations` string[], nullable — locations
  - `role` Role
    - `templates` CalibrationTemplate[], nullable — all calibration templates associated with the role
      - `id` integer, nullable — id of the calibration template
      - `name` string, nullable — Name of the calibration template
    - `name` string, nullable — name of the role
  - `positionId` integer, nullable — job id

---

[API](https://skmtc.net/eightfold/apis/api-server-v2-service-service.md) · [All operations](https://skmtc.net/eightfold/apis/api-server-v2-service-service/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/eightfold/api-server-v2-service-service/versions/0fb26f4e41bf/schema)
