Integrate the Symmetry I-9 API (Symmetry I-9, powered by WorkBright) to run remote Section 1/Section 2 Form I-9 verification and E-Verify case management from a partner HR platform.
domain: docs.symmetry.com · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Authenticate by POSTing your Symmetry-provided api-key to https://api.symmetry.com/authentication/login to obtain a Bearer access token for system-level calls.
Register the employer via the /employers POST endpoint (including a webhook.callbackUrl for event notifications) to receive an employerId, then register the employee and administrator records.
Configure E-Verify for the employer if the employer participates, then generate a one-time employee session token via POST /employers/{employerId}/employees/{employeeId}/generateToken.
Embed the returned embeddedUri in an <iframe> with allow="geolocation *; camera *" and sandbox tokens (allow-scripts, allow-same-origin, allow-popups, allow-forms, allow-storage-access-by-user-activation) so the employee can complete Section 1/Section 2 with in-browser document scanning.
Subscribe to webhooks (employee.section1Complete, employee.i9Complete, employee.everifyCaseUpdate, employee.upcomingExpiration) instead of polling to track workflow progress.
On an employee.everifyCaseUpdate webhook with status pending_referral, fetch full case detail via GET /employers/{employerId}/everifyCases/{id} to retrieve the fanUrl and deadlineOn, then launch the administrator embedded UI via the everifyCases/generateUri endpoint to present the Further Action Notice.
Known gotchas
Embedded session tokens (for the iframe) are different from the system API Bearer token: they expire in 30 minutes and time out after 1 hour of inactivity, but multiple can be requested concurrently rather than reused.
If the parent iframe's allow attribute omits camera, the scan-a-document dialog silently disappears in favor of manual upload for some employees/document types — there's no error, just an inconsistent experience.
The everifyCaseUpdate webhook payload is deliberately lightweight (no FAN URL or deadline) — you must call the case-detail endpoint to enrich it, and the {id} path parameter there is Symmetry's internal case ID, not the DHS caseId.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?