Skip to content
Constaia
us_permanent_resident_card

Permanent resident card (green card)

Form I-551: USCIS number, category, expiry and MRZ.

Category
Residence
Country
United States
Extracted fields
12 fields
Cost
1 credit
us_permanent_resident_cardspecimen
Document number
USCIS number (A-number)
First name
Last name
Sex
Date of birth
Country of birth
Category
Issue date

The permanent resident card (Form I-551) is a List A document for Form I-9. Constaia extracts the USCIS number, category and dates, validates the MRZ on the back and checks the expiry date.

  • An expired card can still be acceptable together with a USCIS notice that extends its validity. Constaia flags the expiry; your process decides whether an extension notice is present.
  • Constaia does not query USCIS or E-Verify.

What it checks

  • MRZ ICAO 9303. Check digits of the machine readable zone.
  • MRZ vs printed data. The MRZ matches the visible data.
  • National identifiers. Official checksum or format of the number (NIF, CPF, CURP, RUT, SSN…).us_uscis
  • Holder. Name, number or date of birth match what you expect.
  • Age. Minimum or maximum age from the date of birth.
  • Validity. Not expired on the reference date.
  • Form I-9. Whether the document belongs to list A, B or C.A

Extracted fields

  • Document numberdocument_number
  • USCIS number (A-number)uscis_number
  • First namefirst_name
  • Last namelast_name
  • Sexsex
  • Date of birthbirth_date
  • Country of birthcountry_of_birth
  • Categorycategory
  • Issue dateissue_date
  • Expiry dateexpiry_date
  • Nationalitynationality
  • Mrzmrz

Where it is used

Sample request

curl https://api.constaia.com/v1/analyze \
  -H "Authorization: Bearer $CONSTAIA_API_KEY" \
  -F "file=@us_green_card_specimen.jpg" \
  -F 'options={
    "expect": "us_permanent_resident_card",
    "checks": {
      "not_expired": true,
      "reference_date": "2026-10-05",
      "holder": {
        "full_name": "Alex Example"
      }
    },
    "storage": "none"
  }'

Try it for free with a ck_test_ key and the file us_green_card_specimen.jpg.

Sample response

Fictitious data. Shortened response.

200 OK · application/json
{
  "id": "an_01J9Z3K8QW4T6Y2B7N5M1R0PXC",
  "object": "analysis",
  "status": "completed",
  "livemode": false,
  "document": {
    "type": "us_permanent_resident_card",
    "label": "Permanent resident card (green card)",
    "confidence": 0.97
  },
  "verdict": {
    "expected": [
      "us_permanent_resident_card"
    ],
    "match": true,
    "status": "valid",
    "reasons": [
      {
        "code": "type_match",
        "severity": "info",
        "message": "The document is: Permanent resident card (green card)."
      }
    ]
  },
  "fields": {
    "first_name": {
      "value": "ALEX",
      "confidence": 0.99,
      "validated": true
    },
    "last_name": {
      "value": "EXAMPLE",
      "confidence": 0.98,
      "validated": null
    },
    "uscis_number": {
      "value": "000-000-001",
      "confidence": 0.97,
      "validated": null
    },
    "card_number": {
      "value": "SRC0000000001",
      "confidence": 0.96,
      "validated": null
    },
    "category": {
      "value": "IR1",
      "confidence": 0.99,
      "validated": null
    },
    "country_of_birth": {
      "value": "Canada",
      "confidence": 0.98,
      "validated": null
    },
    "birth_date": {
      "value": "1990-01-30",
      "confidence": 0.97,
      "validated": null
    },
    "sex": {
      "value": "F",
      "confidence": 0.96,
      "validated": null
    },
    "resident_since": {
      "value": "2019-08-12",
      "confidence": 0.99,
      "validated": null
    },
    "expiry_date": {
      "value": "2029-08-12",
      "confidence": 0.98,
      "validated": null
    }
  },
  "checks": [
    {
      "code": "mrz_checksums",
      "passed": true,
      "message": "The MRZ check digits are correct."
    },
    {
      "code": "mrz_matches_visual",
      "passed": true,
      "message": "The MRZ matches the printed data."
    },
    {
      "code": "not_expired",
      "passed": true,
      "message": "Valid on the reference date."
    },
    {
      "code": "holder_match",
      "passed": true,
      "message": "The holder matches."
    }
  ],
  "warnings": [],
  "storage": {
    "mode": "none",
    "file_deleted_at": "2026-09-29T10:00:02Z",
    "expires_at": null
  },
  "usage": {
    "credits": 1,
    "pages": 2
  }
}

FAQ

Does Constaia prove the document is authentic?

No. It checks the type, data consistency and your rules, and flags signals such as a possible edit or a screen photo. That does not prove authenticity.

Is a copy of the document kept?

No, unless you ask for it. With storage "none" (the default) the file is deleted when the analysis ends.

Other documents

And for the record…

Create your account, copy the test key and validate your first document in five minutes.