Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.anyformat.ai/llms.txt

Use this file to discover all available pages before exploring further.

Workflow fields

We recommend creating this workflow in the anyformat platform where you can test with sample resumes and iterate on field descriptions. Copy the workflow ID to use with the API.
FieldTypeDescription
candidate_namestringFull name of the candidate
emailstringEmail address
phonestringPhone number
skillslistTechnical and professional skills
years_of_experienceintegerTotal years of professional experience
educationobjectEducational background (institution / degree / graduation_date)
work_historyobjectPrevious employment (company / title / start_date / end_date)

End-to-end

Python package + class names are provisional. pip install anyformat-sdk and from anyformat.sdk import Client work today, but both are expected to change before the official launch — pin the version you ship with.
# 1. Create the workflow
curl -X POST 'https://api.anyformat.ai/v2/workflows/' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ANYFORMAT_API_KEY" \
  -d '{
    "name": "Resume Parser",
    "description": "Extract candidate details from resumes",
    "nodes": [
      {"id": "parse_1", "type": "parse"},
      {
        "id": "extract_1",
        "type": "extract",
        "extraction_schema": {
          "fields": [
            {"name": "candidate_name",      "description": "Full name of the candidate",                                              "data_type": "string"},
            {"name": "email",               "description": "Email address",                                                           "data_type": "string"},
            {"name": "phone",               "description": "Phone number including country code if present",                          "data_type": "string"},
            {"name": "skills",              "description": "List of technical skills, programming languages, tools, and competencies", "data_type": "list"},
            {"name": "years_of_experience", "description": "Total years of professional work experience",                             "data_type": "integer"},
            {
              "name": "education",
              "description": "Educational qualifications and degrees",
              "data_type": "object",
              "nested_fields": [
                {"name": "institution",     "description": "University or school name",                  "data_type": "string"},
                {"name": "degree",          "description": "Degree obtained (e.g. BSc CS, MBA)",         "data_type": "string"},
                {"name": "graduation_date", "description": "Date of graduation",                          "data_type": "date"}
              ]
            },
            {
              "name": "work_history",
              "description": "Previous jobs and roles, most recent first",
              "data_type": "object",
              "nested_fields": [
                {"name": "company",    "description": "Company name",                                  "data_type": "string"},
                {"name": "title",      "description": "Job title",                                     "data_type": "string"},
                {"name": "start_date", "description": "Start date of employment",                       "data_type": "date"},
                {"name": "end_date",   "description": "End date of employment, or empty if current",    "data_type": "date"}
              ]
            }
          ]
        }
      }
    ],
    "edges": [{"source": "parse_1", "target": "extract_1"}]
  }'

# 2. Run a resume
curl -X POST 'https://api.anyformat.ai/v2/workflows/WORKFLOW_ID/run/' \
  -H "Authorization: Bearer $ANYFORMAT_API_KEY" \
  -F 'file=@resume.docx'

# 3. Poll for results (412 → keep polling; 200 → done)
curl -H "Authorization: Bearer $ANYFORMAT_API_KEY" \
  'https://api.anyformat.ai/v2/workflows/WORKFLOW_ID/files/COLLECTION_ID/results/'

Tips

DOCX resumes typically yield better results than scanned PDFs since the text is natively accessible.
  • Describe end_date as “empty if current role” so processing returns null for current positions.
  • years_of_experience as integer lets you filter directly without parsing.

Next steps

Run workflow

All input methods: file upload and text

Field types

Lists, objects, and other field shapes