object field, which is how a repeating list is modelled on the typed graph.
The resume
→
What comes back
candidate_name98%
years_of_experience95%
skills
work_history
NodesParse → ExtractCredits60 per pageYou get
The workflow
Run it and read the result
Thefiles field accepts PDF, DOCX and images. Poll the run until its status is processed.
Response
Theresults envelope of a processed run, trimmed. A current role comes back with end_date.value: null.
Response
verification_status and value_override. Runs and results has the full envelope, section by section.
When it goes wrong
A current job comes back with a made-up end date. The model fills adate field it was asked for. Describe end_date as “empty if this is the current role”, the way this schema does, and the current job returns end_date.value: null instead.
Your skills list arrives as one long string. There is no list data type. A free-form list is an object field with one nested field, as skills does here, and each item comes back as its own row with its own confidence. Field types has the shapes.
You cannot filter on years of experience. Every value is a string on the wire, so "9" sorts next to "10" the wrong way. Declare years_of_experience as integer and cast it once on the way in, rather than parsing text at query time.
A scanned resume loses half the work history. A DOCX or born-digital PDF has native text, so nothing is lost to OCR. A scan does not. Where you control the intake, ask for DOCX. Where you do not, move the Parse node to the agentic tier (100 credits per page) for the scanned batch.
Dates come back on the first of the month. Resumes write “March 2021”, which names no day. A date field normalises that to 2021-03-01. Compare on month, not on day, when you rank candidates by tenure.
Next steps
Upload and run
The multipart request, idempotency and filename rules
Field types
Objects, enums and the other field shapes

