current_step carries a field with format: "one_time_code" that expires in
60 seconds. Others email a confirmation link that has to be clicked before
the application counts as submitted.
Connecting a mailbox is entirely optional. Verification steps work the same
whether or not Jobo can see the inbox — the code is just another answer on the
step, so if you already read that mailbox yourself, keep doing exactly that and
submit the code through
POST /applications/{id}/answers as usual. These
endpoints exist purely so you don’t have to build and operate IMAP/OAuth inbox
access if you’d rather not. Nothing else in Auto Apply depends on them, and you
can adopt them for some mailboxes and not others.Connect a mailbox once
Mailboxes are account-level resources — connect each inbox once and reference itsid from any application. Two providers:
imap— host, address, and a password (use an app password where the provider offers them, e.g. Gmail). Credentials are verified synchronously on create: you either getstatus: "connected"back or amailbox_verification_failedproblem and nothing is stored.outlook— Outlook and Microsoft 365 disabled password IMAP in April 2026, so this provider uses a hosted Microsoft consent flow and reads over Microsoft Graph (delegatedMail.Read). Create returnsstatus: "pending"plus anauthorization_url; open it (or send it to the mailbox owner), sign in with the same address you declared, and the mailbox flips toconnected. The consent link expires after 15 minutes — fetch the mailbox again for a fresh one. No IMAP host is needed or returned for this provider.
DELETE hard-deletes them.
Retrieve the verification
The moment an application pauses on its verification step, callPOST /api/auto-apply/mailboxes/{id}/verification with the application_id. The call
blocks while Jobo polls the inbox (newest messages first, read-only — your
mail is never marked as seen) and an AI extractor picks the verification email
using the application’s apply host and ATS provider as context, so a Greenhouse
code isn’t confused with an unrelated login email that arrived the same minute.
Providers verify in one of two ways — a one-time code to type into the
form, or a confirmation link to click. The response’s type says which
was found (constrain it by passing type: "code" or type: "link" in the
request; the default any accepts either):
type: "link" Jobo clicks the link server-side — https-only, public
hosts only, bounded redirects — which confirms the address the way the
applicant would. When link_visited is false the click failed; open the
returned link yourself.
timeout is an expected outcome — the email may simply not have arrived —
not an error. Real faults are RFC 7807 problems: mailbox_not_connected,
mailbox_auth_failed (reconnect the mailbox), application_not_found.
The extracted code is validated server-side — it must appear verbatim in the
selected email — and email contents never leave the extraction. Only the code
plus the matched email’s sender, subject, and timestamp are returned.
Timing in practice
POST /applications→ application eventually pauses with aone_time_codefield (the step’sanswers_expire_attells you the deadline).- Immediately
POST /mailboxes/{id}/verificationwith theapplication_id— the verification email typically lands within seconds of the step appearing. POST /applications/{id}/answerswith the code as the field’s answer.
verification_code_rejected and the application offers a correction round —
call the verification endpoint again; a fresh email supersedes the old one.
