---
title: "Create a new opening"
method: POST
path: "/v2/funnels"
tags: ["Openings and Stages"]
---

# Create a new opening

`POST /v2/funnels`

Create a new Opening

## Request body

- object
  - `active` boolean, nullable — Indicator for whether the opening is active
  - `additional_info` string, nullable — Additional info about the opening
  - `alternative_locales` string[], nullable — List of alternate locales
  - `clone_workflow_id` string, nullable — The unique identifier for a workflow to clone and then associate the clone to the opening
  - `compensation_currency_code` string, nullable — The currency of the pay rate
  - `compensation_type` 'hour' | 'day' | 'month' | 'year', nullable — How often the pay occurs
  - `compensation` string, nullable — The pay rate
  - `custom_id` string, nullable — Identifier custom to opening for the account
  - `customer_attributes` CustomerAttribute[], nullable — List of customer attributes for the opening
    - `value` string, required — Value of the attribute
    - `type` string, required — Human-readable display name of the attribute
    - `key` string, nullable — Machine-readable identifier for the attribute (e.g. JOB_CODE). Optional — not all endpoints that embed customer_attributes populate this field yet (e.g. openings, locations, and location groups currently return only type and value).
  - `do_launch_portal_from_form` boolean, nullable — Indicator for whether to launch the applicant into the workflow after application
  - `external_title` string, nullable — Title that will be show on sourcing and career sites
  - `force_applicant_identity` boolean, nullable — Indicator for whether applicant identity is enforced
  - `is_hiring_funnel` boolean, nullable — Indicator for whether the opening is for hiring
  - `is_private` boolean, nullable — Indicator for whether the opening is private
  - `is_sourcing_funnel` boolean, nullable — Indicator for whether the opening is for sourcing
  - `job_hours` 'full_time' | 'part_time', nullable — Indicator for whether the opening is full or part time
  - `job_industry` 'accounting' | 'agriculture' | 'audio_visual' | 'automotive' | 'banking_and_finance' | 'business_operations' | 'construction' | 'consultancy' | 'customer_service_and_call_centres' | 'dental' | 'education_and_training' | 'electronics' | 'energy_oil_and_gas' | 'engineering' | 'environmental_and_waste' | 'facilities_management' | 'food_hospitality' | 'franchise_services' | 'hair_beauty_and_cosmetics' | 'health_medical_and_related' | 'human_resources' | 'insurance' | 'it_and_internet' | 'legal' | 'logistics_procurement_distribution_and_supply_chain' | 'management_executive' | 'manufacturing_and_production' | 'marketing_advertising_and_pr' | 'media_new_media_and_creative' | 'military_and_defence' | 'mining' | 'nonprofit' | 'other' | 'property_and_real-estate' | 'recruitment' | 'retail' | 'sales' | 'scientific_and_pharmaceuticals' | 'secretarial_and_administration' | 'telecommunications' | 'training' | 'travel_leisure_and_tourism' | 'transportation' | 'web_html_info_design' | 'writing_editing', nullable — Industry the opening is for
  - `job_type` 'permanent' | 'temporary' | 'contract_freelancer' | 'casual' | 'finance_plus_accounting' | 'operations_leadership' | 'all_other_administrative_plus_professional' | 'information_technology' | 'customer_service_plus_operations' | 'local' | 'regional' | 'trainee' | 'shuttle', nullable — The type of job represented by the opening
  - `location_id` string, required — The unique identifier for the location associated to the opening
  - `owner_id` string, nullable — The unique identifier for the owner to be associated to the opening
  - `position_id` string, required — The unique identifier for the position associated to the opening
  - `shift_attributes` Shift
    - `name` string — The name of the shift
    - `id` integer, required
    - `description` string — Description of the position
    - `days_of_week` string[], required — The days the shift occurs on
    - `hours` object, required
      - `start_time` integer — The time the shift starts
      - `end_time` integer — The time the shift ends
    - `customer_attributes` CustomerAttribute[], nullable — List of customer attributes for the position
      - `value` string, required — Value of the attribute
      - `type` string, required — Human-readable display name of the attribute
      - `key` string, nullable — Machine-readable identifier for the attribute (e.g. JOB_CODE). Optional — not all endpoints that embed customer_attributes populate this field yet (e.g. openings, locations, and location groups currently return only type and value).
  - `shift_id` string, nullable — The unique identifier for the shift to be associated to the opening
  - `title` string, required — The title of the opening
  - `use_obiq_form` boolean, nullable — Indicator for whether an external application form will be used
  - `use_workflow` boolean, nullable — Indicator for whether to create a new workflow based on the opening
  - `workflow_attributes` object, nullable — Provide override values for workflow being created or cloned. For use in combination with "use_workflow" or "clone_workflow_id"
    - `title` string
  - `workflow_id` string, nullable — The unique identifier for the workflow to associate to the opening

## Response `201`

Created

- Funnel
  - `active` boolean, required — Indicator for whether the opening is active
  - `go_enabled` boolean, nullable — When true, indicates this opening is enabled for Hire Go and visible in Hire Go.
  - `additional_info` string, nullable — Additional info about the opening
  - `address` string, required — The address of the opening
  - `alternative_locales` string[] — List of alternate locales
  - `apply_url` string, required — The URL with which to apply to the opening
  - `brand` string, nullable — The brand the opening is associated with
  - `created_at` string, required — Date when the opening was created
  - `custom_id` string, nullable — Identifier custom to opening for the account
  - `customer_attributes` CustomerAttribute[], nullable — List of customer attributes for the opening
    - `value` string, required — Value of the attribute
    - `type` string, required — Human-readable display name of the attribute
    - `key` string, nullable — Machine-readable identifier for the attribute (e.g. JOB_CODE). Optional — not all endpoints that embed customer_attributes populate this field yet (e.g. openings, locations, and location groups currently return only type and value).
  - `description` string — The description of the opening
  - `external_title` string, nullable — Title that will be show on sourcing and career sites
  - `fields` OpeningDataField[] — List of data fields in the opening
    - `question` string, required — Text of the question
    - `type` string, required — The type of the input for the question
    - `key` string, required — The key the data is collected under
  - `force_applicant_identity` boolean, nullable — Indicator for whether applicant identity is enforced
  - `id` string, required — Unique identifier for the opening
  - `is_email_optional` boolean — Indicator for whether email is optional for the opening applicants
  - `is_hiring_funnel` boolean, required — Indicator for whether the opening is for hiring
  - `is_internal_funnel` boolean, required — Indicates whether the opening is an internal job posting
  - `is_private` boolean, required — Indicator for whether the opening is private
  - `is_sourcing_funnel` boolean, required — Indicator for whether the opening is for sourcing
  - `is_visible_to_applicant` boolean — Indicator for whether the opening is visible for Candidate AI Agent
  - `job_hours` 'full_time' | 'part_time', nullable — Indicator for whether the opening is full or part time
  - `job_industry` 'accounting' | 'agriculture' | 'audio_visual' | 'automotive' | 'banking_and_finance' | 'business_operations' | 'construction' | 'consultancy' | 'customer_service_and_call_centres' | 'dental' | 'education_and_training' | 'electronics' | 'energy_oil_and_gas' | 'engineering' | 'environmental_and_waste' | 'facilities_management' | 'food_hospitality' | 'franchise_services' | 'hair_beauty_and_cosmetics' | 'health_medical_and_related' | 'human_resources' | 'insurance' | 'it_and_internet' | 'legal' | 'logistics_procurement_distribution_and_supply_chain' | 'management_executive' | 'manufacturing_and_production' | 'marketing_advertising_and_pr' | 'media_new_media_and_creative' | 'military_and_defence' | 'mining' | 'nonprofit' | 'other' | 'property_and_real-estate' | 'recruitment' | 'retail' | 'sales' | 'scientific_and_pharmaceuticals' | 'secretarial_and_administration' | 'telecommunications' | 'training' | 'travel_leisure_and_tourism' | 'transportation' | 'web_html_info_design' | 'writing_editing', nullable — Industry the opening is for
  - `job_type` 'permanent' | 'temporary' | 'contract_freelancer' | 'casual' | 'finance_plus_accounting' | 'operations_leadership' | 'all_other_administrative_plus_professional' | 'information_technology' | 'customer_service_plus_operations' | 'local' | 'regional' | 'trainee' | 'shuttle', nullable — The type of job represented by the opening
  - `location` Location, required
    - `name` string, required — The name of the location
    - `id` string, required — Unique identifier for the location
    - `latitude` number — The latitude of the location
    - `longitude` number — The longitude of the location
    - `customer_attributes` CustomerAttribute[], nullable — List of customer attributes for the location
      - `value` string, required — Value of the attribute
      - `type` string, required — Human-readable display name of the attribute
      - `key` string, nullable — Machine-readable identifier for the attribute (e.g. JOB_CODE). Optional — not all endpoints that embed customer_attributes populate this field yet (e.g. openings, locations, and location groups currently return only type and value).
    - `location_group` LocationGroup, required
      - `name` string, required — The name of the location group
      - `id` string, required — Unique identifier for the location group
      - `customer_attributes` CustomerAttribute[], nullable — List of customer attributes for the location group
        - `value` string, required — Value of the attribute
        - `type` string, required — Human-readable display name of the attribute
        - `key` string, nullable — Machine-readable identifier for the attribute (e.g. JOB_CODE). Optional — not all endpoints that embed customer_attributes populate this field yet (e.g. openings, locations, and location groups currently return only type and value).
  - `opening_pay_rate` OpeningPayRate
    - `compensation` string, nullable — The pay rate
    - `compensation_currency_code` string — The currency of the pay rate
    - `compensation_type` 'hour' | 'day' | 'month' | 'year' — How often the pay occurs
    - `compensation_min` string, nullable — The minimum pay range
  - `owner` User, required
    - `name` string, required — The name of the user
    - `id` string, required — Unique identifier for the user
    - `email` string, required — The email of the user
  - `pay_transparency_required` boolean — Indicator for whether pay transparency is legally required for this opening's location
  - `pipeline_ratio` integer, nullable — Pipeline ratio associated to the opening
  - `position` Position, required
    - `name` string, required — The name of the position
    - `id` string, required — Unique identifier for the position
    - `customer_attributes` CustomerAttribute[], nullable — List of customer attributes for the position
      - `value` string, required — Value of the attribute
      - `type` string, required — Human-readable display name of the attribute
      - `key` string, nullable — Machine-readable identifier for the attribute (e.g. JOB_CODE). Optional — not all endpoints that embed customer_attributes populate this field yet (e.g. openings, locations, and location groups currently return only type and value).
  - `requirements` string — Description of what is required for the opening
  - `shift` Shift
    - `name` string — The name of the shift
    - `id` integer, required
    - `description` string — Description of the position
    - `days_of_week` string[], required — The days the shift occurs on
    - `hours` object, required
      - `start_time` integer — The time the shift starts
      - `end_time` integer — The time the shift ends
    - `customer_attributes` CustomerAttribute[], nullable — List of customer attributes for the position
      - `value` string, required — Value of the attribute
      - `type` string, required — Human-readable display name of the attribute
      - `key` string, nullable — Machine-readable identifier for the attribute (e.g. JOB_CODE). Optional — not all endpoints that embed customer_attributes populate this field yet (e.g. openings, locations, and location groups currently return only type and value).
  - `stages` OpeningStage[], required — List of stages in the opening
    - `title` string, required — Title of the stage
    - `type` string, required — Type of the stage
    - `parent_id` string, nullable — Unique identifier of the stage's parent
    - `id` string, required — Unique identifier for the stage
    - `data_fields` object[]
      - `key` string, required — The key the data is collected under
      - `type` string, required — The type of the input for the question
      - `question` string, required — Text of the question asked on the form
      - `options` object[]
        - `value` string, required — The value persisted for the option
        - `label` string, required — The human-readable value for the option
  - `time_zone` string, required — The timezone of the opening
  - `title` string — The title of the opening
  - `workflow_id` string, nullable — Unique identifier with the workflow associated to the opening

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/fountain/apis/hire-public-api.md) · [All operations](https://skmtc.net/fountain/apis/hire-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fountain/hire-public-api/versions/5f406c0e9462/schema)
