Authenticate by including the header Authorization: Bearer <API_KEY> in all requests; API keys are found in the Affinda web app Settings page
Upload a resume by POSTing to https://api.affinda.com/v3/resumes as multipart/form-data with the file field, or supply a url field pointing to a publicly accessible resume URL
The response contains an identifier field; the parsing is asynchronous so the initial response may show a 'processing' status
Poll GET https://api.affinda.com/v3/resumes/{identifier} until the status field is 'success', then read the data object containing structured fields such as name, emails, phoneNumbers, workExperience, and education
Map the parsed fields to your ATS candidate object schema and create or update the candidate record
Known gotchas
The API returns a best-effort parse even for low-quality or image-based PDFs; always validate critical fields (name, email) before auto-creating candidate records to avoid corrupt data
Affinda operates regional endpoints; ensure you use the correct regional base URL for your account's data residency region
File size and page count limits apply; very large resumes or multi-hundred-page documents will be rejected with a 400 error
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp