Bundesagentur für Arbeit (BA)
Post jobs to the BA Jobbörse via Kini — onboarding requirements for end customers and required job fields for partners
Kini publishes jobs to the Jobbörse of the Bundesagentur für Arbeit through the BA's official interface. Postings are booked as part of a campaign in the Kini App; Kini takes care of the transfer to the BA and keeps the posting status up to date until the job is live.
Candidates who find the job on the Jobbörse apply via the job's application link — the application itself happens on the customer's own career or application page, not inside the Jobbörse.
How It Works
Campaign
Set up a campaign in the Kini App that includes the BA as a channel. Individual jobs can be added to the campaign at any time via the job's Promote function ("Add to campaign"). Each job added to the campaign creates a booking, starting in status BOOKED.
Transfer
Kini transfers the posting to the BA and the booking moves to PROCESSING. The BA reviews every submission before it goes live, which can take a little while.
Live
Once the posting is live on the Jobbörse, the booking moves to PUBLISHED and carries the public Jobbörse URL. If the BA rejects the posting, the booking moves to PUBLISH_FAILED with the reason in failure_error.
Published postings are reachable at:
https://www.arbeitsagentur.de/jobsuche/jobdetail/{posting_reference}
Status changes are pushed via the Job Booking Status Update webhook. Later changes work the same way: content updates to a published booking are transferred to the BA, and unpublishing a booking removes the posting from the Jobbörse.
The BA processes submissions with a delay, so a booking can stay in PROCESSING for a few hours up to a day. This is normal and not an error.
For End Customers: What You Need to Set Up
Postings appear on the Jobbörse under your own company identity. Before Kini can publish for you, you need the following from the Bundesagentur für Arbeit.
1. Jobbörse employer account
Your company needs an employer account in the BA Jobbörse. This account provides your BA customer number (HiringOrgId) — the number under which your postings appear.
Companies with multiple branches (for example staffing agencies) usually have one BA customer number per branch. The customer number identifies the branch that posts the job, not the work location — so collect the customer numbers of all branches that will post jobs.
2. Approval as a data supplier
To let Kini submit postings automatically, your company must be approved by the BA for automated job transfer. As part of this approval the BA issues:
| Credential | Purpose |
|---|---|
| Partner ID | Identifies your company as a data supplier towards the BA. |
| Allianzpartner number | Issued together with the Partner ID; needed to reference your postings. |
| Client certificate | A .p12 certificate file (with password) that authorizes the transfer. |
3. Hand-over to Kini
Once issued, provide the following to your Kini contact:
- Partner ID and Allianzpartner number
- Your BA customer number(s) — one default, or one per branch if postings should appear under different branches
- The client certificate (
.p12) and its password — please share these through a secure channel, never by plain email - A default contact person (name, salutation, position) shown on postings when a job has no contact of its own
- Whether your postings involve private placement (private Arbeitsvermittlung) or labour leasing (Arbeitnehmerüberlassung) — these are mutually exclusive and required by the BA
4. Company-wide defaults
The BA shows a set of employer-level attributes on every posting. Kini configures these as defaults for your company — clarify them with your Kini contact during onboarding:
| Setting | Meaning |
|---|---|
| Social insurance | Whether positions are subject to social insurance (sozialversicherungspflichtig). |
| Training authorisation | Whether the company is authorised to train apprentices (Ausbildungsberechtigung). |
| BA placement support | Whether the BA should actively support placement (Vermittlungsbetreuung). |
| Severe disability | Whether postings are open to all candidates or targeted at severely disabled candidates. |
| Pay scale / collective agreement | Whether the company is bound to a pay scale, and which collective agreement applies. |
BA client certificates expire. When the BA issues a renewed certificate, send it to Kini before the old one expires — postings stop going out the moment the certificate is invalid.
For Partners: Required Job Fields
The BA is strict about which data a posting must contain. Make sure the following fields are filled when syncing jobs that will be posted to the BA.
Jobs with incomplete BA data cannot be published. When a job is booked in the Kini App, the booking form asks for any missing BA-specific fields (for example the occupation code or the branch) before the booking is created. Jobs synced via the API should carry the fields below from the start, so bookings go out without manual completion in the app.
Standard job fields
| Field | Requirement | Notes |
|---|---|---|
title | Required | Shown as the posting title; truncated to 100 characters. |
description | Required | Plain text or description_sections; the BA requires 30 to 10,000 characters. |
application_url | Required | The BA posting links candidates to this URL to apply. |
work_schedule | Required | full_time, part_time or flexible. |
employment_type | Required | Determines the BA offer type (e.g. apprenticeship, intern, freelance, minijob). |
country | Required | ISO country code, e.g. DE. |
postcode | Required | Also determines the region (Bundesland) shown on the posting. |
city | Recommended | Shown as the posting's municipality. |
street | Recommended | Shown as part of the job location. |
contact_name | Recommended | Contact shown on the posting. Falls back to the default contact configured during onboarding — if neither exists, the posting cannot be published. |
salary_from / salary_to | Optional | Shown when salary_frequency is yearly or hourly. |
salary_frequency | Optional | Needed for salary display: yearly → annual salary, hourly → hourly wage. |
remote | Optional | remote and hybrid mark the posting as home-office possible. |
senority | Optional | unexperienced marks the posting as suitable without professional experience. |
start_date | Optional | Defaults to the publication date if omitted. |
BA-specific custom fields
These fields are passed in the job's custom_fields object:
| Custom field | Requirement | Notes |
|---|---|---|
ba_title_code | Required | The BA occupation code (DKZ ID) from the BA's official occupation catalogue — note this is not a KldB code. Postings cannot be published without it. |
ba_hiring_org_id | Optional | Posts under a specific BA customer number, overriding the company default. |
branch | Optional | Branch name; resolved to the branch's BA customer number configured during onboarding. The customer number identifies the branch that posts the job, not the work location — for multi-branch companies it must be chosen explicitly and is never derived from the job's postcode. |
state | Optional | Bundesland; used as a fallback for the posting's region when the postcode cannot be resolved. |
ba_number_to_fill | Optional | Number of open positions for this posting (default: 1). |
private_placement | Optional | Overrides the company default for private placement. |
labour_leasing | Optional | Overrides the company default for labour leasing. Mutually exclusive with private_placement. |
The occupation code is the field most often missing. Every BA posting must carry a valid occupation code (DKZ ID) from the BA's occupation catalogue. It can be provided per job via custom_fields.ba_title_code, searched and selected from the occupation list in the Kini App when booking, or maintained as a mapping on the Kini side — agree with your Kini contact which path applies to you.
When a Posting Is Rejected
The BA checks every posting before it goes live. When a posting is rejected, the booking moves to PUBLISH_FAILED and the BA's reason is stored in the booking's failure_error field, for example:
FLR_JCValid_044: JobContactWebSite missing for KindOfApplication 6
Typical causes:
- Missing or invalid occupation code (
ba_title_code) - Missing application URL
- Description too short (the BA requires at least 30 characters)
- Missing or unresolvable postcode / location data
Fix the job data and rebook, or contact tech@getkini.com if the error message is unclear.