US Citizenship and Immigration Services FOIA Requests API

Submit and manage FOIA and Privacy Act requests for Alien File records

OpenAPI Specification

us-citizenship-and-immigration-services-foia-requests-api-openapi.yml Raw ↑
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