---
title: "Publish a job posting"
method: POST
path: "/api/v1/linkedin/jobs/{draft_id}/publish"
tags: ["LinkedIn Specific"]
---

# Publish a job posting

`POST /api/v1/linkedin/jobs/{draft_id}/publish`

## Request

- Base URL: `https://api1.unipile.com:13111`
- URL: `https://api1.unipile.com:13111/api/v1/linkedin/jobs/{draft_id}/publish`
- Auth: API key in header `X-API-KEY`
- TypeScript: <https://skmtc.dev/unipile/apis/unipile-api-reference/docs/api/v1/linkedin/jobs/:draft_id/publish/post.ts> (a function with typed inputs; its response is checked against the schema)

Publish the job posting draft you have been working on.

## Path parameters

- `draft_id` string, required

## Request body

- union
  - object
    - `account_id` string, required: An Unipile account id.
    - `service` 'CLASSIC' | 'RECRUITER': The Linkedin service the job posting depends on. Default is classic.
    - `hiring_photo_frame` boolean: Whether or not to add the hiring photo frame to you profile picture.
    - `bypass_email_verification` boolean: Whether or not to verify if you're allowed to post a job on behalf on the current company.
    - `mode` 'FREE', required
  - object
    - `account_id` string, required: An Unipile account id.
    - `service` 'CLASSIC' | 'RECRUITER': The Linkedin service the job posting depends on. Default is classic.
    - `hiring_photo_frame` boolean: Whether or not to add the hiring photo frame to you profile picture.
    - `bypass_email_verification` boolean: Whether or not to verify if you're allowed to post a job on behalf on the current company.
    - `mode` 'PROMOTED' | 'PROMOTED_PLUS', required: PROMOTED is common to Linkedin Classic and Recruiter while PROMOTED_PLUS is specific to Classic.
    - `budget` union: Default value will be based on LinkedIn recommendations.
      - object
        - `daily` object, required
          - `currency` string, required
          - `amount` number, required
      - object
        - `monthly` object, required
          - `currency` string, required
          - `amount` number, required

## Response `200`

OK. Request succeeded.

- union
  - object
    - `object` 'LinkedinJobPostingPublished', required
    - `job_state` 'active' | 'draft' | 'review' | 'closed' | 'paused', required
    - `job_id` string, required
  - object
    - `object` 'LinkedinJobPostingPublishCheckpoint', required
    - `type` 'EMAIL_VERIFICATION' | 'OTP', required
    - `job_id` string, required

## Other responses

- `401`: ## Unauthorized ### Disconnected account The account appears to be disconnected from the provider service. undefined
- `403`: ## Forbidden ### Insufficient permissions - Type: "errors/insufficient_permissions" Valid authentication but insufficient permissions to perform the request. ### Password reset required - Type: "errors/password_reset_required" LinkedIn requires you to change your password. Please change it on LinkedIn, then reconnect your account. ### Account restricted - Type: "errors/account_restricted" Access to this account has been restricted. Please sign in to the provider service to learn more about how to unlock your account. ### Account mismatch - Type: "errors/account_mismatch" This action cannot be done with your account. ### Unknown authentication context - Type: "errors/unknown_authentication_context" An additional step seems necessary to complete login. Please connect to provider with your browser to find out more, then retry authentication. ### Session mismatch - Type: "errors/session_mismatch" Token User id does not match client session id. ### Feature not subscribed - Type: "errors/feature_not_subscribed" The requested feature has either not been subscribed or not been authenticated properly. ### Subscription required - Type: "errors/subscription_required" The action you're trying to achieve requires a subscription to provider's services. ### Resource access restricted - Type: "errors/resource_access_restricted" You don't have access to this resource. ### Action required - Type: "errors/action_required" An additional step seems necessary. Complete authentication on the provider's native application and try again.
- `404`: ## Not Found ### Resource not found. The requested resource were not found. Account not found
- `422`: ## Unprocessable Entity ### Invalid account Provided account is not designed for this feature. undefined
- `500`: ## Internal Server Error ### Unexpected error - Type: "errors/unexpected_error" Something went wrong. {{moreDetails}} ### Provider error - Type: "errors/provider_error" The provider is experiencing operational problems. Please try again later. ### Authentication intent error - Type: "errors/authentication_intent_error" The current authentication intent was killed after failure. Please start the process again from the beginning.
- `502`: ## Bad Request ### Invalid parameters One or more request parameters are invalid or missing. This draft is not eligible to free posting.
- `503`: ## Service Unavailable ### No client session - Type: "errors/no_client_session" No client session is currently running. ### No channel - Type: "errors/no_channel" No channel to client session. ### Handler missing - Type: "errors/no_handler" Handler missing for that request. ### Network down - Type: "errors/network_down" Network is down on server side. Please wait a moment and retry. ### Service unavailable - Type: "errors/service_unavailable" Please try again later.
- `504`: ## Gateway Timeout ### Request timed out - Type: "errors/request_timeout" Request Timeout. Please try again, and if the issue persists, contact support.

## Changes

- **2026-11-03** `e74f29ca2aaa`: 4 warning
  - added the new `errors/connection_limit_reached` enum value to the `type` response property for the response status `422`
  - added the new `errors/not_supported_by_provider` enum value to the `type` response property for the response status `422`
  - added the new `errors/password_reset_required` enum value to the `type` response property for the response status `403`
  - added the new `errors/target_audience_too_small` enum value to the `type` response property for the response status `502`

[Operation history](https://skmtc.dev/unipile/apis/unipile-api-reference/changes/api/v1/linkedin/jobs/:draft_id/publish/post.md)

---

[API](https://skmtc.dev/unipile/apis/unipile-api-reference.md) - [All operations](https://skmtc.dev/unipile/apis/unipile-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/unipile/apis/unipile-api-reference/revisions/e74f29ca2aaa?raw)
