Duplicate email handling: if a candidate with the same email
already exists, the existing candidate is returned with
isExisting: true instead of creating a duplicate.
Job association: if jobId is provided, the candidate is
associated with that job and jobCandidateId is returned; resume
scoring is automatically enabled (consumes credits). If the
candidate is already in the job, isAlreadyInJob is true in the
response.
Resume parsing: by default (shouldParseResume: true), a
provided resume URL is downloaded, stored, and parsed
asynchronously (consumes credits). The webhook events
resume.single_parse.completed and resume.single_parse.failed
are sent when parsing completes or fails.
Scoring without parsing: if shouldParseResume is false and
jobId is provided, you must include city, country,
educations, and workExperiences for scoring to work; otherwise
the request fails with MISSING_SCORING_FIELDS (the missing field
names are listed in details.missingFields).
Response structure: all miscellaneous fields (educations,
workExperiences, etc.) are flattened to the top level of the
returned candidate object.
Validation: all fields are validated against a schema; invalid
requests return detailed field-specific error messages.
Company-scoped API key. Production keys are prefixed sk_live_,
sandbox keys sk_test_, each followed by 22 base62 characters
(pattern ^sk_(live|test)_[0-9A-Za-z]{22}$). Generate keys in the
TapTalent dashboard under Account Settings → Developers → API Key
Management; a key is shown once at generation and old keys are
invalidated immediately on regeneration.
Body
application/json
Request body for creating a candidate. Note that the nested request
objects (educations, workExperiences, projectExperiences,
certifications) use different field names than the corresponding
response objects — see each Input schema's description.
URL to candidate's resume file (must start with http:// or
https://). If provided and shouldParseResume is true, the resume
will be downloaded, stored, and parsed.
Whether to parse the resume. Default: true. Set to false if
you're providing parsed data directly (educations,
workExperiences, etc.). If false and jobId is provided,
city, country, educations, and workExperiences are
required for scoring to work.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"Taptalent Partner API","colors":{"primary":"#6e58ff","light":"#6e58ff","dark":"#ab9ffc"},"logo":{"light":"https://mintcdn.com/taptalent/lKy84_BssSCy2hcz/images/TTLogo(1).png?fit=max\u0026auto=format\u0026n=lKy84_BssSCy2hcz\u0026q=85\u0026s=ac7c949427cc2893306f6036415f087e","dark":"https://mintcdn.com/taptalent/lKy84_BssSCy2hcz/images/TTLogo(1).png?fit=max\u0026auto=format\u0026n=lKy84_BssSCy2hcz\u0026q=85\u0026s=ac7c949427cc2893306f6036415f087e","href":"https://taptalent.ai"},"favicon":"https://mintcdn.com/taptalent/lKy84_BssSCy2hcz/images/TTLogo(1).png?fit=max\u0026auto=format\u0026n=lKy84_BssSCy2hcz\u0026q=85\u0026s=ac7c949427cc2893306f6036415f087e","background":{"decoration":"gradient"},"navbar":{"links":[]},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/taptalent-ai","website":"https://taptalent.ai/"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"taptalent","hasAudioNarration":false,"actualSubdomain":"taptalent","customDomains":["docs.taptalent.io"],"gitSource":{"type":"github","owner":"taptalent-ai","repo":"taptalent-docs","deployBranch":"feat/companyCampaignPartnerAPI","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6acf73c9b4870666e533191e","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Playground","count":63},{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"Webhooks","count":20},{"language":"default","tag":"API Reference","count":16},{"language":"default","tag":"Candidate Self-Scheduling","count":13},{"language":"default","tag":"Candidates","count":6},{"language":"default","tag":"Custom Field Values","count":6},{"language":"default","tag":"Pipelines","count":6},{"language":"default","tag":"Custom Fields","count":5},{"language":"default","tag":"Job Candidates","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-playground/candidates/add-a-candidate","slug":"/api-playground/candidates/add-a-candidate","pageMetadata":{"title":"Add a candidate","description":"Create a new candidate in your company.\n\n- **Duplicate email handling:** if a candidate with the same email\n already exists, the existing candidate is returned with\n `isExisting: true` instead of creating a duplicate.\n- **Job association:** if `jobId` is provided, the candidate is\n associated with that job and `jobCandidateId` is returned; resume\n scoring is automatically enabled (consumes credits). If the\n candidate is already in the job, `isAlreadyInJob` is `true` in the\n response.\n- **Resume parsing:** by default (`shouldParseResume: true`), a\n provided `resume` URL is downloaded, stored, and parsed\n asynchronously (consumes credits). The webhook events\n `resume.single_parse.completed` and `resume.single_parse.failed`\n are sent when parsing completes or fails.\n- **Scoring without parsing:** if `shouldParseResume` is `false` and\n `jobId` is provided, you must include `city`, `country`,\n `educations`, and `workExperiences` for scoring to work; otherwise\n the request fails with `MISSING_SCORING_FIELDS` (the missing field\n names are listed in `details.missingFields`).\n- **Response structure:** all miscellaneous fields (educations,\n workExperiences, etc.) are flattened to the top level of the\n returned candidate object.\n- **Validation:** all fields are validated against a schema; invalid\n requests return detailed field-specific error messages.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /candidates","href":"/api-playground/candidates/add-a-candidate","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Create a new candidate in your company.\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Duplicate email handling:\"\n }), \" if a candidate with the same email\\nalready exists, the existing candidate is returned with\\n\", _jsx(_components.code, {\n children: \"isExisting: true\"\n }), \" instead of creating a duplicate.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Job association:\"\n }), \" if \", _jsx(_components.code, {\n children: \"jobId\"\n }), \" is provided, the candidate is\\nassociated with that job and \", _jsx(_components.code, {\n children: \"jobCandidateId\"\n }), \" is returned; resume\\nscoring is automatically enabled (consumes credits). If the\\ncandidate is already in the job, \", _jsx(_components.code, {\n children: \"isAlreadyInJob\"\n }), \" is \", _jsx(_components.code, {\n children: \"true\"\n }), \" in the\\nresponse.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Resume parsing:\"\n }), \" by default (\", _jsx(_components.code, {\n children: \"shouldParseResume: true\"\n }), \"), a\\nprovided \", _jsx(_components.code, {\n children: \"resume\"\n }), \" URL is downloaded, stored, and parsed\\nasynchronously (consumes credits). The webhook events\\n\", _jsx(_components.code, {\n children: \"resume.single_parse.completed\"\n }), \" and \", _jsx(_components.code, {\n children: \"resume.single_parse.failed\"\n }), \"\\nare sent when parsing completes or fails.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Scoring without parsing:\"\n }), \" if \", _jsx(_components.code, {\n children: \"shouldParseResume\"\n }), \" is \", _jsx(_components.code, {\n children: \"false\"\n }), \" and\\n\", _jsx(_components.code, {\n children: \"jobId\"\n }), \" is provided, you must include \", _jsx(_components.code, {\n children: \"city\"\n }), \", \", _jsx(_components.code, {\n children: \"country\"\n }), \",\\n\", _jsx(_components.code, {\n children: \"educations\"\n }), \", and \", _jsx(_components.code, {\n children: \"workExperiences\"\n }), \" for scoring to work; otherwise\\nthe request fails with \", _jsx(_components.code, {\n children: \"MISSING_SCORING_FIELDS\"\n }), \" (the missing field\\nnames are listed in \", _jsx(_components.code, {\n children: \"details.missingFields\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Response structure:\"\n }), \" all miscellaneous fields (educations,\\nworkExperiences, etc.) are flattened to the top level of the\\nreturned candidate object.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Validation:\"\n }), \" all fields are validated against a schema; invalid\\nrequests return detailed field-specific error messages.\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Add a candidate","description":"Create a new candidate in your company.\n\n- **Duplicate email handling:** if a candidate with the same email\n already exists, the existing candidate is returned with\n `isExisting: true` instead of creating a duplicate.\n- **Job association:** if `jobId` is provided, the candidate is\n associated with that job and `jobCandidateId` is returned; resume\n scoring is automatically enabled (consumes credits). If the\n candidate is already in the job, `isAlreadyInJob` is `true` in the\n response.\n- **Resume parsing:** by default (`shouldParseResume: true`), a\n provided `resume` URL is downloaded, stored, and parsed\n asynchronously (consumes credits). The webhook events\n `resume.single_parse.completed` and `resume.single_parse.failed`\n are sent when parsing completes or fails.\n- **Scoring without parsing:** if `shouldParseResume` is `false` and\n `jobId` is provided, you must include `city`, `country`,\n `educations`, and `workExperiences` for scoring to work; otherwise\n the request fails with `MISSING_SCORING_FIELDS` (the missing field\n names are listed in `details.missingFields`).\n- **Response structure:** all miscellaneous fields (educations,\n workExperiences, etc.) are flattened to the top level of the\n returned candidate object.\n- **Validation:** all fields are validated against a schema; invalid\n requests return detailed field-specific error messages.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /candidates","href":"/api-playground/candidates/add-a-candidate","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Candidates"],"operationId":"createCandidate","summary":"Add a candidate","description":"Create a new candidate in your company.\n\n- **Duplicate email handling:** if a candidate with the same email\n already exists, the existing candidate is returned with\n `isExisting: true` instead of creating a duplicate.\n- **Job association:** if `jobId` is provided, the candidate is\n associated with that job and `jobCandidateId` is returned; resume\n scoring is automatically enabled (consumes credits). If the\n candidate is already in the job, `isAlreadyInJob` is `true` in the\n response.\n- **Resume parsing:** by default (`shouldParseResume: true`), a\n provided `resume` URL is downloaded, stored, and parsed\n asynchronously (consumes credits). The webhook events\n `resume.single_parse.completed` and `resume.single_parse.failed`\n are sent when parsing completes or fails.\n- **Scoring without parsing:** if `shouldParseResume` is `false` and\n `jobId` is provided, you must include `city`, `country`,\n `educations`, and `workExperiences` for scoring to work; otherwise\n the request fails with `MISSING_SCORING_FIELDS` (the missing field\n names are listed in `details.missingFields`).\n- **Response structure:** all miscellaneous fields (educations,\n workExperiences, etc.) are flattened to the top level of the\n returned candidate object.\n- **Validation:** all fields are validated against a schema; invalid\n requests return detailed field-specific error messages.\n","requestBody":"8b816df0-8af1-438d-a886-57f225020dd8","responses":{"200":"3cf4003c-9715-49fb-a03c-8082b6ec9731","400":"07de6a2b-5b28-48a4-87d9-feef24428254","401":"c3dcd7f6-9a50-42fb-8b1c-aba59fe510c5","402":"e4e12725-3641-47b9-8687-3fa108f94b18","429":"56cc53ab-5dea-4681-b51b-1c43ec9abc26","500":"9daa5e2b-fb20-49d3-a784-2adbc912bc3a"},"method":"post","type":"path","servers":["33fc5173-9c79-4ceb-afc4-86a4687d00cd","3a2ed6ba-6976-41bf-ae76-fe04d352e807"],"security":["480f8571-6aa1-4f13-ba5c-c8f2af838410"],"path":"/candidates","baseUrlOptions":["https://partner-api.taptalent.io/v1/partner","https://sandbox.partner-api.taptalent.io/v1/partner"],"title":"Add a candidate","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request body for creating a candidate. Note that the nested request\nobjects (educations, workExperiences, projectExperiences,\ncertifications) use different field names than the corresponding\nresponse objects — see each Input schema's description.\n","required":["firstName","lastName","email"],"properties":{"firstName":{"type":"string","minLength":1,"maxLength":200,"description":"Candidate's first name (min 1, max 200 characters).","isRequired":true,"uniqueKey":"firstName","typeLabel":"string"},"lastName":{"type":"string","minLength":1,"maxLength":200,"description":"Candidate's last name (min 1, max 200 characters).","isRequired":true,"uniqueKey":"lastName","typeLabel":"string"},"email":{"type":"string","format":"email","maxLength":500,"description":"Candidate's email address (must be valid email format, max 500 characters).","isRequired":true,"uniqueKey":"email","typeLabel":"string\u003cemail>"},"phone":{"type":"string","description":"Candidate's phone number.","uniqueKey":"phone","typeLabel":"string"},"resume":{"type":"string","format":"uri","description":"URL to candidate's resume file (must start with http:// or\nhttps://). If provided and `shouldParseResume` is true, the resume\nwill be downloaded, stored, and parsed.\n","uniqueKey":"resume","typeLabel":"string\u003curi>"},"currentJobTitle":{"type":"string","description":"Candidate's current job title.","uniqueKey":"currentJobTitle","typeLabel":"string"},"currentCompany":{"type":"string","description":"Candidate's current company name.","uniqueKey":"currentCompany","typeLabel":"string"},"city":{"type":"string","description":"City location. Required (together with `country`, `educations`,\nand `workExperiences`) when `jobId` is provided and\n`shouldParseResume` is false.\n","uniqueKey":"city","typeLabel":"string"},"country":{"type":"string","description":"Country. Required (together with `city`, `educations`, and\n`workExperiences`) when `jobId` is provided and\n`shouldParseResume` is false.\n","uniqueKey":"country","typeLabel":"string"},"skills":{"oneOf":[{"type":"array","items":{"type":"string","maxLength":200,"uniqueKey":"skills.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Array of skills (max 200 characters each) or a comma-separated\nstring. Arrays will be converted to comma-separated strings.\n","uniqueKey":"skills.oneOf.0","typeLabel":"string[]"},{"type":"string","description":"Array of skills (max 200 characters each) or a comma-separated\nstring. Arrays will be converted to comma-separated strings.\n","uniqueKey":"skills.oneOf.1","typeLabel":"string"}],"uniqueKey":"skills","typeLabel":"string[] | string"},"linkedin":{"type":"string","description":"LinkedIn profile URL.","uniqueKey":"linkedin","typeLabel":"string"},"coverLetter":{"type":"string","description":"Cover letter text.","uniqueKey":"coverLetter","typeLabel":"string"},"gender":{"type":"string","description":"Gender. Must be one of: \"male\", \"female\", \"other\", \"Male\", \"Female\", \"Other\".","enum":["male","female","other","Male","Female","Other"],"uniqueKey":"gender","typeLabel":"enum\u003cstring>"},"dateOfBirth":{"type":"string","format":"date","description":"Date of birth (ISO 8601 format).","uniqueKey":"dateOfBirth","typeLabel":"string\u003cdate>"},"nationality":{"type":"string","description":"Nationality.","uniqueKey":"nationality","typeLabel":"string"},"industry":{"type":"string","description":"Industry.","uniqueKey":"industry","typeLabel":"string"},"category":{"type":"string","description":"Category.","uniqueKey":"category","typeLabel":"string"},"jobId":{"type":"integer","description":"Job ID to associate the candidate with. If provided, resume\nscoring will be automatically enabled (consumes credits).\n","uniqueKey":"jobId","typeLabel":"integer"},"shouldParseResume":{"type":"boolean","default":true,"description":"Whether to parse the resume. Default: `true`. Set to `false` if\nyou're providing parsed data directly (educations,\nworkExperiences, etc.). If `false` and `jobId` is provided,\n`city`, `country`, `educations`, and `workExperiences` are\nrequired for scoring to work.\n","uniqueKey":"shouldParseResume","typeLabel":"boolean"},"majors":{"type":"string","description":"Majors/fields of study (comma-separated string or single value).\nNote: a string on input, but returned as an array of strings in\nresponses.\n","uniqueKey":"majors","typeLabel":"string"},"summary":{"type":"string","maxLength":5000,"description":"Professional summary (max 5000 characters).","uniqueKey":"summary","typeLabel":"string"},"languages":{"type":"array","description":"Array of language strings (max 100 characters each).","items":{"type":"string","maxLength":100,"uniqueKey":"languages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"languages","typeLabel":"string[]"},"educations":{"type":"array","description":"Array of education objects. Required (together with `city`,\n`country`, and `workExperiences`) when `jobId` is provided and\n`shouldParseResume` is false.\n","items":{"type":"object","description":"Education object as accepted in the create-candidate request. Note:\nthis request shape (`degree`, `university`, `graduation_year`) differs\nfrom the response shape `CandidateEducation` (`degree`, `field`,\n`institution`, `startDate`, `endDate`).\n","properties":{"degree":{"type":"string","maxLength":500,"description":"Degree name (max 500 characters).","uniqueKey":"educations.items.[INDEX].degree","typeLabel":"string"},"university":{"type":"string","maxLength":500,"description":"University/institution name (max 500 characters).","uniqueKey":"educations.items.[INDEX].university","typeLabel":"string"},"graduation_year":{"type":"string","maxLength":50,"description":"Graduation year (max 50 characters).","uniqueKey":"educations.items.[INDEX].graduation_year","typeLabel":"string"}},"uniqueKey":"educations.items.[INDEX]","typeLabel":"object"},"uniqueKey":"educations","typeLabel":"object[]"},"githubUrl":{"type":"string","format":"uri","description":"GitHub profile URL (must be valid URL).","uniqueKey":"githubUrl","typeLabel":"string\u003curi>"},"certifications":{"type":"array","description":"Array of certification objects.","items":{"type":"object","description":"Certification object as accepted in the create-candidate request.\nNote: this request shape (`name`, `provider`) differs from the\nresponse shape `CandidateCertification` (`name`, `issuer`,\n`issueDate`, `expiryDate`).\n","required":["name","provider"],"properties":{"name":{"type":"string","maxLength":500,"description":"Certification name (max 500 characters).","isRequired":true,"uniqueKey":"certifications.items.[INDEX].name","typeLabel":"string"},"provider":{"type":"string","maxLength":500,"description":"Certification provider/issuer (max 500 characters).","isRequired":true,"uniqueKey":"certifications.items.[INDEX].provider","typeLabel":"string"}},"uniqueKey":"certifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"certifications","typeLabel":"object[]"},"workExperiences":{"type":"array","description":"Array of work experience objects. Required (together with `city`,\n`country`, and `educations`) when `jobId` is provided and\n`shouldParseResume` is false.\n","items":{"type":"object","description":"Work experience object as accepted in the create-candidate request.\nNote: this request shape (`title`, `company`, `start_date`,\n`end_date`, `responsibilities`) differs from the response shape\n`CandidateWorkExperience` (`title`, `company`, `location`,\n`startDate`, `endDate`, `description`).\n","properties":{"title":{"type":"string","maxLength":500,"description":"Job title (max 500 characters).","uniqueKey":"workExperiences.items.[INDEX].title","typeLabel":"string"},"company":{"type":"string","maxLength":500,"description":"Company name (max 500 characters).","uniqueKey":"workExperiences.items.[INDEX].company","typeLabel":"string"},"start_date":{"type":"string","maxLength":50,"description":"Start date (max 50 characters).","uniqueKey":"workExperiences.items.[INDEX].start_date","typeLabel":"string"},"end_date":{"type":"string","maxLength":50,"description":"End date (max 50 characters). Omit this field for current positions.","uniqueKey":"workExperiences.items.[INDEX].end_date","typeLabel":"string"},"responsibilities":{"type":"array","description":"Array of responsibility strings (max 2000 characters each).","items":{"type":"string","maxLength":2000,"uniqueKey":"workExperiences.items.[INDEX].responsibilities.items.[INDEX]","typeLabel":"string"},"uniqueKey":"workExperiences.items.[INDEX].responsibilities","typeLabel":"string[]"}},"uniqueKey":"workExperiences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"workExperiences","typeLabel":"object[]"},"projectExperiences":{"type":"array","description":"Array of project experience objects.","items":{"type":"object","description":"Project experience object as accepted in the create-candidate request.\nNote: this request shape (`title`, `technology_used`, `summary`)\ndiffers from the response shape `CandidateProjectExperience` (`name`,\n`description`, `technologies`).\n","properties":{"title":{"type":"string","maxLength":500,"description":"Project title (max 500 characters).","uniqueKey":"projectExperiences.items.[INDEX].title","typeLabel":"string"},"technology_used":{"type":"string","maxLength":1000,"description":"Technologies used (max 1000 characters).","uniqueKey":"projectExperiences.items.[INDEX].technology_used","typeLabel":"string"},"summary":{"type":"array","description":"Array of summary strings (max 2000 characters each).","items":{"type":"string","maxLength":2000,"uniqueKey":"projectExperiences.items.[INDEX].summary.items.[INDEX]","typeLabel":"string"},"uniqueKey":"projectExperiences.items.[INDEX].summary","typeLabel":"string[]"}},"uniqueKey":"projectExperiences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"projectExperiences","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"fullCandidate":{"title":"fullCandidate","value":{"firstName":"John","lastName":"Doe","email":"john.doe@example.com","phone":"+1234567890","resume":"https://example.com/resumes/john-doe.pdf","currentJobTitle":"Software Engineer","currentCompany":"Tech Corp","city":"San Francisco","country":"United States","skills":["JavaScript","React","Node.js"],"linkedin":"https://linkedin.com/in/johndoe","coverLetter":"I am interested in joining your team...","gender":"Male","dateOfBirth":"1995-05-15","nationality":"American","industry":"Technology","category":"Engineering","jobId":12345,"shouldParseResume":true,"majors":"Computer Science","summary":"Experienced software engineer with 5+ years...","languages":["English","Spanish"],"educations":[{"degree":"Bachelor's","university":"University of California","graduation_year":"2019"}],"workExperiences":[{"title":"Senior Software Engineer","company":"Tech Corp","start_date":"2020-01-01","responsibilities":["Led development of...","Managed team of 5 engineers"]}],"projectExperiences":[{"title":"E-commerce Platform","technology_used":"React, Node.js, PostgreSQL","summary":["Built a full-stack e-commerce platform...","Implemented payment gateway integration"]}],"certifications":[{"name":"AWS Certified Solutions Architect","provider":"Amazon Web Services"}],"githubUrl":"https://github.com/johndoe"}},"minimalWithResumeParsing":{"title":"minimalWithResumeParsing","value":{"firstName":"John","lastName":"Doe","email":"john.doe@example.com","phone":"+1234567890","currentJobTitle":"Software Engineer","currentCompany":"Tech Corp","city":"San Francisco","country":"United States","skills":["JavaScript","React","Node.js"],"resume":"https://example.com/resumes/john-doe.pdf","jobId":12345,"shouldParseResume":true}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"3cf4003c-9715-49fb-a03c-8082b6ec9731":{"description":"Candidate created (or existing candidate returned when the email\nalready exists).\n","content":{"application/json":{"schema":{"type":"object","description":"Success envelope for the create-candidate endpoint.","required":["status","data"],"properties":{"status":{"type":"string","description":"Response status (\"success\").","enum":["success"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"data":{"type":"object","required":["candidate","jobCandidateId","isExisting"],"properties":{"candidate":{"type":"object","description":"The created or existing candidate object with all fields flattened.","properties":{"id":{"type":"integer","description":"Unique candidate identifier.","uniqueKey":"data.candidate.id","typeLabel":"integer"},"firstName":{"type":"string","description":"Candidate's first name.","uniqueKey":"data.candidate.firstName","typeLabel":"string"},"lastName":{"type":"string","description":"Candidate's last name.","uniqueKey":"data.candidate.lastName","typeLabel":"string"},"email":{"type":"string","description":"Candidate's email address.","uniqueKey":"data.candidate.email","typeLabel":"string"},"phone":{"type":"string","description":"Candidate's phone number.","uniqueKey":"data.candidate.phone","typeLabel":"string"},"currentJobTitle":{"type":"string","description":"Current job title.","uniqueKey":"data.candidate.currentJobTitle","typeLabel":"string"},"currentCompany":{"type":"string","description":"Current company name.","uniqueKey":"data.candidate.currentCompany","typeLabel":"string"},"city":{"type":"string","description":"City location.","uniqueKey":"data.candidate.city","typeLabel":"string"},"country":{"type":"string","description":"Country.","uniqueKey":"data.candidate.country","typeLabel":"string"},"skills":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"data.candidate.skills.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Candidate skills. Documented and observed responses return an\narray of skill strings; the plain-string variant is inferred from\nthe input-side CSV coercion and is not verified against\nproduction behavior.\n","x-inferred":true,"uniqueKey":"data.candidate.skills.oneOf.0","typeLabel":"string[]"},{"type":"string","description":"Candidate skills. Documented and observed responses return an\narray of skill strings; the plain-string variant is inferred from\nthe input-side CSV coercion and is not verified against\nproduction behavior.\n","x-inferred":true,"uniqueKey":"data.candidate.skills.oneOf.1","typeLabel":"string"}],"uniqueKey":"data.candidate.skills","typeLabel":"string[] | string"},"resume":{"type":"string","description":"URL to the stored resume file.","uniqueKey":"data.candidate.resume","typeLabel":"string"},"coverLetter":{"type":"string","description":"Cover letter text.","uniqueKey":"data.candidate.coverLetter","typeLabel":"string"},"majors":{"type":"array","description":"Array of majors/fields of study. Note: submitted as a\ncomma-separated string on input, returned as an array of strings.\n","items":{"type":"string","uniqueKey":"data.candidate.majors.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.candidate.majors","typeLabel":"string[]"},"summary":{"type":"string","description":"Professional summary.","uniqueKey":"data.candidate.summary","typeLabel":"string"},"languages":{"type":"array","description":"Array of languages.","items":{"type":"string","uniqueKey":"data.candidate.languages.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.candidate.languages","typeLabel":"string[]"},"educations":{"type":"array","description":"Array of education objects.","items":{"type":"object","description":"Education object as returned in detailed candidate responses. Differs\nfrom the request-side `CandidateEducationInput` shape.\n","properties":{"degree":{"type":"string","description":"Degree name.","uniqueKey":"data.candidate.educations.items.[INDEX].degree","typeLabel":"string"},"field":{"type":"string","description":"Field of study.","uniqueKey":"data.candidate.educations.items.[INDEX].field","typeLabel":"string"},"institution":{"type":"string","description":"Institution name.","uniqueKey":"data.candidate.educations.items.[INDEX].institution","typeLabel":"string"},"startDate":{"type":"string","format":"date","description":"Start date.","uniqueKey":"data.candidate.educations.items.[INDEX].startDate","typeLabel":"string\u003cdate>"},"endDate":{"type":"string","format":"date","description":"End date.","uniqueKey":"data.candidate.educations.items.[INDEX].endDate","typeLabel":"string\u003cdate>"}},"uniqueKey":"data.candidate.educations.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.candidate.educations","typeLabel":"object[]"},"workExperiences":{"type":"array","description":"Array of work experience objects.","items":{"type":"object","description":"Work experience object as returned in detailed candidate responses.\nDiffers from the request-side `CandidateWorkExperienceInput` shape.\n","properties":{"title":{"type":"string","description":"Job title.","uniqueKey":"data.candidate.workExperiences.items.[INDEX].title","typeLabel":"string"},"company":{"type":"string","description":"Company name.","uniqueKey":"data.candidate.workExperiences.items.[INDEX].company","typeLabel":"string"},"location":{"type":"string","description":"Work location.","uniqueKey":"data.candidate.workExperiences.items.[INDEX].location","typeLabel":"string"},"startDate":{"type":"string","format":"date","description":"Start date.","uniqueKey":"data.candidate.workExperiences.items.[INDEX].startDate","typeLabel":"string\u003cdate>"},"endDate":{"oneOf":[{"type":"string","format":"date","description":"End date. `null` for current positions.","uniqueKey":"data.candidate.workExperiences.items.[INDEX].endDate.oneOf.0","typeLabel":"string\u003cdate>"},{"type":"null","format":"date","description":"End date. `null` for current positions.","uniqueKey":"data.candidate.workExperiences.items.[INDEX].endDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.candidate.workExperiences.items.[INDEX].endDate","typeLabel":"string\u003cdate> | null"},"description":{"type":"string","description":"Role description.","uniqueKey":"data.candidate.workExperiences.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.candidate.workExperiences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.candidate.workExperiences","typeLabel":"object[]"},"projectExperiences":{"type":"array","description":"Array of project experience objects.","items":{"type":"object","description":"Project experience object as returned in candidate responses. Differs\nfrom the request-side `CandidateProjectExperienceInput` shape.\n","properties":{"name":{"type":"string","description":"Project name.","uniqueKey":"data.candidate.projectExperiences.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","description":"Project description.","uniqueKey":"data.candidate.projectExperiences.items.[INDEX].description","typeLabel":"string"},"technologies":{"type":"array","description":"Technologies used.","items":{"type":"string","uniqueKey":"data.candidate.projectExperiences.items.[INDEX].technologies.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.candidate.projectExperiences.items.[INDEX].technologies","typeLabel":"string[]"}},"uniqueKey":"data.candidate.projectExperiences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.candidate.projectExperiences","typeLabel":"object[]"},"certifications":{"type":"array","description":"Array of certification objects.","items":{"type":"object","description":"Certification object as returned in candidate responses. Differs from\nthe request-side `CandidateCertificationInput` shape.\n","properties":{"name":{"type":"string","description":"Certification name.","uniqueKey":"data.candidate.certifications.items.[INDEX].name","typeLabel":"string"},"issuer":{"type":"string","description":"Certification issuer.","uniqueKey":"data.candidate.certifications.items.[INDEX].issuer","typeLabel":"string"},"issueDate":{"type":"string","format":"date","description":"Issue date.","uniqueKey":"data.candidate.certifications.items.[INDEX].issueDate","typeLabel":"string\u003cdate>"},"expiryDate":{"type":"string","format":"date","description":"Expiry date.","uniqueKey":"data.candidate.certifications.items.[INDEX].expiryDate","typeLabel":"string\u003cdate>"}},"uniqueKey":"data.candidate.certifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.candidate.certifications","typeLabel":"object[]"},"githubUrl":{"type":"string","description":"GitHub profile URL.","uniqueKey":"data.candidate.githubUrl","typeLabel":"string"},"linkedin":{"type":"string","description":"LinkedIn profile URL.","uniqueKey":"data.candidate.linkedin","typeLabel":"string"},"gender":{"type":"string","description":"Gender.","uniqueKey":"data.candidate.gender","typeLabel":"string"},"dateOfBirth":{"type":"string","format":"date","description":"Date of birth.","uniqueKey":"data.candidate.dateOfBirth","typeLabel":"string\u003cdate>"},"nationality":{"type":"string","description":"Nationality.","uniqueKey":"data.candidate.nationality","typeLabel":"string"},"industry":{"type":"string","description":"Industry.","uniqueKey":"data.candidate.industry","typeLabel":"string"},"category":{"type":"string","description":"Category.","uniqueKey":"data.candidate.category","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.candidate","typeLabel":"object"},"jobCandidateId":{"oneOf":[{"type":"integer","description":"The job candidate ID if `jobId` was provided and the candidate\nwas added to the job, otherwise `null`.\n","isRequired":true,"uniqueKey":"data.jobCandidateId.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The job candidate ID if `jobId` was provided and the candidate\nwas added to the job, otherwise `null`.\n","isRequired":true,"uniqueKey":"data.jobCandidateId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.jobCandidateId","typeLabel":"integer | null"},"isExisting":{"type":"boolean","description":"Indicates if the candidate already existed (true) or was newly\ncreated (false).\n","isRequired":true,"uniqueKey":"data.isExisting","typeLabel":"boolean"},"isAlreadyInJob":{"type":"boolean","description":"Indicates if the candidate was already associated with the\nspecified job. Only present when `jobId` is provided in the\nrequest.\n","uniqueKey":"data.isAlreadyInJob","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"created":{"title":"created","value":{"status":"success","data":{"candidate":{"id":12345,"firstName":"John","lastName":"Doe","email":"john.doe@example.com","phone":"+1234567890","currentJobTitle":"Software Engineer","currentCompany":"Tech Corp","city":"San Francisco","country":"United States","skills":["JavaScript","React","Node.js"],"resume":"https://storage.example.com/resumes/john-doe.pdf","coverLetter":"I am interested in joining your team...","majors":["Computer Science"],"summary":"Experienced software engineer with 5+ years...","languages":["English","Spanish"],"educations":[{"degree":"Bachelor's","field":"Computer Science","institution":"University of California","startDate":"2015-09-01","endDate":"2019-06-01"}],"workExperiences":[{"title":"Senior Software Engineer","company":"Tech Corp","location":"San Francisco, CA","startDate":"2020-01-01","endDate":null,"description":"Led development of..."}],"projectExperiences":[{"name":"E-commerce Platform","description":"Built a full-stack e-commerce platform...","technologies":["React","Node.js","PostgreSQL"]}],"certifications":[{"name":"AWS Certified Solutions Architect","issuer":"Amazon Web Services","issueDate":"2022-03-15","expiryDate":"2025-03-15"}],"githubUrl":"https://github.com/johndoe","linkedin":"https://linkedin.com/in/johndoe","gender":"Male","dateOfBirth":"1995-05-15","nationality":"American","industry":"Technology","category":"Engineering"},"jobCandidateId":67890,"isExisting":false,"isAlreadyInJob":false}}}},"exampleType":"examples"}},"exampleType":"examples"},"07de6a2b-5b28-48a4-87d9-feef24428254":{"description":"Validation error. HTTP status inferred from the error category;\nthe source documentation specifies the body but not the status\ncode.\n","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"missingFirstName":{"title":"missingFirstName","value":{"error":{"code":"MISSING_FIRST_NAME","type":"validation_error","message":"firstName is required"}}},"missingLastName":{"title":"missingLastName","value":{"error":{"code":"MISSING_LAST_NAME","type":"validation_error","message":"lastName is required"}}},"missingEmail":{"title":"missingEmail","value":{"error":{"code":"MISSING_EMAIL","type":"validation_error","message":"email is required"}}},"invalidRequest":{"title":"invalidRequest","value":{"error":{"code":"INVALID_REQUEST","type":"validation_error","message":"One or more fields are invalid.","details":{"email":"email must be a valid email address","resume":"resume must be a valid URL starting with http:// or https://","firstName":"firstName is required"}}}},"missingScoringFields":{"title":"missingScoringFields","value":{"error":{"code":"MISSING_SCORING_FIELDS","type":"validation_error","message":"When scoring is required (jobId provided) without parsing, these fields are required: educations, workExperiences, city, country","details":{"missingFields":["city","country"]}}}}},"exampleType":"examples"}},"exampleType":"examples"},"c3dcd7f6-9a50-42fb-8b1c-aba59fe510c5":{"description":"Authentication failed. Note that authentication errors use flat body\nshapes rather than the canonical `error` envelope.\n","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Flat authentication error shape (does not use the canonical `error` envelope).","required":["message"],"properties":{"message":{"type":"string","examples":["Invalid API key"],"isRequired":true,"uniqueKey":"oneOf.0.message","typeLabel":"string"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Flat authentication error shape returned when the account subscription is inactive.","required":["code","message"],"properties":{"code":{"type":"string","examples":["ACCOUNT_INACTIVE"],"isRequired":true,"uniqueKey":"oneOf.1.code","typeLabel":"string"},"message":{"type":"string","examples":["Your subscription is inactive. Please renew your plan to continue using this feature."],"isRequired":true,"uniqueKey":"oneOf.1.message","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","description":"Flat authentication error shape returned when the API key does not exist.","required":["message","isApiKeyExists"],"properties":{"message":{"type":"string","examples":["API key not found"],"isRequired":true,"uniqueKey":"oneOf.2.message","typeLabel":"string"},"isApiKeyExists":{"type":"boolean","isRequired":true,"uniqueKey":"oneOf.2.isApiKeyExists","typeLabel":"boolean"}},"uniqueKey":"oneOf.2","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"invalidApiKey":{"title":"invalidApiKey","value":{"message":"Invalid API key"}},"accountInactive":{"title":"accountInactive","value":{"code":"ACCOUNT_INACTIVE","message":"Your subscription is inactive. Please renew your plan to continue using this feature."}},"apiKeyNotFound":{"title":"apiKeyNotFound","value":{"message":"API key not found","isApiKeyExists":false}}},"exampleType":"examples"}},"exampleType":"examples"},"e4e12725-3641-47b9-8687-3fa108f94b18":{"description":"Insufficient credits for resume parsing or resume scoring. HTTP\nstatus inferred from the error category (`payment_error`); the\nsource documentation specifies the body but not the status code.\n","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"insufficientCreditsParsing":{"title":"insufficientCreditsParsing","value":{"error":{"code":"INSUFFICIENT_CREDITS","type":"payment_error","message":"Insufficient credits for resume parsing"}}},"insufficientCreditsScoring":{"title":"insufficientCreditsScoring","value":{"error":{"code":"INSUFFICIENT_CREDITS","type":"payment_error","message":"Insufficient credits for resume scoring"}}}},"exampleType":"examples"}},"exampleType":"examples"},"56cc53ab-5dea-4681-b51b-1c43ec9abc26":{"x-inferred":true,"description":"Rate limit exceeded. Rate limits are applied at the company level; the\nresponse body below is inferred because the current documentation\nmentions handling 429 responses but does not publish a body. Retry\nwith exponential backoff.\n","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rateLimited":{"title":"rateLimited","value":{"error":{"code":"RATE_LIMIT_EXCEEDED","type":"validation_error","message":"Too many requests. Please retry with exponential backoff."}}}},"exampleType":"examples"}},"exampleType":"examples"},"9daa5e2b-fb20-49d3-a784-2adbc912bc3a":{"description":"Unexpected server error.","content":{"application/json":{"schema":{"type":"object","description":"Canonical error envelope used by most non-authentication errors.","required":["error"],"properties":{"error":{"type":"object","description":"Canonical error object carried under the `error` key.","required":["code","type","message"],"properties":{"code":{"type":"string","description":"Machine-readable error code, e.g. `INVALID_REQUEST`.","examples":["INVALID_REQUEST"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"type":{"type":"string","description":"Error category.","enum":["validation_error","internal_error","not_found","authorization_error","resource_error","payment_error","subscription_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Optional per-field validation messages or structured error context.","additionalProperties":true,"uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"internalError":{"title":"internalError","value":{"error":{"code":"INTERNAL_ERROR","type":"internal_error","message":"Something went wrong."}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"480f8571-6aa1-4f13-ba5c-c8f2af838410":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Company-scoped API key. Production keys are prefixed `sk_live_`,\nsandbox keys `sk_test_`, each followed by 22 base62 characters\n(pattern `^sk_(live|test)_[0-9A-Za-z]{22}$`). Generate keys in the\nTapTalent dashboard under Account Settings → Developers → API Key\nManagement; a key is shown once at generation and old keys are\ninvalidated immediately on regeneration.\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"33fc5173-9c79-4ceb-afc4-86a4687d00cd":{"url":"https://partner-api.taptalent.io/v1/partner","description":"Production (use `sk_live_` keys)"},"3a2ed6ba-6976-41bf-ae76-fe04d352e807":{"url":"https://sandbox.partner-api.taptalent.io/v1/partner","description":"Sandbox / staging (use `sk_test_` keys)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Company-scoped API key. Production keys are prefixed `sk_live_`,\nsandbox keys `sk_test_`, each followed by 22 base62 characters\n(pattern `^sk_(live|test)_[0-9A-Za-z]{22}$`). Generate keys in the\nTapTalent dashboard under Account Settings → Developers → API Key\nManagement; a key is shown once at generation and old keys are\ninvalidated immediately on regeneration.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Company-scoped API key. Production keys are prefixed `sk_live_`,\nsandbox keys `sk_test_`, each followed by 22 base62 characters\n(pattern `^sk_(live|test)_[0-9A-Za-z]{22}$`). Generate keys in the\nTapTalent dashboard under Account Settings → Developers → API Key\nManagement; a key is shown once at generation and old keys are\ninvalidated immediately on regeneration.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"taptalent","siteName":"Taptalent Partner API","title":"Add a candidate - Taptalent Partner API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T12:21:43.197Z","originalFileLocation":"api-playground/candidates/add-a-candidate.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create a new candidate in your company. - Duplicate email handling: if a candidate with the same email already exists, the existing candidate is returned with isExisting: true instead of creating a duplicate. - Job association: if jobId is provided, the candidate is associated with that job and jobCandidateId is returned; resume scoring is automatically enabled (consumes credits). If the candidate is already in the job, isAlreadyInJob is true in the response. - Resume parsing: by default (shouldParseResume: true), a provided resume URL is downloaded, stored, and parsed asynchronously (consumes credits). The webhook events resume.single_parse.completed and resume.single_parse.failed are sent when parsing completes or fails. - Scoring without parsing: if shouldParseResume is false and jobId is provided, you must include city, country, educations, and workExperiences for scoring to work; otherwise the request fails with MISSING_SCORING_FIELDS (the missing field names are listed in details.missingFields). - Response structure: all miscellaneous fields (educations, workExperiences, etc.) are flattened to the top level of the returned candidate object. - Validation: all fields are validated against a schema; invalid requests return detailed field-specific error messages.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Taptalent Partner API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Add a candidate - Taptalent Partner API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a new candidate in your company. - Duplicate email handling: if a candidate with the same email already exists, the existing candidate is returned with isExisting: true instead of creating a duplicate. - Job association: if jobId is provided, the candidate is associated with that job and jobCandidateId is returned; resume scoring is automatically enabled (consumes credits). If the candidate is already in the job, isAlreadyInJob is true in the response. - Resume parsing: by default (shouldParseResume: true), a provided resume URL is downloaded, stored, and parsed asynchronously (consumes credits). The webhook events resume.single_parse.completed and resume.single_parse.failed are sent when parsing completes or fails. - Scoring without parsing: if shouldParseResume is false and jobId is provided, you must include city, country, educations, and workExperiences for scoring to work; otherwise the request fails with MISSING_SCORING_FIELDS (the missing field names are listed in details.missingFields). - Response structure: all miscellaneous fields (educations, workExperiences, etc.) are flattened to the top level of the returned candidate object. - Validation: all fields are validated against a schema; invalid requests return detailed field-specific error messages.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Taptalent Partner API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://taptalent.mintlify.site/_mintlify/api/og/v2?division=Candidates\u0026amp;title=Add+a+candidate\u0026amp;description=Create+a+new+candidate+in+your+company.%0A%0A-+**Duplicate+email+handling%3A**+if+a+candidate+with+the+same+email%0A++already+exists%2C+the+existing+candidate+is+returned\u0026amp;theme=646244e5d078ae15de8cf593\u0026amp;signature=398c30e432da02c0a7da405f9ca16440f7b17a2c9500a668552d25be9eb2d7ef\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Add a candidate - Taptalent Partner API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a new candidate in your company. - Duplicate email handling: if a candidate with the same email already exists, the existing candidate is returned with isExisting: true instead of creating a duplicate. - Job association: if jobId is provided, the candidate is associated with that job and jobCandidateId is returned; resume scoring is automatically enabled (consumes credits). If the candidate is already in the job, isAlreadyInJob is true in the response. - Resume parsing: by default (shouldParseResume: true), a provided resume URL is downloaded, stored, and parsed asynchronously (consumes credits). The webhook events resume.single_parse.completed and resume.single_parse.failed are sent when parsing completes or fails. - Scoring without parsing: if shouldParseResume is false and jobId is provided, you must include city, country, educations, and workExperiences for scoring to work; otherwise the request fails with MISSING_SCORING_FIELDS (the missing field names are listed in details.missingFields). - Response structure: all miscellaneous fields (educations, workExperiences, etc.) are flattened to the top level of the returned candidate object. - Validation: all fields are validated against a schema; invalid requests return detailed field-specific error messages.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://taptalent.mintlify.site/_mintlify/api/og/v2?division=Candidates\u0026amp;title=Add+a+candidate\u0026amp;description=Create+a+new+candidate+in+your+company.%0A%0A-+**Duplicate+email+handling%3A**+if+a+candidate+with+the+same+email%0A++already+exists%2C+the+existing+candidate+is+returned\u0026amp;theme=646244e5d078ae15de8cf593\u0026amp;signature=398c30e432da02c0a7da405f9ca16440f7b17a2c9500a668552d25be9eb2d7ef\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/taptalent/RGngVHavW5nHpOXk/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Taptalent Partner API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6e58ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-playground/candidates/add-a-candidate.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.taptalent.io/#organization\",\"name\":\"Taptalent Partner API\",\"url\":\"https://docs.taptalent.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/taptalent/lKy84_BssSCy2hcz/images/TTLogo(1).png?fit=max\u0026auto=format\u0026n=lKy84_BssSCy2hcz\u0026q=85\u0026s=ac7c949427cc2893306f6036415f087e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.taptalent.io#website\",\"name\":\"Taptalent Partner API\",\"url\":\"https://docs.taptalent.io\",\"publisher\":{\"@id\":\"https://docs.taptalent.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate#webpage\",\"url\":\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate\",\"name\":\"Add a candidate\",\"description\":\"Create a new candidate in your company. - Duplicate email handling: if a candidate with the same email already exists, the existing candidate is returned with isExisting: true instead of creating a duplicate. - Job association: if jobId is provided, the candidate is associated with that job and jobCandidateId is returned; resume scoring is automatically enabled (consumes credits). If the candidate is already in the job, isAlreadyInJob is true in the response. - Resume parsing: by default (shouldParseResume: true), a provided resume URL is downloaded, stored, and parsed asynchronously (consumes credits). The webhook events resume.single_parse.completed and resume.single_parse.failed are sent when parsing completes or fails. - Scoring without parsing: if shouldParseResume is false and jobId is provided, you must include city, country, educations, and workExperiences for scoring to work; otherwise the request fails with MISSING_SCORING_FIELDS (the missing field names are listed in details.missingFields). - Response structure: all miscellaneous fields (educations, workExperiences, etc.) are flattened to the top level of the returned candidate object. - Validation: all fields are validated against a schema; invalid requests return detailed field-specific error messages.\",\"dateModified\":\"2026-10-14T12:21:43.197Z\",\"isPartOf\":{\"@id\":\"https://docs.taptalent.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Taptalent Partner API\",\"item\":\"https://docs.taptalent.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add a candidate\",\"item\":\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate#apireference\",\"headline\":\"Add a candidate\",\"name\":\"Add a candidate\",\"description\":\"Create a new candidate in your company. - Duplicate email handling: if a candidate with the same email already exists, the existing candidate is returned with isExisting: true instead of creating a duplicate. - Job association: if jobId is provided, the candidate is associated with that job and jobCandidateId is returned; resume scoring is automatically enabled (consumes credits). If the candidate is already in the job, isAlreadyInJob is true in the response. - Resume parsing: by default (shouldParseResume: true), a provided resume URL is downloaded, stored, and parsed asynchronously (consumes credits). The webhook events resume.single_parse.completed and resume.single_parse.failed are sent when parsing completes or fails. - Scoring without parsing: if shouldParseResume is false and jobId is provided, you must include city, country, educations, and workExperiences for scoring to work; otherwise the request fails with MISSING_SCORING_FIELDS (the missing field names are listed in details.missingFields). - Response structure: all miscellaneous fields (educations, workExperiences, etc.) are flattened to the top level of the returned candidate object. - Validation: all fields are validated against a schema; invalid requests return detailed field-specific error messages.\",\"url\":\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate\",\"mainEntityOfPage\":{\"@id\":\"https://docs.taptalent.io/api-playground/candidates/add-a-candidate#webpage\"},\"dateModified\":\"2026-10-14T12:21:43.197Z\",\"publisher\":{\"@id\":\"https://docs.taptalent.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.taptalent.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Taptalent Partner API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Taptalent Partner API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Playground","groups":[{"group":"Jobs","pages":[{"title":"List jobs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /jobs","href":"/api-playground/jobs/list-jobs"},{"title":"Create a job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /jobs","href":"/api-playground/jobs/create-a-job"},{"title":"Get a job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /jobs/{jobId}","href":"/api-playground/jobs/get-a-job"},{"title":"Update a job","description":"Update an existing job posting. All fields are optional; only include\nthe fields you want to change (partial update). Fields not included in\nthe request remain unchanged. The request body cannot be empty — at\nleast one field must be provided.\n\nBehavior notes:\n- **Status lifecycle**: the documented path is `DRAFT` → `ACTIVE` →\n `INACTIVE` → `DELETED`. Once a job's status moves past `DRAFT` it\n cannot be changed back to `DRAFT` (`INVALID_STATUS_TRANSITION`);\n other reverse transitions are not documented either way.\n- **Null clears**: some fields accept `null` to clear their value\n (`teamId`, `contractType`, `degreeLevel`, `jobRole`,\n `potentialAmount`, `potentialAmountCurrency`, `potentialHiresCount`,\n `yearOfExperience`, `description`, `screeningQuestion`,\n `applicationForm`, `criterionDetails`). `title`, `city`, `state`, and\n `country` cannot be set to `null` — omit them instead.\n- **applicationForm is merged, not replaced**: provide only the\n `applicationForm` keys you want to change; new values override\n existing ones and the rest are kept. If `expectedCTC`/`currentCTC` is\n set to `MANDATORY` or `OPTIONAL` (not `OFF`), the corresponding\n currency key is required unless the job already has a currency value;\n otherwise the update fails.\n- The three salary fields must be provided together if any is\n provided, and `salaryRangeTo` must be greater than\n `salaryRangeFrom`.\n- All field validations (type, length, format) are the same as for\n Create Job.\n\nThe success response is a bare job object that is smaller than the\ncreate/get response and includes the populated `pipelineStage` array.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /jobs/{jobId}","href":"/api-playground/jobs/update-a-job"}]},{"group":"Candidates","pages":[{"title":"Add a candidate","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /candidates","href":"/api-playground/candidates/add-a-candidate"},{"title":"List candidates","description":"Retrieve a paginated list of candidates in your company with advanced\nfiltering options.\n\n**Pagination is 0-indexed on this endpoint:** the first page is\n`pageNumber=0` (unlike most other endpoints, which start at page 1).\nCheck `pagination.hasNextPage` to determine whether more data is\navailable.\n\nFiltering notes:\n\n- For array filters (`jobIds`, `stageIds`, `skills`, `groupIds`),\n use comma-separated values.\n- Skill searches are case-insensitive; other text filters may be\n case-sensitive.\n- Use `searchTerm` for broad text searches across multiple fields.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /candidates/list","href":"/api-playground/candidates/list-candidates"},{"title":"Get candidate details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /candidates/{candidateId}","href":"/api-playground/candidates/get-candidate-details"},{"title":"Bulk upload resumes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /candidates/bulk/resume","href":"/api-playground/candidates/bulk-upload-resumes"},{"title":"Get batch candidates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /candidates/batch/{batchId}","href":"/api-playground/candidates/get-batch-candidates"},{"title":"Bulk fetch candidates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /candidates/bulk-fetch","href":"/api-playground/candidates/bulk-fetch-candidates"}]},{"group":"Job Candidates","pages":[{"title":"Bulk fetch job candidates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /job-candidates/bulk-fetch","href":"/api-playground/job-candidates/bulk-fetch-job-candidates"},{"title":"Bulk upload resumes to a job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /job-candidates/bulk/resume","href":"/api-playground/job-candidates/bulk-upload-resumes-to-a-job"},{"title":"List candidates for a job","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /job-candidates/job/{jobId}/candidates","href":"/api-playground/job-candidates/list-candidates-for-a-job"},{"title":"List candidates in a pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /job-candidates/stage/{stageId}/candidates","href":"/api-playground/job-candidates/list-candidates-in-a-pipeline-stage"},{"title":"Move a job candidate to a stage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /job-candidates/{jobCandidateId}/stage","href":"/api-playground/job-candidates/move-a-job-candidate-to-a-stage"}]},{"group":"Pipelines","pages":[{"title":"List pipelines","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /pipelines","href":"/api-playground/pipelines/list-pipelines"},{"title":"Create a pipeline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /pipelines","href":"/api-playground/pipelines/create-a-pipeline"},{"title":"Get pipeline details","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /pipelines/{pipelineId}","href":"/api-playground/pipelines/get-pipeline-details"},{"title":"Update a pipeline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /pipelines/{pipelineId}","href":"/api-playground/pipelines/update-a-pipeline"},{"title":"Create or update a pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /pipelines/stages","href":"/api-playground/pipelines/create-or-update-a-pipeline-stage"},{"title":"Delete a pipeline stage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /pipelines/stages/{stageId}","href":"/api-playground/pipelines/delete-a-pipeline-stage"}]},{"group":"Custom Fields","pages":[{"title":"List custom fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /custom-fields","href":"/api-playground/custom-fields/list-custom-fields"},{"title":"Create a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /custom-fields","href":"/api-playground/custom-fields/create-a-custom-field"},{"title":"Get a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /custom-fields/{customFieldId}","href":"/api-playground/custom-fields/get-a-custom-field"},{"title":"Update a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /custom-fields/{customFieldId}","href":"/api-playground/custom-fields/update-a-custom-field"},{"title":"Delete a custom field","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /custom-fields/{customFieldId}","href":"/api-playground/custom-fields/delete-a-custom-field"}]},{"group":"Custom Field Values","pages":[{"title":"List custom field values for an entity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /custom-field-values","href":"/api-playground/custom-field-values/list-custom-field-values-for-an-entity"},{"title":"Create or update a custom field value","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /custom-field-values","href":"/api-playground/custom-field-values/create-or-update-a-custom-field-value"},{"title":"Bulk create or update custom field values","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /custom-field-values/bulk","href":"/api-playground/custom-field-values/bulk-create-or-update-custom-field-values"},{"title":"Get a custom field value","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /custom-field-values/{valueId}","href":"/api-playground/custom-field-values/get-a-custom-field-value"},{"title":"Delete a custom field value","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /custom-field-values/{valueId}","href":"/api-playground/custom-field-values/delete-a-custom-field-value"},{"title":"Delete all custom field values for an entity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /custom-field-values/entity/{entityType}/{entityId}","href":"/api-playground/custom-field-values/delete-all-custom-field-values-for-an-entity"}]},{"group":"Candidate Self-Scheduling","pages":[{"title":"List booking schedules","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules","href":"/api-playground/candidate-self-scheduling/list-booking-schedules"},{"title":"Get a booking schedule","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules/{bookingScheduleId}","href":"/api-playground/candidate-self-scheduling/get-a-booking-schedule"},{"title":"List available slots","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules/{bookingScheduleId}/slots","href":"/api-playground/candidate-self-scheduling/list-available-slots"},{"title":"List locations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules/{bookingScheduleId}/locations","href":"/api-playground/candidate-self-scheduling/list-locations"},{"title":"List questions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /booking-schedules/{bookingScheduleId}/questions","href":"/api-playground/candidate-self-scheduling/list-questions"},{"title":"Create a candidate scheduling link","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /booking-schedules/{bookingScheduleId}/links","href":"/api-playground/candidate-self-scheduling/create-a-candidate-scheduling-link"},{"title":"Create a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /booking-schedules/{bookingScheduleId}/bookings","href":"/api-playground/candidate-self-scheduling/create-a-booking"},{"title":"List bookings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /bookings","href":"/api-playground/candidate-self-scheduling/list-bookings"},{"title":"Get a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /bookings/{bookingId}","href":"/api-playground/candidate-self-scheduling/get-a-booking"},{"title":"Reschedule a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /bookings/{bookingId}/reschedule","href":"/api-playground/candidate-self-scheduling/reschedule-a-booking"},{"title":"Cancel a booking","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /bookings/{bookingId}/cancel","href":"/api-playground/candidate-self-scheduling/cancel-a-booking"},{"title":"Record attendance / check-in","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /bookings/{bookingId}/attendance","href":"/api-playground/candidate-self-scheduling/record-attendance-check-in"},{"title":"Record attendance by code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /attendance-codes/{attendanceCode}/check-in","href":"/api-playground/candidate-self-scheduling/record-attendance-by-code"}]},{"group":"Webhooks","pages":[{"title":"Bulk resume upload batch started","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.bulk_upload_parse.started","href":"/api-playground/webhooks/bulk-resume-upload-batch-started"},{"title":"Bulk resume upload batch completed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.bulk_upload_parse.completed","href":"/api-playground/webhooks/bulk-resume-upload-batch-completed"},{"title":"Bulk resume upload batch failed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.bulk_upload_parse.failed","href":"/api-playground/webhooks/bulk-resume-upload-batch-failed"},{"title":"Single resume parse completed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.single_parse.completed","href":"/api-playground/webhooks/single-resume-parse-completed"},{"title":"Single resume parse failed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook resume.single_parse.failed","href":"/api-playground/webhooks/single-resume-parse-failed"},{"title":"Job created","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook job.created","href":"/api-playground/webhooks/job-created"},{"title":"Job details updated","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook job.updated","href":"/api-playground/webhooks/job-details-updated"},{"title":"Job status changed","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook job.status_changed","href":"/api-playground/webhooks/job-status-changed"},{"title":"Candidates added to a job","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.added_to_job","href":"/api-playground/webhooks/candidates-added-to-a-job"},{"title":"Candidates moved to a different stage","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.stage_changed","href":"/api-playground/webhooks/candidates-moved-to-a-different-stage"},{"title":"Candidates hired","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.hired","href":"/api-playground/webhooks/candidates-hired"},{"title":"Candidates rejected","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.rejected","href":"/api-playground/webhooks/candidates-rejected"},{"title":"Candidates removed from a job","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.removed_from_job","href":"/api-playground/webhooks/candidates-removed-from-a-job"},{"title":"Candidate profile or application updated","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook candidate.updated","href":"/api-playground/webhooks/candidate-profile-or-application-updated"},{"title":"Booking scheduled","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook booking.scheduled","href":"/api-playground/webhooks/booking-scheduled"},{"title":"Booking rescheduled","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook booking.rescheduled","href":"/api-playground/webhooks/booking-rescheduled"},{"title":"Booking cancelled","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook booking.cancelled","href":"/api-playground/webhooks/booking-cancelled"},{"title":"Booking attendance updated","version":null,"deprecated":null,"openapi":"/api-reference/openapi.yaml webhook booking.attendance_updated","href":"/api-playground/webhooks/booking-attendance-updated"}]}]}]},"basePath":"","title":"Add a candidate - Taptalent Partner API","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}