Skip to content

Resume Parser APIs That Extract the Candidate Photo

Which resume parsing APIs return the candidate photo, in which field and format, from which files: HireLayer, Affinda, HrFlow.ai, Textkernel, DaXtra, RChilli.

Published · 6 minutes read

Cover reading “Resume parser photo extraction” with a candidate icon and a document icon

Yes, several resume parsing APIs return the candidate's photo. HireLayer returns it on every parse as a link (info_resume.face_url), including from PDF CVs, at no extra cost. Affinda returns a base64 headshot, HrFlow.ai a picture URL, and Textkernel and DaXtra only when you switch an option on. RChilli extracts photos from Word files but not from PDFs.

This guide compares the six resume parser APIs we track on how they hand you the photo: which field, which format, which files and whether you have to ask for it. HireLayer is our product. Every other fact comes from the vendor's own documentation, checked on 14 October 2026 and linked at the end.

Photo extraction in resume parser APIs

APIField or optionFormatPDF CVsOn by default
HireLayerinfo_resume.face_urlURL of the cropped faceYesYes, no extra credit
Affindaheadshot (v1); Headshot image type (Platform)Base64 on v1, URL on the PlatformNo restriction statedYes on v1
HrFlow.aiinfo.pictureURLNo restriction statedNot stated
Textkernel (Sovren)OutputCandidateImage → CandidateImageBase64When the document has inline imagesNo, defaults to false
DaXtrapicture or picture_inline optionFile name, or base64 with picture_inlineNo restriction statedNo, opt-in option
RChilliCandidateImageDataBase64No, DOC and DOCX onlyYes (reqcandidateimage)

The two things that tend to decide it are the file types and the format. Most CVs usualy arrive as PDFs, so an API that only reads photos from Word files will miss most of them. And a URL is easier to store and show than a base64 string sitting inside every JSON response, wich can make a single parse result several times heavier.

How HireLayer returns the photo

The HireLayer resume parsing API (CV Extract) looks for a face on the CV and returns a cropped image in info_resume.face_url. It works on PDF, Word and image files, scans and phone photos included. The field is null when no face is found and for plain-text files. There is no option to switch on and no extra charge: a parse costs one credit with or without a photo.

If you send do_not_store_data=true, the original file is not kept and face_url becomes a temporary link that expires 10 minutes after parsing, as stated in face_url_expires_at. Copy the image to your own storage within that window. Without the flag, the photo is stored in Paris, France and the link does not expire, so treat it like any other personal data in the candidate record.

The fields sit next to the rest of the document metadata in the response:

"info_resume": {
"language": "EN",
"face_url": "https://files.example.com/faces/1790847012000-alex-morgan.jpg",
"face_url_expires_at": null
}

The full schema, with every field and error code, is in the resume parsing API reference. You can also see the photo come back on your own CV in the live demo.

What the other APIs return

Affinda

Affinda's v1 Resume Parser returns the photo as a base64 headshot in the parse response, and its documentation says no parameter suppresses it. On the newer Affinda Platform, headshots are an image type returned as a URL.

HrFlow.ai

HrFlow.ai stores the parsed CV as a Profile object, and the photo is a URL in info.picture. Its documentation doesn't say whether the field is filled by default or for every file type.

Textkernel

Textkernel's Tx Platform returns the image only if you set OutputCandidateImage to true (it defaults to false) and the document contains inline images. The photo then comes back as a base64 string in Conversions.CandidateImage, with its extension in CandidateImageExtension.

DaXtra

DaXtra's CVX parser has two options. picture returns the file name of the extracted image, while picture_inline puts the image itself in the result as base64. Neither is on unless you pass it.

RChilli

RChilli extracts photos into CandidateImageData (base64) with the format in CandidateImageFormat. The setting is on by default, but it only covers DOC and DOCX files: RChilli's help center says it is not supported for PDF.

Get the candidate photo from any CV

Upload a PDF, Word file or scan in the demo and see face_url next to the parsed profile. The free plan includes 50 credits a month, no card needed.

When the photo is useful, and when to leave it out

Honestly, most teams want the photo for one simple reason: a candidate list with faces is easier to scan than a list of names. In practice it shows up as the avatar on an ATS profile, on a staffing agency's candidate cards, or on a job board's public profile when the candidate agreed to it.

Photos on CVs are common in some countries, such as France and Germany, and usually discouraged in others, such as the US and the UK, where employers try to keep appearance out of the first screening. Whatever the market, keep the photo for display only. HireLayer's matching and ranking APIs read the CV text and the job criteria, not the image, so a photo never changes a score. If you show it to reviewers, consider hiding it during the first screening round and revealing it later.

A face is personal data. Store it only as long as the rest of the candidate record, and if you don't need it at all, drop the field before saving or send do_not_store_data=true so the link expires by itself.

Which API to pick for photos

  • Most of your CVs are PDFs: pick an API that reads photos from PDFs, such as HireLayer, and avoid one limited to Word files.
  • You want small responses: a URL (HireLayer, HrFlow.ai, Affinda Platform) keeps the JSON light; base64 makes every response heavier.
  • You never want the photo: an opt-in option (Textkernel, DaXtra) means you never receive it unless you ask. With HireLayer, ignore face_url or send do_not_store_data=true.

Photos are rarely the only criterion, though. For the full picture on price, output and hosting, see our best resume parsing software comparison and the field-by-field resume parser benchmark, or the one-to-one HireLayer comparisons with each vendor. The seperate choice of a free option is covered in free resume parsers.

Frequently asked questions

Is there a resume parsing API that extracts the candidate's photo?

Yes. HireLayer returns the photo on every parse as info_resume.face_url, including from PDF CVs. Affinda returns a base64 headshot, HrFlow.ai a picture URL, Textkernel and DaXtra return it when you enable an option, and RChilli extracts it from DOC and DOCX files only.

Can a resume parser extract the photo from a PDF?

Yes, if the API supports it. HireLayer crops the face from PDF, Word and image CVs, and Textkernel reads inline images from documents when OutputCandidateImage is on. RChilli's photo extraction does not support PDF files.

Does extracting the photo cost extra?

Not with HireLayer: the photo comes with every parse, which costs one credit whether or not a face is found. The other vendors bill per parse and do not list a separate photo price.

Is the photo returned as a URL or as base64?

It depends on the API. HireLayer and HrFlow.ai return a URL, as does the Affinda Platform. Affinda v1, Textkernel, RChilli and DaXtra's picture_inline option return base64 data inside the JSON.

Does the candidate photo affect matching scores?

Not with HireLayer: the matching and ranking APIs score the CV text against the job criteria and never see the image. Keep photos for display and out of any scoring you build yourself.

Sources and further reading

  1. HireLayer resume parsing API reference
  2. Affinda Resume Parser docs: the parse response
  3. Affinda Platform docs: image fields
  4. HrFlow.ai docs: the Profile object
  5. Textkernel Tx Platform v10: resume parser API reference
  6. DaXtra CVX parser options
  7. DaXtra candidate profile schema
  8. RChilli help center: candidate image extraction

Louis Desclous

Published on · Reading time: 6 minutes