WarmablyWarmablyDOCS
Search docs⌘K
Dashboard
API Reference/Endpoints

Publish a job posting

POST/api/linkedin/gateway/linkedin/jobs/{draft_id}/publish

Takes a draft created with Create a job posting live, either as a free listing or boosted with a budget. LinkedIn sometimes asks for a one-time verification before the first publish on an account — see the note below.

Authentication

Send your personal API key as a bearer token. A missing, malformed or revoked key returns 401.

Path parameters

FieldTypeDescription
draft_id *stringThe draft's id, from Create a job posting.

Body parameters

FieldTypeDescription
account_id *stringThe connected account to publish from.
mode *"FREE" | "PROMOTED" | "PROMOTED_PLUS"Publish as a plain listing, or boosted with a spend commitment.
service"CLASSIC" | "RECRUITER"Which LinkedIn service to publish under. Defaults to Classic.
hiring_photo_framebooleanAdd a hiring frame to your profile picture while this posting is live.
bypass_email_verificationbooleanSkip confirming you're allowed to post on behalf of the company (only applies where that check would otherwise run).
budgetobjectRequired for PROMOTED/PROMOTED_PLUS { currency, amount } as either a daily or monthly spending cap.

Response fields

FieldTypeDescription
objectstringLinkedinJobPostingPublished once it's live, or LinkedinJobPostingPublishCheckpoint if LinkedIn needs verification first.
job_statestringPresent on the published response — the posting's new lifecycle state.
type"EMAIL_VERIFICATION" | "OTP"Present on the checkpoint response — which kind of code to expect.
job_idstringPresent on both — the posting's id.
A LinkedinJobPostingPublishCheckpoint response means the post didn't go live yet. Send the code the member receives to Solve a publishing checkpoint using the same draft_id to finish the job.

Errors

·401 Unauthorized. The key is missing, malformed or has been rotated.·403 Forbidden. account_id doesn't belong to this key, or the account can't publish this mode.·404 Not Found. No draft with that id belongs to this account.·422 Unprocessable Entity. The workspace has used up its job-posting slots for this billing period.
CredentialsRequired
AuthorizationBearer wm_live_••••••••
RequestTry it
curl -X POST https://api.warmably.com/api/linkedin/gateway/linkedin/jobs/3897456210/publish \
  -H "Authorization: Bearer wm_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "459993d2-b0e7-4b19-baf9-45252ca324cf",
    "mode": "FREE"
  }'
Response
200 OK
{
  "object": "LinkedinJobPostingPublished",
  "job_state": "active",
  "job_id": "3897456210"
}
No key yet? Create one from Dashboard → API Keys.