Jobs

Create job posting draft

Creates a classic LinkedIn job posting as a DRAFT on the connected account. This op never publishes and never spends money, the draft is safe to create and leave unpublished. Publishing is a separate, explicit operation.

post/v1/{account_id}/jobs

Request

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

Path parameters

account_idstring required

The connected LinkedIn account to create the job posting on behalf of.

Request body

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

Workplace arrangement.

locationstring required

A LOCATION parameter id from GET /v1/{account_id}/search/parameters.

employment_status'FULL_TIME' | 'PART_TIME' | 'CONTRACT' | 'TEMPORARY' | 'OTHER' | 'VOLUNTEER' | 'INTERNSHIP' required

Employment type.

descriptionstring required

Full job description (minimum 200 characters). Content passes through verbatim, never stored.

skillsstring[]

Optional skill parameter ids from GET /v1/{account_id}/search/parameters.

screening_questionsobject[]

Optional screening questions attached to the posting.

rejection_settingsobject

Optional automatic-rejection configuration.

Response

The created job posting, in DRAFT state. Content fields (title, description) are returned verbatim and are never stored. This op never publishes and never spends money.

object'job_posting' required

Response type discriminator.

idstring required

The job posting's numeric identifier.

titlestring required

Job title (content pass-through, never stored).

locationstring

Job location, when set.

state'DRAFT' | 'LISTED' | 'CLOSED' | 'REVIEW' | 'SUSPENDED' required

Posting lifecycle state.

is_repostboolean required

Whether this posting is a repost of a prior one.

is_application_limit_reachedboolean required

Whether this posting has reached its application limit.

industriesstring[]

Industries associated with this posting, when set.

created_atstring required

ISO-8601 UTC timestamp the posting was created.

descriptionstring required

Full job description text (content pass-through, never stored).

views_countnumber

Number of views so far, when tracked.

applications_countnumber required

Number of applicants so far.

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

Workplace arrangement.

employment_status'FULL_TIME' | 'PART_TIME' | 'CONTRACT' | 'TEMPORARY' | 'OTHER' | 'VOLUNTEER' | 'INTERNSHIP' required

Employment type.

published_atstring

ISO-8601 UTC timestamp the posting was published, when set.

expires_atstring

ISO-8601 UTC timestamp the posting expires, when set.

closed_atstring

ISO-8601 UTC timestamp the posting was closed, when set.

listed_atstring

ISO-8601 UTC timestamp the posting was listed, when set.

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.