Forms / USCIS
Fill Form I-9 programmatically
Form I-9 — Employment Eligibility Verification. Official USCIS PDF, 4 pages, 128 fields read automatically.
The I-9 is really two forms wearing one PDF: Section 1 belongs to the employee on day one, Section 2 to the employer within three days. Most HR systems model that as two separate screens and then fight to merge the answers onto a single document — or worse, pass one half-finished PDF around by email.
What you send
Real field names, straight from the PDF — the excerpt shows the first 5 of 128. The full list is in the table below, and the template hands you the complete JSON schema to copy.
{
"data": {
"3 A lawful permanent resident Enter USCIS or ANumber": "string",
"Signature of Employee": "string",
"Last Name Family Name from Section 1": "string",
"First Name Given Name from Section 1": "string",
"Middle initial if any from Section 1": "string"
}
}
// …plus 123 more fields, all listed belowWhat you get back
The completed Form I-9, streamed back as the response — or delivered to your webhook, HMAC-signed.
curl -X POST https://www.doc2api.co/api/v1/templates/<ID>/fill \ -H "X-Api-Key: d2a_live_…" \ -H "Content-Type: application/json" \ -d @payload.json -o filled.pdf # → the completed Form I-9 as a PDF. # With a webhook configured, the reply is JSON and the # document arrives at your endpoint as a signed URL.
Or skip the mapping entirely: embed the actual form on your site and let the person it belongs to fill and sign it — you receive the values as JSON and the finished PDF.
Every field on Form I-9
Extracted automatically from the official PDF — this table is generated by the same code that reads your uploads. In the editor, each of these is highlighted on the page itself, so you never map a name blind.
| Field name | Type | Notes |
|---|---|---|
| 3 A lawful permanent resident Enter USCIS or ANumber | text | |
| Signature of Employee | text | |
| Last Name Family Name from Section 1 | text | |
| First Name Given Name from Section 1 | text | |
| Middle initial if any from Section 1 | text | |
| First Name Given Name | text | |
| Employee Middle Initial (if any) | text | max 1 char |
| Employee Other Last Names Used (if any) | text | |
| Today's Date mmddyyy | text | |
| List A. Document 2. Expiration Date (if any) | text | |
| List A. Document Title 3. If any | text | |
| List A. Document 3. Enter Issuing Authority | text | |
| List A. Document 3 Number. If any | text | |
| List B Document 1 Title | text | |
| Additional Information | text (multiline) | |
| Middle initial if any from Section 1-2 | text | |
| Sig Date mmddyyyy 1 | text | |
| Sig Date mmddyyyy 0 | text | |
| Sig Date mmddyyyy 2 | text | |
| Sig Date mmddyyyy 3 | text | |
| Signature of Preparer or Translator 0 | text | |
| Signature of Preparer or Translator 1 | text | |
| Signature of Preparer or Translator 2 | text | |
| Signature of Preparer or Translator 3 | text | |
| Preparer or Translator Last Name (Family Name) 0 | text | |
| Preparer or Translator Last Name (Family Name) 2 | text | |
| Preparer or Translator Last Name (Family Name) 3 | text | |
| Preparer or Translator Address (Street Number and Name) 0 | text | |
| Preparer or Translator Address (Street Number and Name) 1 | text | |
| Preparer or Translator Address (Street Number and Name) 2 | text | |
| Preparer or Translator Address (Street Number and Name) 3 | text | |
| Preparer or Translator First Name (Given Name) 0 | text | |
| Preparer or Translator Last Name (Family Name) 1 | text | |
| Preparer or Translator First Name (Given Name) 2 | text | |
| Preparer or Translator First Name (Given Name) 3 | text | |
| Preparer or Translator City or Town 0 | text | |
| Preparer or Translator City or Town 1 | text | |
| Preparer or Translator City or Town 2 | text | |
| Preparer or Translator City or Town 3 | text | |
| Preparer State 0 | dropdown | 59 options |
| Preparer State 1 | dropdown | 59 options |
| Preparer State 2 | dropdown | 59 options |
| Preparer State 3 | dropdown | 59 options |
| Zip Code 0 | text | max 6 chars |
| Zip Code 1 | text | max 6 chars |
| Zip Code 2 | text | max 6 chars |
| Zip Code 3 | text | max 6 chars |
| CB_1 | checkbox | |
| CB_2 | checkbox | |
| CB_3 | checkbox | |
| CB_4 | checkbox | |
| Date of Rehire 0 | text | |
| Date of Rehire 1 | text | |
| Date of Rehire 2 | text | |
| Todays Date 0 | text | |
| Todays Date 1 | text | |
| Todays Date 2 | text | |
| Last Name 0 | text | |
| Last Name 1 | text | |
| Last Name 2 | text | |
| First Name 0 | text | |
| First Name 1 | text | |
| First Name 2 | text | |
| Middle Initial 0 | text | max 1 char |
| Middle Initial 1 | text | max 1 char |
| Middle Initial 2 | text | max 1 char |
| PT Middle Initial 0 | text | max 1 char |
| PT Middle Initial 1 | text | max 1 char |
| PT Middle Initial 2 | text | max 1 char |
| PT Middle Initial 3 | text | max 1 char |
| Document Title 0 | text | |
| Document Title 2 | text | |
| Document Number 0 | text | |
| Document Number 1 | text | |
| Document Number 2 | text | |
| Expiration Date 0 | text | |
| Expiration Date 2 | text | |
| Expiration Date 1 | text | |
| Name of Emp or Auth Rep 0 | text | |
| Name of Emp or Auth Rep 1 | text | |
| Name of Emp or Auth Rep 2 | text | |
| Signature of Emp Rep 0 | text | |
| Signature of Emp Rep 1 | text | |
| Signature of Emp Rep 2 | text | |
| CB_Alt_0 | checkbox | |
| CB_Alt_1 | checkbox | |
| CB_Alt_2 | checkbox | |
| Addtl Info 0 | text (multiline) | |
| Addtl Info 2 | text (multiline) | |
| Addtl Info 1 | text (multiline) | |
| CB_Alt | checkbox | |
| Last Name Family Name from Section 1-2 | text | |
| First Name Given Name from Section 1-2 | text | |
| State | dropdown | 59 options |
| ZIP Code | text | max 6 chars |
| Date of Birth mmddyyyy | text | |
| US Social Security Number | text | max 9 chars |
| Telephone Number | text | |
| Last Name (Family Name) | text | |
| Address Street Number and Name | text | |
| Apt Number (if any) | text | |
| City or Town | text | |
| Employees E-mail Address | text | |
| Exp Date mmddyyyy | text | |
| USCIS ANumber | text | max 10 chars |
| Form I94 Admission Number | text | max 11 chars |
| Foreign Passport Number and Country of IssuanceRow1 | text | |
| Document Title 1 | text | |
| Issuing Authority 1 | text | |
| Document Number 0 (if any) | text | |
| Document Title 2 If any | text | |
| Issuing Authority_2 | text | |
| Document Number If any_2 | text | |
| Document Number if any_3 | text | |
| List C Expiration Date 1 | text | |
| List C Document Number 1 | text | |
| List C Issuing Authority 1 | text | |
| List C Document Title 1 | text | |
| FirstDayEmployed mmddyyyy | text | |
| S2 Todays Date mmddyyyy | text | |
| Last Name First Name and Title of Employer or Authorized Representative | text | |
| Signature of Employer or AR | text | |
| Employers Business or Org Name | text | |
| Employers Business or Org Address | text | |
| Expiration Date if any | text | |
| List B Issuing Authority 1 | text | |
| List B Document Number 1 | text | |
| List B Expiration Date 1 | text |
Two audiences, one document
Form profiles exist for exactly this shape. Define an employee profile that exposes Section 1 and hides the rest, and an employer profile that shows Section 2 with Section 1 read-only — enforced server-side, not just hidden in the UI. Each party fills their profile against the same template, and the finished document is one I-9, not a merge.
Questions people ask
- Is an electronically completed I-9 acceptable?
- DHS permits electronic completion and storage of the I-9, with requirements on signatures and audit trails that sit with you as the employer. Doc2api produces the completed, signed PDF and delivers it to your systems; your retention process is what makes it compliant.
- Its 128 fields — do I have to map them all?
- No. You POST only the fields you're filling; the rest stay empty. The schema lists everything so nothing is guesswork, and profiles narrow each audience to the handful of fields that concern them.
See your Form I-9 pipeline working in the next five minutes
The button uploads the official PDF into the editor as a live template with an API key — no account, nothing to cancel. Trial documents are watermarked and kept for 24 hours; sign up to keep your work.
Doc2api is not affiliated with the U.S. Citizenship and Immigration Services. Form I-9 is a public government work; the copy here is the official revision, refreshed from uscis.gov. Nothing on this page is tax or legal advice — how a completed form may be signed, filed or retained is defined by the issuing agency.