Skip to main content
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

Every field includes 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 one repeating_group field rather than flattened children:
The answer value is an ordered array. Typeahead children also take the actual answer directly:
Work-history groups use the same ordered-array shape. The following example assumes the returned 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 expose failure: {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.