Register for an API key at developer.uscis.gov and review the Case Status API documentation in the API Catalog.
Construct a GET request to the Case Status endpoint, supplying the 13-character receipt number (e.g., IOE-XXXX-XXXXX format) as a path or query parameter per the documented schema.
Parse the JSON response for the receiptNumber, formType, subType, receiptDate, and status fields; the status field contains a human-readable description of the current case stage.
Poll at a reasonable interval — the USCIS case processing pipeline updates asynchronously; daily polling is typically sufficient and avoids rate limit violations.
Map internal status descriptions to actionable states: 'Case Was Received', 'Request for Evidence Was Sent', 'Case Was Approved', 'Card Is Being Produced', 'Case Was Denied'.
Log receipt numbers and status snapshots with timestamps to detect transitions and trigger downstream notifications.
Known gotchas
The public Case Status API returns the same status visible on the USCIS website — it does not expose internal officer notes, RFE document details, or biometrics scheduling specifics.
Receipt number formats vary by service center (e.g., EAC, WAC, LIN, SRC, IOE prefixes); validate the format before submitting to avoid 400 errors.
USCIS may throttle or block excessive automated polling; implement exponential backoff on 429 responses and respect any Retry-After headers.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp