Auto Apply is coming soon as a generally available product — today an
invite-only beta on public API version
2026-08-31. Accounts without access
get 403 with problem code auto_apply_not_enabled from create.Field shape
field_id, type, label, required, and
requires_answer. Optional metadata such as options, non-empty constraints,
format, and sensitive: true appears only when applicable. Empty metadata and
sensitive: false are omitted. Existing ATS values are not exposed.
required describes the ATS form. requires_answer tells your integration
whether it must supply a value on this step. Include every field with
requires_answer: true; include optional fields only when the candidate has
provided a value. Each field ID may appear once. Do not send unknown IDs or
reuse IDs from another application or step.
Scalar answer values
Each answer is{ "field_id": "the-returned-id", "value": ... }.
Use JSON values of the correct type, not strings containing JSON.
A typeahead also accepts the provider-native shape
{"query":"MIT","selection":{"value":"...","label":"..."}} when you
already have a valid selection. Do not fabricate native IDs.
Omit unanswered optional fields instead of sending empty strings or null for
all types. false and 0 are real answers and must not be discarded by a
truthiness check. An unanswered required field needs candidate input, not a guess.
File answers
Jobo downloads the file from the supplied URL; the API does not accept a local path or a multipart resume upload. Use a publicly reachable HTTPS URL on port 443. Localhost and private-network URLs are rejected. A signed object-storage URL works without making the file permanently public. The URL must download the file without browser cookies or a login page. Keep it valid through upload and retries. Respect any returned file constraints and the ATS’s allowed formats. The platform download limit is 10 MiB; an ATS may impose a smaller limit. The demo app has its own 5 MB PDF upload limit. Treat file URLs as credentials when they contain signed tokens. Avoid recording them in your own logs or exposing them to other users.Education and work history
Repeated ATS sections are onerepeating_group field rather than flattened
children:
item_fields includes each key shown; omit any key the
actual schema does not advertise:
item_fields is dynamic because ATSs may request additional children such as
country, state, contact permission, graduation status, or hours per week.
Unknown item keys are rejected. The array is the complete desired group state,
preserves order, and is capped by both the provider limit and a platform maximum
of 100 entries.
Supported group_type values are education, work_experience,
certification, website, language, skill, and other.
When is_current is true, end_date must be null or omitted. Nested
validation errors contain field_id, item_index, field_key, code,
and message.
Address, phone, and voluntary self-identification remain scalar fields.
Voluntary self-identification fields carry sensitive: true; Jobo never
infers their answers. Integrations should use the displayed label, provider
field ID, type, options, and constraints instead of inferred semantic metadata.
Failure and correction codes
Terminal applications exposefailure: {code, message, retryable}. Stable
failure codes include:
retryable is authoritative for the individual failure. In particular,
submission_unconfirmed is not safely retryable because the employer may have
received the application.
Before the correction limit is exhausted, file and ATS value problems are
returned in command_errors with codes such as unsafe_file_url,
file_upload_failed, invalid_file_type, ats_field_rejected, and
ats_fill_failed. The next answers submission must be a complete corrected
snapshot for the step.
