Overview
A posting inquiry is the call you make at the moment a candidate wants to apply. It hands you the application form as it stands right now, together with a token that submits exactly that form, for one candidate. This is the default flow for AI Apply and has the benefit that it guarantees you use the most up-to-date version of the form and does not require you to implement complex sync logic. This flow follows three steps:- You inquire about a specific job posting when a candidate opens the application form on your side. You receive the form to show to the candidate and a token for later submission.
- You show the candidate the form and collect their answers.
- You send the collected answers to Kombo using the submission token.
When to use it
We recommend using this flow by default. Use the GET Job Postings Forms endpoint and flow only when you specifically need to know all application forms before the candidate interacts with your product.How it works
Syncing job postings
An inquiry requires the ID of an applyable posting, so your system needs a current list of the postings in your environment. Paginate through GET Job Postings to build that list, and keep it current with the data-changed webhook and theupdated_after filter as described in Data fetching.
Getting the application form
POST Inquiries takes the posting ID in the path and returns the form with a token:display_when drives conditional questions.
Inquiring re-checks the job posting’s availability before returning. A posting
that went offline since your last sync fails here rather than after the
candidate has filled out the form.
The token
Thesubmission_token is a JWT bound to three things: the job posting, the exact form version you were handed, and your environment.
- It is single use. Once an application exists for it, submitting again fails.
- It expires after two days.
- It belongs to one form. Store it next to the form it arrived with. Your answers are validated against that exact version.
Sending an application
POST Apply takes the token and the answers:
Answers have to match the form the token was issued with. A question ID that is not in that form, or a missing required answer, is rejected rather than ignored.
Return value and webhooks
Applying is asynchronous. The response confirms we accepted the application and queued it:id. It is how you match this application to webhooks later on.
We emit the application status updated webhook on every status except
PENDING, so one arrives per application once it settles. GET Applications is the polling alternative, and carries the same updated_after filter as the posting endpoints. See Webhooks for payloads.
proxy_email is only populated once an application is SUBMITTED. See
Candidate account creation to learn
when we create an account on the candidate’s behalf.FAILED once we have confirmed we cannot submit the application in any way. See QA Mode for more info.