Skip to main content
A job goes live either by creating it with "publish": true or by calling POST /jobs/{id}/publish on a draft. Both run the same three gates the Sorce dashboard runs.

Gate 1: Completeness

A live listing must carry:
  • title and description
  • remoteOption, plus remoteCountry (REMOTE) or at least one location (HYBRID / IN_PERSON). See Locations
  • jobType and jobLevel
  • A salary range: salaryMinsalaryMax, with salaryPeriod
  • bidPerQualifiedApplicantCents > 0: what you pay per qualified applicant
  • At least one REQUIRED qualification: what applicants are screened against
Anything missing comes back as 422 VALIDATION_FAILED with a fields map naming each gap.

Gate 2: Terms

Your organization accepts the Sorce Employer Terms of Service once, in the dashboard. The API cannot accept terms on your behalf. Until then, publishing returns 409 AGREEMENT_OUTDATED.

Gate 3: Payment method

Publishing is what lets a balance accrue, so a card on file is the price of going live: 402 PAYMENT_METHOD_REQUIRED until one is added in the dashboard’s Billing tab.

Create-and-publish is atomic

curl -X POST https://www.sorce.jobs/api/external/v1/jobs \
  -H "Authorization: Bearer sk_ext_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Senior Product Designer",
    "description": "Own the design system end to end.",
    "remoteOption": "REMOTE",
    "remoteCountry": "United States",
    "jobType": "FULL_TIME",
    "jobLevel": "SENIOR",
    "salaryMin": 150000,
    "salaryMax": 195000,
    "salaryPeriod": "ANNUAL",
    "bidPerQualifiedApplicantCents": 1500,
    "qualifications": [
      { "text": "5+ years of product design experience", "kind": "REQUIRED", "order": 0 }
    ],
    "publish": true
  }'
If any gate fails, nothing is created. No orphan drafts to clean up. Retry the same payload once the gate is satisfied.

After publish

  • The listing runs for 30 days (expiresAt), then flips to EXPIRED.
  • pause hides it temporarily; resume brings it back; close is terminal.
  • Edits to a live job are re-validated against Gate 1 and rejected whole if they’d leave the listing incomplete.
  • Once applications arrive, qualifications and questions freeze (409 JOB_FROZEN); the bid and everything else stay editable.