US Citizenship and Immigration Services FOIA Requests API
Submit and manage FOIA and Privacy Act requests for Alien File records
Submit and manage FOIA and Privacy Act requests for Alien File records
openapi: 3.1.0
info:
title: USCIS Case Status FOIA Requests API
description: 'The USCIS Case Status API provides case status information to USCIS customers and their authorized representatives who require regular programmatic access to immigration case status information. Accepts a 13-character USCIS receipt number and returns the current status, form type, submission date, and historical case timeline in both English and Spanish. Accessed via the USCIS Torch API Program at developer.uscis.gov. Rate limits apply: 5 transactions per second, 1,000 requests per day.'
version: '1.0'
contact:
name: USCIS Developer Support
url: https://developer.uscis.gov/
termsOfService: https://developer.uscis.gov/
servers:
- url: https://api-int.uscis.gov/case-status
description: USCIS Sandbox/Integration Environment
tags:
- name: FOIA Requests
description: Submit and manage FOIA and Privacy Act requests for Alien File records
paths:
/requests:
post:
operationId: submitFoiaRequest
summary: Submit FOIA or Privacy Act Request
description: Create a new Freedom of Information Act (FOIA) or Privacy Act (PA) request for Alien File material. The request can be submitted about or on behalf of the subject of record. A unique Request Number is returned upon successful creation, which can be used to track the request status.
tags:
- FOIA Requests
security:
- OAuth2:
- write:foia-requests
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FoiaRequestBody'
example:
requestType: FOIA
subjectFirstName: Jane
subjectLastName: Doe
subjectDateOfBirth: '1980-06-15'
subjectCountryOfBirth: Mexico
subjectAlienNumber: A123456789
requesterName: Jane Doe
requesterEmail: jane.doe@example.com
requesterType: self
descriptionOfRecords: Requesting complete Alien File including all immigration applications, approvals, and correspondence
deliveryMethod: email
responses:
'201':
description: FOIA request successfully submitted
content:
application/json:
schema:
$ref: '#/components/schemas/FoiaRequestCreatedResponse'
example:
requestNumber: USCIS-2024-001234
status: Received
submittedDate: '2024-01-15'
estimatedCompletionDate: '2024-07-15'
message: Your FOIA request has been received and assigned number USCIS-2024-001234
'400':
description: Bad request - invalid request body or missing required fields
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized - invalid or expired OAuth 2.0 access token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/requests/{requestNumber}:
get:
operationId: getFoiaRequestStatus
summary: Get FOIA Request Status
description: Check the current status of a submitted FOIA or Privacy Act request using the Request Number returned when the request was created. Returns the current processing status and any available updates.
tags:
- FOIA Requests
security:
- OAuth2:
- read:foia-requests
parameters:
- name: requestNumber
in: path
required: true
description: 'The FOIA request number returned when the request was submitted. Format: USCIS-YYYY-NNNNNN'
schema:
type: string
pattern: ^USCIS-\d{4}-\d{6}$
example: USCIS-2024-001234
responses:
'200':
description: FOIA request status retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/FoiaRequestStatusResponse'
example:
requestNumber: USCIS-2024-001234
status: In Process
requestType: FOIA
submittedDate: '2024-01-15'
lastUpdated: '2024-03-01'
estimatedCompletionDate: '2024-07-15'
subjectName: Jane Doe
notes: Request is currently being processed by the National Records Center
'401':
description: Unauthorized - invalid or expired access token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Request number not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
ErrorResponse:
type: object
description: Error response
properties:
error:
type: string
description: Error code
message:
type: string
description: Human-readable error message
details:
type: array
items:
type: string
description: Additional error details
FoiaRequestStatusResponse:
type: object
description: Current status of a submitted FOIA request
properties:
requestNumber:
type: string
description: The FOIA request number
example: USCIS-2024-001234
status:
type: string
description: Current processing status
enum:
- Received
- In Process
- Awaiting Clarification
- Records Located
- Review in Progress
- Response Sent
- Closed
- Appealed
example: In Process
requestType:
type: string
description: Type of request (FOIA or PrivacyAct)
submittedDate:
type: string
format: date
description: Date the request was submitted
lastUpdated:
type: string
format: date
description: Date of the most recent status update
estimatedCompletionDate:
type: string
format: date
description: Estimated completion date
subjectName:
type: string
description: Name of the subject of the Alien File
notes:
type: string
description: Additional processing notes or status details
FoiaRequestCreatedResponse:
type: object
description: Response returned when a FOIA request is successfully submitted
properties:
requestNumber:
type: string
description: Unique identifier for the FOIA request
example: USCIS-2024-001234
status:
type: string
description: Initial status of the request
example: Received
submittedDate:
type: string
format: date
description: Date the request was submitted
estimatedCompletionDate:
type: string
format: date
description: Estimated date for request completion
message:
type: string
description: Confirmation message
FoiaRequestBody:
type: object
description: Body for submitting a new FOIA or Privacy Act request
required:
- requestType
- subjectFirstName
- subjectLastName
- requesterName
- requesterEmail
- requesterType
- descriptionOfRecords
properties:
requestType:
type: string
description: Type of records request
enum:
- FOIA
- PrivacyAct
subjectFirstName:
type: string
description: First name of the subject of the Alien File
example: Jane
subjectLastName:
type: string
description: Last name of the subject of the Alien File
example: Doe
subjectMiddleName:
type: string
description: Middle name of the subject
subjectDateOfBirth:
type: string
format: date
description: Date of birth of the subject
example: '1980-06-15'
subjectCountryOfBirth:
type: string
description: Country of birth of the subject
example: Mexico
subjectAlienNumber:
type: string
description: USCIS Alien Registration Number (A-Number), if known
pattern: ^A\d{8,9}$
example: A123456789
subjectReceiptNumber:
type: string
description: USCIS receipt number for related case, if known
requesterName:
type: string
description: Full name of the person submitting the request
requesterEmail:
type: string
format: email
description: Email address for response delivery
requesterType:
type: string
description: Relationship of requester to subject
enum:
- self
- attorney
- accredited_representative
- family_member
- other
descriptionOfRecords:
type: string
description: Description of the records being requested
deliveryMethod:
type: string
description: Preferred method for receiving records
enum:
- email
- usps
- portal
default: email
feeWaiverRequest:
type: boolean
description: Whether the requester is requesting a fee waiver
default: false
expeditedProcessingRequest:
type: boolean
description: Whether the requester is requesting expedited processing
default: false
expeditedProcessingJustification:
type: string
description: Justification for expedited processing, if requested
securitySchemes:
OAuth2:
type: oauth2
description: OAuth 2.0 Client Credentials flow. Obtain an access token from the USCIS token endpoint using your client_id and client_secret registered at developer.uscis.gov. Tokens expire after 1,800 seconds (30 minutes).
flows:
clientCredentials:
tokenUrl: https://api-int.uscis.gov/oauth/accesstoken
scopes:
read:case-status: Read immigration case status information
externalDocs:
description: USCIS Case Status API Documentation
url: https://developer.uscis.gov/api/case-status