Passport Photo Print & Mailing API

Create a printable photo sheet in the same Passport Photo API call that sizes the portrait. Mailing coverage, timing, and price are confirmed with support before you offer postage.

The print file you can generate today is a photo sheet on the Passport Photo API. photoSheet.sheetSizes asks for one or more pixel layouts, up to 10, and the response returns a URL for each sheet. A public order endpoint for postage, addresses, and tracking is not in the API reference. If you need prints mailed to a person, confirm coverage, timing, and price with support before you promise delivery in your app. Many UK applications do not need a print at all: they need a UK passport photo code.

A printable sheet from the same call that sizes the photo

Government and visa workflows still ask for paper in some cases. The digital specification and the sheet are one request. You send the portrait and the specCode. You may also send sheetSizes as width*height in pixels. The example in the docs is 1800*1200, a sheet of repeated copies. The single ID photo is still returned as a URL or Base64. The sheet is an extra map of size to URL.

Passport photo prepared as a printable sheet of repeated portraits
The documented print output is a photo sheet URL. Mailing is not a field on this request.

Photo sheet request and response

curl -sS -X POST "https://api-us.idphotoapp.com/v2/makeIdPhoto" \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "apiSecret": "YOUR_API_SECRET",
    "imageBase64": "BASE64_IMAGE",
    "specCode": "us-passport",
    "photoSheet": { "sheetSizes": ["1800*1200"] }
  }'
{
  "photoUuid": "example-photo-uuid",
  "specCode": "us-passport",
  "idPhotoUrl": "https://example-signed-url",
  "widthPx": 600,
  "heightPx": 600,
  "photoDpi": 300,
  "issues": [],
  "photoSheet": {
    "1800*1200": "https://example-sheet-url"
  }
}

US passport details in the specification example are 2 × 2 in and 600 × 600 px at 300 DPI. Sheet URLs follow URL output. The privacy policy describes temporary storage from 2 hours to 14 days for that option. Download the sheet into your own storage if the user will print later. You can also ask for a sheet on POST /v2/getIdPhotoNoWatermark after a watermarked preview, using the same photoSheet object.

When a code replaces a mailed print

For a UK passport applied for online, the applicant enters a photo code. The supplier hosts the JPEG. HM Passport Office retrieves it. You do not need to mail a 35 × 45 mm print for that path. Generate idPhotoCode with uk-passport or uk-digital-passport. The code is not an acceptance decision. Other countries still require paper. Check the issuer. Do not assume a sheet URL satisfies a consulate that wants a specific paper size from the applicant’s own printer.

Physical mailing is not a documented endpoint

The API reference does not include a recipient address, a shipping service, a tracking webhook, or a delivery SLA. Do not invent those in your checkout. Email support@idphoto.ai with the countries you ship to and the print size you need, and wait for a written answer before you take payment for postage.

Apps, agencies, and studios that still need paper

How to request a printable sheet

  1. Pick the specCode with POST /v2/getIdPhotoSpec so the single photo matches the document before you repeat it on a sheet.
  2. Call /v2/makeIdPhoto with photoSheet.sheetSizes set to the pixel sizes you print. Stay at or under 10 sizes.
  3. If issues is not empty, do not print. Map photo issue codes to a retake.
  4. Download photoSheet URLs promptly. They are temporary.
  5. For a consumer app, use watermark mode first so the sheet is only requested on /v2/getIdPhotoNoWatermark after the user confirms.
  6. Talk to support before you add a “we’ll mail it” button.

Why the sheet lives on the Passport Photo API

The crop and the print layout stay in one response, so you cannot print a sheet of a photo that used a different specification than the file you store. You also see issue codes before ink. Postage, if you need it, stays a separate operational agreement instead of an invented shipping API.

FAQ

Can I mail a passport photo through the API?

Not with a documented endpoint. The API returns a digital photo and optional printable sheet URLs. Contact support to ask whether physical mailing is available for your destinations, timing, and price. Do not promise same-day shipping from this reference.

How do I request a print layout?

Add photoSheet.sheetSizes to POST /v2/makeIdPhoto. Each entry is width*height in pixels, for example 1800*1200. You can request up to 10 sizes. The response photoSheet object maps each size to a URL.

Does a UK passport application need a mailed print?

The online UK application accepts a photo code. Generate idPhotoCode with a UK passport spec. HM Passport Office still checks the photo. Paper rules for other documents are set by those issuers.

How long is the sheet URL valid?

URL output uses temporary storage. The data privacy policy describes a retention period of 2 hours to 14 days for that option. Copy the file into your own storage if the user will print later. Base64 output is the alternative when you do not want the image stored on our service. Sheet fields in the reference are returned as URLs.

Should I print when the response includes issue codes?

No. A sheet can come back alongside issues. Read the array and ask for a new photo when the problem would make the print unusable. An empty issues array is not an acceptance letter from a passport office.

Streamline Your Photo Fulfillment

Contact us to discuss integration and volume pricing for your business needs.