Skip to main content
Every error is JSON in the same envelope, with a machine-stable code, a human-readable message, and, for validation failures, a fields map naming exactly what to fix:
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "Validation failed.",
    "fields": {
      "remoteOption": "Must be one of: REMOTE, HYBRID, IN_PERSON.",
      "salaryMin": "Must be a whole non-negative number."
    }
  }
}

Codes you’ll encounter

CodeStatusMeaning
INVALID_SERVICE_KEY401Missing, unknown, or revoked partner key.
NOT_FOUND404No such job, including another company’s jobs.
VALIDATION_FAILED422Bad input, an incomplete publish, or a live edit that would blank a required field. Check fields.
AGREEMENT_OUTDATED409Publishing requires your organization to accept the current terms in the Sorce dashboard first.
PAYMENT_METHOD_REQUIRED402Publishing requires a card on file (add one in Billing).
INVALID_TRANSITION409The status change isn’t legal (e.g. publishing a non-draft, resuming an active job).
JOB_NOT_EDITABLE409Closed and expired jobs can’t be edited.
JOB_FROZEN409Qualifications/questions can’t change once a job has applications.
RATE_LIMITED429Out of tokens for this key; retry after retryAfterSeconds.
INTERNAL5xxSomething broke on our side.

Idempotency notes

Job arrays are replace-sets: locations, qualifications, questions, and budgets become the entire new set you send, so retried PATCHes converge instead of duplicating.