POST /vendor/jobs/postings

This call allows you to to create a new posting in XING jobs. Please find an example request at the very bottom.

Required parameters

organization_id You'll get these unique IDs from your point of contact type in our sales department. It is mandatory to bill your job postings to the correct account.

NOTE: the posting API only applies static validation on the 'order_id' and 'organization_id' fields. You'll only see errors with status code 400, which are returned if the field is not present or if the value isn't a valid integer. It does not validate contract related parameters of the order such as contingent or run-time of the order. To check the status of your posting, use the posting states endpoint
order_id
function Title of the job posting. Length is limited to 255 characters.
company_name Name of the company advertising this job posting. Length is limited to 255 characters.
description The description of the posting. Your posting should at least contain line break tags for a good user experience. The following HTML tags are available for styling:
h2, h3, h4, h5, hr, a, br, li, ol, ul, p, em, i, b, strong
Other tags and attributes including style tags and inline CSS will be removed. Length is limited to 10.000 characters.
You may only use either description or description_template.
description_template The description_template is a complex field with multiple child elements which allows for greater control over the appearance of your job ad. The individual fields are described further below in this documentation.
You may only use either description or description_template.
city City of the job location. Please provide real and exact values only. For example, sending “Somecity (near Munich)” as city would be accepted by the API but may lead to problems with our geolocation search and, as a result, less traffic for your job posting on our search page. Multiple locations are not supported.
country Country of the job location. Please find available values here.
reply_setting Defines how candidates can apply for this job posting. Possible values are:
  • email - requires parameter 'reply_email'
  • url - requires parameter 'reply_url'
  • xing_apply
    • If you want to receive applications via xing_apply you have two options:
      • Set a ‘reply_email’, then all the applications will be sent to the provided email account (Important: that will mean that you won’t have the option to consume them using the API endpoint provided for that purpose)
      • Don’t set a ‘reply_email’, then to receive applications via xing_apply in your Application Tracking System (ATS), the ATS needs to have implemented the respective API endpoint. Documentation of the mentioned API endpoint can be found here.
    • You can provide optionally the parameters 'xing_apply_privacy_policy' and 'xing_apply_terms_and_conditions'.

Optional parameters

zipcode optional Zipcode, street and region of the job location. Use this along with mandatory parameters city and country to define the location more precisely.
street optional
region optional
language optional Language of the job posting. Should be an ISO code like defined in ISO 639-1
tags optional Comma separated list of keywords to improve the searchability of the posting. Length is limited to 500 characters.
skills optional Comma separated list of skills a candidate should have. This parameter used for recommendations and will not be shown in the job posting. Length is limited to 255 characters
discipline_id optional Discipline ID of the job posting. Please find available values here.
industry_id optional Industry ID of the job posting. Please find available values here.
level optional Career level of the job posting. Please find available values here.
job_type optional Type of this job posting. Must be one of:
  • FULL_TIME
  • PART_TIME
  • CONTRACTOR
  • INTERN
  • SEASONAL
  • TEMPORARY
  • VOLUNTARY
remote_options optional Choose one, multiple, or no value from this list of optional fields to define the possible remote options for the job posting:
  • FULLY_REMOTE
  • PARTIALLY_REMOTE
  • NON_REMOTE
point_of_contact_type optional Defines who can be contacted for more information about this job posting. It will be shown right beneath the job posting. Possible values are:
  • user - requires parameters 'poster_url' and 'user_role'
  • company - requires parameter 'company_profile_url'
  • none - requires parameter 'user_role'
reply_email optional Conditionally required Email address to apply. This is required if the reply_setting is set to email.
reply_url optional Conditionally required URL to an application form. This is required if the reply_setting is set to url.
poster_url optional URL to a XING user profile. Job seekers applying will be able to send a private message to this user.
user_role optional Conditionally required In case the point_of_contact_type is 'user' or 'none', this parameter is required and will describe the role of this user appearing next to the job posting. Possible values are:
  • HR_CONSULTANT
  • HR_DEPARTMENT
  • MANAGER
  • EMPLOYEE
  • EXTERNAL_RECRUITER
company_profile_url optional Conditionally required URL to a XING company profile. This is required if publish_to_company is set or point_of_contact_type is set to company. Please click here for further information
publish_to_company optional Boolean indicating whether the posting should be displayed on the company profile. Requires company_profile_url to define it. Default is false. Please click here for further information
posting_url optional If you’d like to use full HTML, use this parameter to include a HTTPS URL to a job ad on your website which will then be shown in an iframe as a description of your job ad. Please click here for further information
posting_logo_content optional Base64 URL encoded logo image for Standard and Campus postings. Maximum image size is 3 MB. Allowed image types are GIF, JPEG and PNG. Please click here for further information

NOTE: this image is ignored if the job posting uses a description template with a non-empty description_template.header_image
job_code optional A free text job code / ID. It is not shown on the job posting and can be used to identify your postings in our GET calls or for billing reasons. Length is limited to 100 characters
salary optional The salary can be defined by either a single value (salary) OR as range by providing a lower boundary and a higher one. You can’t submit a single value and a range at the same time. Provide all this fields as integer numbers without any formatting. Please click here for further information
salary_range_start optional
salary_range_end optional
salary_interval optional The interval in which the salary or salary range is defined. Possible values are:
  • yearly (default)
  • monthly
  • weekly
  • hourly
currency optional The currency of the salary. Possible values are:
  • EUR (default)
  • CHF
  • CNY
  • DKK
  • BRL
  • GBP
  • HUF
  • JPY
  • KPW
  • KRW
  • PLN
  • RON
  • RUB
  • SEK
  • TRY
  • USD
student_classification optional Conditionally required This is required for Campus job postings and classifies them.
Please find available values here
video_link optional Video link from Vimeo or YouTube. Video will be included below the job posting content. Only available for Professional+ postings

NOTE: this video is ignored if the job posting uses a description template and at least one of description_template.video_youtube or description_template.video_vimeo fields are non-empty
xing_apply_privacy_policy optional External URL for the privacy policy for a job posting.
If the reply_setting is set to xing_apply you can provide this field
The value must be a valid HTTP or HTTPS URL.
*This value cannot be changed once provided
xing_apply_terms_and_conditions optional External URL for the terms and conditions for a job posting.
If the reply_setting is set to xing_apply you can provide this field
The value must be a valid HTTP or HTTPS URL.
*This value cannot be changed once provided
description_template.title_color optional Color of headlines for all sections in the description_template. The format is a hex color code (e.g. #004665)
description_template.company_description optional Describes what your company is doing and what an applicant should know about your company. If present, it must contain a "content" field and optionally a "title". The title can not contain any html tag. It will be rendered as h2, therefore h2-tags are not allowed in the content section, but all of the following html tags are available for styling:
h3, h4, h5, hr, a, br, li, ol, ul, p, em, i, b, strong
Forbidden tags will be removed from the description. Furthermore a-tags can only contain href-attributes.
The "content" field can not have more than 5000 characters!
description_template.responsibility optional What will be the responsibilities of an applicant in their new position. If present, it must contain a "content" field and optionally a "title". The title can not contain any html tag. It will be rendered as h2, therefore h2-tags are not allowed in the content section, but all of the following html tags are available for styling:
h3, h4, h5, hr, a, br, li, ol, ul, p, em, i, b, strong
Forbidden tags will be removed from the description. Furthermore a-tags can only contain href-attributes.
The "content" field can not have more than 5000 characters!
description_template.skills optional What skills do you desire or require from the applicant to be the right fit for this job. If present, it must contain a "content" field and optionally a "title". The title can not contain any html tag. It will be rendered as h2, therefore h2-tags are not allowed in the content section, but all of the following html tags are available for styling:
h3, h4, h5, hr, a, br, li, ol, ul, p, em, i, b, strong
Forbidden tags will be removed from the description. Furthermore a-tags can only contain href-attributes.
The "content" field can not have more than 5000 characters!
description_template.we_offer optional A description of special offers you have for your employees. If present, it must contain a "content" field and optionally a "title". The title can not contain any html tag. It will be rendered as h2, therefore h2-tags are not allowed in the content section, but all of the following html tags are available for styling:
h3, h4, h5, hr, a, br, li, ol, ul, p, em, i, b, strong
Forbidden tags will be removed from the description. Furthermore a-tags can only contain href-attributes.
The "content" field can not have more than 5000 characters!
description_template.contact_info optional A description of how to get in touch with you. If present, it must contain a "content" field and optionally a "title". The title can not contain any html tag. It will be rendered as h2, therefore h2-tags are not allowed in the content section, but all of the following html tags are available for styling:
h3, h4, h5, hr, a, br, li, ol, ul, p, em, i, b, strong
Forbidden tags will be removed from the description. Furthermore a-tags can only contain href-attributes.
The "content" field can not have more than 5000 characters!
description_template.generic_description optional Instead of using the description sections (e.g. company_description, responsibility, skills, we_offer, contact_info), you can define your own custom description with the generic_description. All of the following html tags are available for styling:
h2, h3, h4, h5, hr, a, br, li, ol, ul, p, em, i, b, strong
Forbidden tags will be removed from the description. Furthermore a-tags can only contain href-attributes.
The generic description can not have more than 29000 characters!
description_template.header_image optional URL to an image that will be displayed on top of the job posting. This field accepts valid http or https URLs ending in .jpg, .jpeg and .png extensions (e.g. https://example.com/some-image.jpg).

NOTE: this image takes precedence over the posting_logo_content field
description_template.footer_image optional URL to an image that will be displayed at the bottom of the job posting. This field accepts valid http or https URLs ending in .jpg, .jpeg and .png extensions (e.g. https://example.com/some-image.jpg).
description_template.video_youtube optional URL of an embedded YouTube video. Between 0-1000 characters (e.g. https://www.youtube.com/embed/...).

NOTE: this video takes precedence over the video_link field
description_template.video_vimeo optional URL of a Vimeo video. Between 0-1000 characters (e.g. https://player.vimeo.com/video/...).

NOTE: this video takes precedence over the video_link field
description_template.social_website optional URL of your company's website. Between 0-1000 characters (e.g. https://www.you-social-website.com/...).
description_template.social_facebook optional URL of your company's Facebook page. Between 0-1000 characters (e.g. https://www.facebook.com/...).
description_template.social_twitter optional URL of your company's Twitter page. Between 0-1000 characters (e.g. https://www.twitter.com/...).
description_template.social_youtube optional URL of your company's YouTube channel. Between 0-1000 characters (e.g. https://www.youtube.com/...).
description_template.social_xing optional URL of your company's Xing page. Between 0-1000 characters (e.g. https://xing.com/...).
description_template.social_instagram optional URL of your company's Instagram account. Between 0-1000 characters (e.g. https://www.instagram.com/...).
description_template.social_pinterest optional URL of your company's Pinterest page. Between 0-1000 characters (e.g. https://pinterest.com/...).
description_template.social_tiktok optional URL of your company's TikTok account. Between 0-1000 characters (e.g. https://tiktok.com/...).
description_template.social_kununu optional URL of your company's Kununu account. Between 0-1000 characters (e.g. https://kununu.com/...).

Example requests

The following curl example shows a simple request on how to post a job posting on XING jobs:

curl -X POST "https://api.xing.com/vendor/jobs/postings.json"   \
-d "oauth_token=$ACCESS_TOKEN"                                  \
-d "oauth_consumer_key=$CONSUMER_KEY"                           \
-d "oauth_signature_method=PLAINTEXT"                           \
-d "oauth_signature=$CONSUMER_SECRET%26$ACCESS_TOKEN_SECRET"    \
-d '{
      "organization_id": 5160,
      "order_id": 1022232,
      "function": "Technical Product Manager - Jobs Integration (m/w)",
      "company_name": "New Work SE",
      "description": "<p>Description of my job ad goes here</p><h3>Headline</h3><ul><li>List entry 1</li><li>List entry 2</li>",
      "city": "Hamburg",
      "country": "DE",
      "reply_setting": "url",
      "point_of_contact_type": "company",
      "language": "de",
      "job_type": "FULL_TIME",
      "level": "JOBLEVEL_3",
      "discipline_id": "1017",
      "industry_id": "90000",
      "zipcode": "22085",
      "region": "Hamburg",
      "tags": "hamburg, product manager, technical product",
      "reply_url": "https://mytestcompany.com/jobs/apply/jobid-YF112522",
      "poster_url": "https://www.xing.com/profile/Max_Mustermann",
      "user_role": "HR_CONSULTANT",
      "company_profile_url": "https://www.xing.com/company/xing",
      "publish_to_company": true,
      "job_code": "YF112522"
    }'

And here you'll find an example using the description_template functionality:

curl -X POST "https://api.xing.com/vendor/jobs/postings.json"   \
-d "oauth_token=$ACCESS_TOKEN"                                  \
-d "oauth_consumer_key=$CONSUMER_KEY"                           \
-d "oauth_signature_method=PLAINTEXT"                           \
-d "oauth_signature=$CONSUMER_SECRET%26$ACCESS_TOKEN_SECRET"    \
-d '{
      "organization_id": 5160,
      "order_id": 1022232,
      "function": "Technical Product Manager - Jobs Integration (m/w)",
      "company_name": "New Work SE",
      "description_template": {
        "title_color": "#f0f0f0",
        "company_description": {
          "title": "Join our great company",
          "content": "Here goes the company description"
        },
        "we_offer": {
          "title": "We offer",
          "content": "<h2>Here are our benefits</h2>"
        }
      },
      "city": "Hamburg",
      "country": "DE",
      "reply_setting": "url",
      "point_of_contact_type": "company",
      "language": "de",
      "job_type": "FULL_TIME",
      "level": "JOBLEVEL_3",
      "discipline_id": "1017",
      "industry_id": "90000",
      "zipcode": "22085",
      "region": "Hamburg",
      "tags": "hamburg, product manager, technical product",
      "reply_url": "https://mytestcompany.com/jobs/apply/jobid-YF112522",
      "poster_url": "https://www.xing.com/profile/Max_Mustermann",
      "user_role": "HR_CONSULTANT",
      "company_profile_url": "https://www.xing.com/company/xing",
      "publish_to_company": true,
      "job_code": "YF112522"
    }'

Example response

HTTP/1.1 201 Created
{"posting_id":30675491,"permalink":"https://www.xing.com/jobs/hamburg-technical-product-manager-jobs-integration-30675491"}