Recruiter: Jobs

Create a job posting draft in an existing project

Create a Recruiter job-posting DRAFT attached to an EXISTING hiring project (project_name is not accepted on this route, the project comes from the path). isDestructive:false, nothing is spent and nothing is published until you call the publish endpoint. Requires a Recruiter seat.

post/v1/{account_id}/recruiter/projects/{project_id}/jobs

Request

  • Base URL: https://api.curviate.com
  • URL: https://api.curviate.com/v1/{account_id}/recruiter/projects/{project_id}/jobs
  • Auth: HTTP bearer

Path parameters

account_idstring required

The account ID (acc_...) whose Recruiter seat creates the draft.

project_idstring required

The project ID. Obtain it from data[].id of GET .../recruiter/projects.

Request body

workplace_type'ON_SITE' | 'HYBRID' | 'REMOTE' required
locationstring required

A resolved LOCATION parameter id.

employment_status'FULL_TIME' | 'PART_TIME' | 'CONTRACT' | 'TEMPORARY' | 'OTHER' | 'VOLUNTEER' | 'INTERNSHIP' required
seniority_level'INTERNSHIP' | 'ENTRY_LEVEL' | 'ASSOCIATE' | 'MID_SENIOR_LEVEL' | 'DIRECTOR' | 'EXECUTIVE' | 'NOT_APPLICABLE' required
descriptionstring required

Content; minimum 200 characters, forwarded verbatim, never persisted.

industrystring[] required

1-3 resolved industry parameter ids.

job_functionstring[] required

1-3 resolved job-function parameter ids.

skillsstring[]

Up to 10 resolved skill parameter ids.

include_poster_infoboolean

Whether to show the posting recruiter's info. Defaults to true.

tracking_pixel_urlstring
company_job_idstring

Your own external job-requisition id, for reference.

Response

Job posting draft created in an EXISTING project. isDestructive:false, a reversible draft; nothing is spent and nothing is published until you call the publish endpoint. Requires a Recruiter seat.

object'recruiter_job_posting_created' required

Response type discriminator.

job_idstring required
project_idstring required

Example response

{
  "safety_warning": {
    "row": "profile_views",
    "reset_at": "2026-09-05T00:00:00.000Z",
    "hint": {
      "parameter": "profile_views.ceiling",
      "message": "This account is at its ceiling for profile_views. This action went through because profile_views.posture is warn, and it counted: 101 of 100 this window. Raise profile_views.ceiling, or wait for the window to reset at 2026-09-05T00:00:00.000Z."
    },
    "reason": "ceiling",
    "blocked": false
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.