Overview
GET Job Postings Forms returns all job postings, each with its application form and submission token. Once you have a candidate’s answers, include the submission token in the application request so we know which job posting the application is for. This flow relies on you to keep your database in sync by polling this endpoint regularly. Whenever our parsing updates a job posting or its form, you need to fetch again to pick up the change.How it works
Fetching the forms
Each response carries a page of postings and anext cursor. Page until next is null.
Pages hold at most five postings, because every applyable one on the page
carries a full application form. An initial sync of a large catalogue
therefore takes many requests. Later syncs are small, as long as you filter
them.
career_site_ids and job_codes to narrow the catalogue, and updated_after to fetch only what changed.
Data fetching describes how to keep your copy current with updated_after and the data-changed webhook.
Posting availability
Job posting results include applyable and non-applyable postings. Only jobs with theAPPLYABLE availability include the application_form and submission_token. In every other state, both properties are null. The availability property tells you why:
Clear the form you are storing when a posting stops being
APPLYABLE, rather than keeping it around in case the job comes back. If it does, the next sync hands you a fresh one.
Submission token mechanics
Every applyable posting includes a uniquesubmission_token. Unlike the short-lived single-use tokens from an inquiry, these are meant to be stored:
- They do not expire. A token stays valid for as long as the form it came with is current.
- They are reusable. Every accepted submission creates its own application, so one token serves every candidate who applies to that job.
- They belong to one form. Store the token and the form together and replace them together. A token paired with the wrong form is rejected.
Sending an application
POST Apply takes the stored 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, fails the request rather than being 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.
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.