Job
New in 0.15.0. Classic LinkedIn job-posting management is now a first-class command family — draft, price, publish, close, and review applicants without leaving the CLI.
job getexisted before 0.15.0 (a public, unauthenticated-lookup-shaped read); everything else in this group is new.
The job commands manage your own classic LinkedIn job postings — creating drafts, pricing a publish, publishing (free or paid/promoted), closing, and reviewing applicants. All commands except job get are account-scoped and require --account (or a default set via curviate config set-account).
job get
# Retrieve one public LinkedIn job posting's full detail (read, any posting — not only your own)
curviate job get <id><id> accepts a job URL (e.g. https://www.linkedin.com/jobs/view/4100000000) or a bare numeric job id.
job list
# List your own classic job postings by state (paginated read)
# --state is required
curviate job list --state <DRAFT|OPEN|CLOSED|REVIEW|SUSPENDED> [--limit <n>] [--cursor <token>] [--all] [--max-pages <n>]job create
Creates a draft — never publishes, never spends. All 7 body fields below are required (job title, company, workplace type, location, employment status, description, and apply method); --notification-email is required when --apply-method linkedin, and --website-url is required when --apply-method external.
curviate job create \
--job-title <title>|--job-title-id <id> \
--company <name>|--company-id <id> \
--workplace-type <ON_SITE|HYBRID|REMOTE> \
--location <location_parameter_id> \
--employment-status <FULL_TIME|PART_TIME|CONTRACT|TEMPORARY|OTHER|VOLUNTEER|INTERNSHIP> \
--description "<full job description, min 200 chars>" \
--apply-method <linkedin|external> \
[--notification-email <email>] \
[--website-url <url>] \
[--skills <parameter_id1,parameter_id2>]--location takes a LOCATION parameter id — resolve one with curviate search parameters --type LOCATION --keywords "<city>". --skills is a comma-separated list of skill parameter ids and is optional.
job update
# Apply a partial update to a job posting you own (write, --preview accepted)
# Same flag set as job create; every flag is optional — omitted fields are left unchanged
curviate job update <id> [--job-title <t>] [--company <c>] [--workplace-type <w>] [--location <id>] [--employment-status <e>] [--description <d>] [--apply-method <m>] [--skills <ids>]job budget
Price a publish before committing any money.
# Price a publish (read)
curviate job budget <id>job publish
# Publish a draft (write, --preview accepted)
# --mode is required. PROMOTED and PROMOTED_PLUS spend real money and require the full --budget-* triple.
curviate job publish <id> --mode <FREE|PROMOTED|PROMOTED_PLUS> [--budget-currency <ISO-4217>] [--budget-amount <n>] [--budget-scope <DAILY|TOTAL>]job close
Stop a posting from accepting applications. Irreversible once the posting is LISTED.
# Close a posting (write, bodyless, --preview accepted)
curviate job close <id>job applicants and job applicant
# List applicants to a posting you own (paginated read, POST-as-search)
# --ratings filters by rating; omit for the full funnel
curviate job applicants <id> [--ratings <UNRATED,NOT_A_FIT,MAYBE,GOOD_FIT>] [--limit <n>] [--cursor <token>] [--all] [--max-pages <n>]# Get one applicant's full detail, including contact info (read)
curviate job applicant get <id> <applicant_id># Download an applicant's résumé as binary (--preview not accepted)
# -o writes the bytes to a file; omit to stream to stdout
curviate job applicant resume <id> <applicant_id> [-o <output-file>]Examples
Look up a public job posting
curviate job get https://www.linkedin.com/jobs/view/4100000000 --account acc_YOUR_ACCOUNT_IDList your open postings
curviate job list --state OPEN --account acc_YOUR_ACCOUNT_IDCreate and price a draft
curviate job create \
--job-title "Senior ML Engineer" \
--company-id 1234567 \
--workplace-type REMOTE \
--location 106967730 \
--employment-status FULL_TIME \
--description "We're looking for a Senior ML Engineer to join our platform team. You'll own the training pipeline end to end, from data curation through deployment..." \
--apply-method linkedin \
--notification-email hiring@acme.com \
--account acc_YOUR_ACCOUNT_ID
# => { "id": "job_YOUR_JOB_ID", "state": "DRAFT", ... }
curviate job budget job_YOUR_JOB_ID --account acc_YOUR_ACCOUNT_IDPublish for free
curviate job publish job_YOUR_JOB_ID --mode FREE --account acc_YOUR_ACCOUNT_IDPublish promoted with a daily budget
curviate job publish job_YOUR_JOB_ID \
--mode PROMOTED \
--budget-currency EUR \
--budget-amount 25 \
--budget-scope DAILY \
--account acc_YOUR_ACCOUNT_IDReview applicants and download a résumé
curviate job applicants job_YOUR_JOB_ID --ratings GOOD_FIT --account acc_YOUR_ACCOUNT_ID
curviate job applicant get job_YOUR_JOB_ID app_YOUR_APPLICANT_ID --account acc_YOUR_ACCOUNT_ID
curviate job applicant resume job_YOUR_JOB_ID app_YOUR_APPLICANT_ID -o resume.pdf --account acc_YOUR_ACCOUNT_IDClose a posting
curviate job close job_YOUR_JOB_ID --account acc_YOUR_ACCOUNT_ID