{
"error": "Field is required.",
"name": "interview_result_id"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
{
"error": "Field is required.",
"name": "interview_result_id"
}
Resume & Form verification
Create or update a pre-screening position
Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this.
The screening behaviour is driven by two related arrays:
assessment_rules — the rules enforced on each candidate. Only rules with type: "screening" (plus resume_match / resume_technical_experience) actually pass/reject; other entries just declare collected fields.
form_fields — the candidate-facing form (standard field references and custom fields).
For form and resume_with_form types, enable a standard field in BOTH arrays: add the rule to assessment_rules and a matching { id, mandatory } entry to form_fields. resume-only positions use assessment_rules (resume_* rules) and ignore form_fields. Both arrays are replaced wholesale on update — send the complete array, not a delta.
When set to an existing position id, the request updates that pre-screening position instead of creating a new one. When absent/empty, a new pre-screening position is created and the create-only mandatory fields are required.
Ordered array of assessment rules. Only rules with type: "screening" (plus resume_match / resume_technical_experience) are enforced; other entries just declare which fields the form collects. Keep in sync with form_fields: a standard form field enabled here should have a matching { id, mandatory } entry in form_fields.
Array describing the candidate form: standard field references ({ id, mandatory }) and/or custom fields ({ id: "custom_…", title, field_type, … }). For form and resume_with_form types at least one entry is required.
Show child attributes
Example:
[ { "id": "form_education", "mandatory": true }, { "id": "form_languages", "mandatory": true }, { "id": "form_nationality", "mandatory": true }, { "id": "custom_1772004521633", "title": "Do you hold a valid work permit?", "type": "required", "field_type": "radio", "options": ["Yes", "No"] } ]
Position visibility. Defaults to merchant_invite on create. Options — merchant_public: Listed on the merchant's public interview list — anyone with the merchant link can find and start it. | merchant_invite: Invite-only — only candidates explicitly invited (by email/link) can access it; not listed anywhere. | merchant_unlisted: Reachable only via a direct link — not listed anywhere; share the link manually.
The pre-screening definition id created or updated.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"JobMojito Developer / Agent","description":"AI Interview and assessment conversational platform documentation","colors":{"primary":"#639C42","light":"#ACCC37","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/jobmojito-light.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=6c00cb5f3104ffb6325dacc0818bba69","dark":"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/jobmojito-dark.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=a05ab0ca109d7a225b08ccac00f9c486","href":"https://jobmojito.com"},"favicon":{"light":"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/favicon-light.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=f300813ab120824238a790b6905dceee","dark":"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/favicon-dark.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=2104ff9e7b9fd23fbe5954886c0aafbe"},"navbar":{"links":[{"href":"https://jobmojito.com/support","label":"Support"},{"href":"https://jobmojito.com","label":"Homepage"},{"href":"https://app.jobmojito.com","label":"App"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.mintlify.com"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/jobmojito"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"toc"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"jobmojito","hasAudioNarration":false,"actualSubdomain":"jobmojito","customDomains":["developer.jobmojito.com"],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-jobmojito-fee23398","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af1dfb6ee06d45cdd87d014","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"default","tag":"API Reference","count":82},{"language":"default","tag":"Admin","count":19},{"language":"default","tag":"Cookbooks","count":17},{"language":"default","tag":"Webhooks","count":14},{"language":"default","tag":"MCP","count":13},{"language":"default","tag":"Candidates","count":12},{"language":"default","tag":"Interviews","count":10},{"language":"default","tag":"Connect","count":8},{"language":"default","tag":"Reports","count":7},{"language":"default","tag":"Results","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":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":"custom-rbac-roles","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":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position","slug":"/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position","pageMetadata":{"title":"Create or update a pre-screening position","description":"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this.\n\nThe screening behaviour is driven by two related arrays:\n- `assessment_rules` — the rules enforced on each candidate. Only rules with `type: \"screening\"` (plus `resume_match` / `resume_technical_experience`) actually pass/reject; other entries just declare collected fields.\n- `form_fields` — the candidate-facing form (standard field references and custom fields).\n\nFor `form` and `resume_with_form` types, enable a standard field in BOTH arrays: add the rule to `assessment_rules` and a matching `{ id, mandatory }` entry to `form_fields`. `resume`-only positions use `assessment_rules` (resume_* rules) and ignore `form_fields`. Both arrays are replaced wholesale on update — send the complete array, not a delta.","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /pre-screening-create","href":"/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position","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 ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The screening behaviour is driven by two related arrays:\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"assessment_rules\"\n }), \" — the rules enforced on each candidate. Only rules with \", _jsx(_components.code, {\n children: \"type: \\\"screening\\\"\"\n }), \" (plus \", _jsx(_components.code, {\n children: \"resume_match\"\n }), \" / \", _jsx(_components.code, {\n children: \"resume_technical_experience\"\n }), \") actually pass/reject; other entries just declare collected fields.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"form_fields\"\n }), \" — the candidate-facing form (standard field references and custom fields).\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"For \", _jsx(_components.code, {\n children: \"form\"\n }), \" and \", _jsx(_components.code, {\n children: \"resume_with_form\"\n }), \" types, enable a standard field in BOTH arrays: add the rule to \", _jsx(_components.code, {\n children: \"assessment_rules\"\n }), \" and a matching \", _jsx(_components.code, {\n children: \"{ id, mandatory }\"\n }), \" entry to \", _jsx(_components.code, {\n children: \"form_fields\"\n }), \". \", _jsx(_components.code, {\n children: \"resume\"\n }), \"-only positions use \", _jsx(_components.code, {\n children: \"assessment_rules\"\n }), \" (resume_* rules) and ignore \", _jsx(_components.code, {\n children: \"form_fields\"\n }), \". Both arrays are replaced wholesale on update — send the complete array, not a delta.\"]\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":"Create or update a pre-screening position","description":"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this.\n\nThe screening behaviour is driven by two related arrays:\n- `assessment_rules` — the rules enforced on each candidate. Only rules with `type: \"screening\"` (plus `resume_match` / `resume_technical_experience`) actually pass/reject; other entries just declare collected fields.\n- `form_fields` — the candidate-facing form (standard field references and custom fields).\n\nFor `form` and `resume_with_form` types, enable a standard field in BOTH arrays: add the rule to `assessment_rules` and a matching `{ id, mandatory }` entry to `form_fields`. `resume`-only positions use `assessment_rules` (resume_* rules) and ignore `form_fields`. Both arrays are replaced wholesale on update — send the complete array, not a delta.","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /pre-screening-create","href":"/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Resume \u0026 Form verification"],"summary":"Create or update a pre-screening position","description":"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this.\n\nThe screening behaviour is driven by two related arrays:\n- `assessment_rules` — the rules enforced on each candidate. Only rules with `type: \"screening\"` (plus `resume_match` / `resume_technical_experience`) actually pass/reject; other entries just declare collected fields.\n- `form_fields` — the candidate-facing form (standard field references and custom fields).\n\nFor `form` and `resume_with_form` types, enable a standard field in BOTH arrays: add the rule to `assessment_rules` and a matching `{ id, mandatory }` entry to `form_fields`. `resume`-only positions use `assessment_rules` (resume_* rules) and ignore `form_fields`. Both arrays are replaced wholesale on update — send the complete array, not a delta.","security":["4f0c196d-1056-45cc-b066-9ca3e01cb857"],"requestBody":"972b7fef-8ea6-4101-b01b-7e1c2ade25ed","responses":{"200":"096dd89f-f506-4279-bc00-bc0be683e60d","401":"c4439359-9904-494c-a094-dc15eef01dc2","403":"74cfde5b-0733-41d0-9ba0-eb6d7897ff9c","404":"6fc56a5c-a7ef-4756-8ef2-48802f276079","422":"22d85c0f-ab47-4e2c-b3f2-3183f88f1f05","500":"2e06a28a-be87-4465-b110-08774bff15c4"},"method":"post","type":"path","servers":["454fcb62-7052-4847-a728-ecf5ade065a6"],"path":"/pre-screening-create","baseUrlOptions":["https://cool.jobmojito.com/functions/v1"],"title":"Create or update a pre-screening position","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"update_position_def_set_id":{"oneOf":[{"type":"string","description":"When set to an existing position id, the request updates that pre-screening position instead of creating a new one. When absent/empty, a new pre-screening position is created and the create-only mandatory fields are required.","example":"00000000-0000-0000-0000-000000000000","uniqueKey":"update_position_def_set_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"When set to an existing position id, the request updates that pre-screening position instead of creating a new one. When absent/empty, a new pre-screening position is created and the create-only mandatory fields are required.","example":"00000000-0000-0000-0000-000000000000","uniqueKey":"update_position_def_set_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"update_position_def_set_id","typeLabel":"string | null"},"position_name":{"oneOf":[{"type":"string","description":"Position name. Required when creating (no update_position_def_set_id).","example":"Customer Support Specialist","uniqueKey":"position_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"Position name. Required when creating (no update_position_def_set_id).","example":"Customer Support Specialist","uniqueKey":"position_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"position_name","typeLabel":"string | null"},"position_location":{"oneOf":[{"type":"string","description":"Interview/position location. Required when creating.","example":"Remote","uniqueKey":"position_location.oneOf.0","typeLabel":"string"},{"type":"null","description":"Interview/position location. Required when creating.","example":"Remote","uniqueKey":"position_location.oneOf.1","typeLabel":"null"}],"uniqueKey":"position_location","typeLabel":"string | null"},"position_country_code":{"oneOf":[{"type":"string","description":"ISO country code; stored upper-cased. Required when creating.","example":"US","uniqueKey":"position_country_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"ISO country code; stored upper-cased. Required when creating.","example":"US","uniqueKey":"position_country_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"position_country_code","typeLabel":"string | null"},"position_description":{"oneOf":[{"type":"string","description":"Short position description.","example":"Handle inbound customer requests.","uniqueKey":"position_description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Short position description.","example":"Handle inbound customer requests.","uniqueKey":"position_description.oneOf.1","typeLabel":"null"}],"uniqueKey":"position_description","typeLabel":"string | null"},"position_description_long":{"oneOf":[{"type":"string","description":"Long position description.","uniqueKey":"position_description_long.oneOf.0","typeLabel":"string"},{"type":"null","description":"Long position description.","uniqueKey":"position_description_long.oneOf.1","typeLabel":"null"}],"uniqueKey":"position_description_long","typeLabel":"string | null"},"mojito_language_code":{"oneOf":[{"type":"string","enum":["ar","bg","zh","hr","cs","da","nl","en","fil","fi","fr","de","el","hi","hu","id","it","ja","ko","ms","no","pl","pt","br","ro","ru","sk","es","sv","ta","th","tr","uk","vi"],"description":"Mojito language code (one of the listed codes). Required when creating.","example":"en","uniqueKey":"mojito_language_code.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["ar","bg","zh","hr","cs","da","nl","en","fil","fi","fr","de","el","hi","hu","id","it","ja","ko","ms","no","pl","pt","br","ro","ru","sk","es","sv","ta","th","tr","uk","vi"],"description":"Mojito language code (one of the listed codes). Required when creating.","example":"en","uniqueKey":"mojito_language_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"mojito_language_code","typeLabel":"enum\u003cstring> | null"},"merchant_id":{"oneOf":[{"type":"string","description":"Target merchant id. Only honored for admin or sub-merchant users; otherwise the caller's own merchant is used.","uniqueKey":"merchant_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Target merchant id. Only honored for admin or sub-merchant users; otherwise the caller's own merchant is used.","uniqueKey":"merchant_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"merchant_id","typeLabel":"string | null"},"type":{"oneOf":[{"type":"string","enum":["resume","form","resume_with_form"],"description":"Pre-screening type. Defaults to \"resume\" on create.","uniqueKey":"type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["resume","form","resume_with_form"],"description":"Pre-screening type. Defaults to \"resume\" on create.","uniqueKey":"type.oneOf.1","typeLabel":"null"}],"uniqueKey":"type","typeLabel":"enum\u003cstring> | null"},"status":{"oneOf":[{"type":"string","enum":["draft","active"],"description":"When \"active\", the pre-screening position is activated after create/update.","uniqueKey":"status.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["draft","active"],"description":"When \"active\", the pre-screening position is activated after create/update.","uniqueKey":"status.oneOf.1","typeLabel":"null"}],"uniqueKey":"status","typeLabel":"enum\u003cstring> | null"},"assessment_rules":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Rule identifier. Standard form rules: form_nationality, form_residency, form_languages, form_education (or form_education_by_country), form_visa, form_age, form_gender, form_cover_letter, form_national_id. Standard resume rules: resume_match, resume_technical_experience, resume_education (or resume_education_by_country). Custom fields use custom_\u003ctimestamp>.","example":"form_education","isRequired":true,"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].id","typeLabel":"string"},"type":{"type":"string","enum":["optional","required","screening"],"description":"How the field is treated. \"screening\" = the rule is enforced and can pass / mark-for-review / reject the candidate. \"required\" / \"optional\" only affect whether the candidate must fill the field — they are NOT enforced as screening. resume_match and resume_technical_experience ignore this key (always enforced).","example":"screening","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"action":{"type":"string","enum":["mark_for_review","reject"],"description":"Outcome applied when a screening rule is not satisfied. Defaults to \"mark_for_review\".","example":"reject","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].action","typeLabel":"enum\u003cstring>"},"country":{"type":"array","items":{"type":"string","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].country.items.[INDEX]","typeLabel":"string"},"description":"form_nationality / form_residency: allowlist of ISO country codes. Combined with country_eu as a logical OR.","example":["US","CA"],"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].country","typeLabel":"string[]"},"country_eu":{"type":"boolean","description":"form_nationality / form_residency: when true, any EU country is accepted (in addition to `country`).","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].country_eu","typeLabel":"boolean"},"languages":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Platform language code.","example":"en","isRequired":true,"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].languages.items.[INDEX].code","typeLabel":"string"},"level":{"type":"string","enum":["beginner","intermediate","advanced","fluent"],"description":"Minimum required proficiency.","example":"advanced","isRequired":true,"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].languages.items.[INDEX].level","typeLabel":"enum\u003cstring>"}},"required":["code","level"],"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].languages.items.[INDEX]","typeLabel":"object"},"description":"form_languages: each listed language must be known at (at least) the given level.","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].languages","typeLabel":"object[]"},"education":{"type":"string","description":"form_education / resume_education: minimum acceptable education level. Standard keys: [\"primary school\",\"high school no graduation\",\"high school\",\"vocational\",\"bachelors\",\"masters\",\"doctorate\"]. Country-specific rules (form_education_by_country / resume_education_by_country) use the keys from that country's list.","example":"bachelors","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].education","typeLabel":"string"},"visa":{"type":"array","items":{"type":"string","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].visa.items.[INDEX]","typeLabel":"string"},"description":"form_visa: allowlist of visa keys. Keys are country-specific (only defined for some countries, e.g. KW, TR).","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].visa","typeLabel":"string[]"},"age_min":{"type":"integer","description":"form_age: minimum acceptable age (inclusive).","example":18,"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].age_min","typeLabel":"integer"},"age_max":{"type":"integer","description":"form_age: maximum acceptable age (inclusive).","example":60,"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].age_max","typeLabel":"integer"},"gender":{"type":"array","items":{"type":"string","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].gender.items.[INDEX]","typeLabel":"string"},"description":"form_gender: allowlist of gender keys. Standard keys: male, female, other.","example":["female"],"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].gender","typeLabel":"string[]"},"technical_experience_years":{"type":"integer","description":"resume_technical_experience: minimum years of relevant experience the AI must detect in the resume.","example":3,"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].technical_experience_years","typeLabel":"integer"},"resume_score_reject":{"type":"integer","minimum":0,"maximum":10,"description":"resume_match: reject the candidate when the AI match score (0-10) is below this value. 0 disables the reject threshold.","example":2,"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].resume_score_reject","typeLabel":"integer"},"resume_score_accept":{"type":"integer","minimum":0,"maximum":10,"description":"resume_match: below this value (but at/above resume_score_reject) the candidate is marked for review; at/above it the candidate passes.","example":7,"uniqueKey":"assessment_rules.oneOf.0.items.[INDEX].resume_score_accept","typeLabel":"integer"}},"required":["id"],"description":"A single pre-screening assessment rule. The keys used depend on `id` (see each key's description).","uniqueKey":"assessment_rules.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Ordered array of assessment rules. Only rules with `type: \"screening\"` (plus resume_match / resume_technical_experience) are enforced; other entries just declare which fields the form collects. Keep in sync with `form_fields`: a standard form field enabled here should have a matching `{ id, mandatory }` entry in form_fields.","example":[{"id":"form_education","type":"screening","action":"reject","education":"bachelors"},{"id":"form_languages","type":"screening","action":"mark_for_review","languages":[{"code":"en","level":"advanced"}]},{"id":"form_nationality","type":"required"},{"id":"resume_match","resume_score_reject":2,"resume_score_accept":7},{"id":"resume_technical_experience","action":"mark_for_review","technical_experience_years":3}],"uniqueKey":"assessment_rules.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"id":{"type":"string","description":"Rule identifier. Standard form rules: form_nationality, form_residency, form_languages, form_education (or form_education_by_country), form_visa, form_age, form_gender, form_cover_letter, form_national_id. Standard resume rules: resume_match, resume_technical_experience, resume_education (or resume_education_by_country). Custom fields use custom_\u003ctimestamp>.","example":"form_education"},"type":{"type":"string","enum":["optional","required","screening"],"description":"How the field is treated. \"screening\" = the rule is enforced and can pass / mark-for-review / reject the candidate. \"required\" / \"optional\" only affect whether the candidate must fill the field — they are NOT enforced as screening. resume_match and resume_technical_experience ignore this key (always enforced).","example":"screening"},"action":{"type":"string","enum":["mark_for_review","reject"],"description":"Outcome applied when a screening rule is not satisfied. Defaults to \"mark_for_review\".","example":"reject"},"country":{"type":"array","items":{"type":"string"},"description":"form_nationality / form_residency: allowlist of ISO country codes. Combined with country_eu as a logical OR.","example":["US","CA"]},"country_eu":{"type":"boolean","description":"form_nationality / form_residency: when true, any EU country is accepted (in addition to `country`)."},"languages":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Platform language code.","example":"en"},"level":{"type":"string","enum":["beginner","intermediate","advanced","fluent"],"description":"Minimum required proficiency.","example":"advanced"}},"required":["code","level"]},"description":"form_languages: each listed language must be known at (at least) the given level."},"education":{"type":"string","description":"form_education / resume_education: minimum acceptable education level. Standard keys: [\"primary school\",\"high school no graduation\",\"high school\",\"vocational\",\"bachelors\",\"masters\",\"doctorate\"]. Country-specific rules (form_education_by_country / resume_education_by_country) use the keys from that country's list.","example":"bachelors"},"visa":{"type":"array","items":{"type":"string"},"description":"form_visa: allowlist of visa keys. Keys are country-specific (only defined for some countries, e.g. KW, TR)."},"age_min":{"type":"integer","description":"form_age: minimum acceptable age (inclusive).","example":18},"age_max":{"type":"integer","description":"form_age: maximum acceptable age (inclusive).","example":60},"gender":{"type":"array","items":{"type":"string"},"description":"form_gender: allowlist of gender keys. Standard keys: male, female, other.","example":["female"]},"technical_experience_years":{"type":"integer","description":"resume_technical_experience: minimum years of relevant experience the AI must detect in the resume.","example":3},"resume_score_reject":{"type":"integer","minimum":0,"maximum":10,"description":"resume_match: reject the candidate when the AI match score (0-10) is below this value. 0 disables the reject threshold.","example":2},"resume_score_accept":{"type":"integer","minimum":0,"maximum":10,"description":"resume_match: below this value (but at/above resume_score_reject) the candidate is marked for review; at/above it the candidate passes.","example":7}},"required":["id"],"description":"A single pre-screening assessment rule. The keys used depend on `id` (see each key's description)."},"description":"Ordered array of assessment rules. Only rules with `type: \"screening\"` (plus resume_match / resume_technical_experience) are enforced; other entries just declare which fields the form collects. Keep in sync with `form_fields`: a standard form field enabled here should have a matching `{ id, mandatory }` entry in form_fields.","example":[{"id":"form_education","type":"screening","action":"reject","education":"bachelors"},{"id":"form_languages","type":"screening","action":"mark_for_review","languages":[{"code":"en","level":"advanced"}]},{"id":"form_nationality","type":"required"},{"id":"resume_match","resume_score_reject":2,"resume_score_accept":7},{"id":"resume_technical_experience","action":"mark_for_review","technical_experience_years":3}],"uniqueKey":"assessment_rules.oneOf.1","typeLabel":"null"}],"uniqueKey":"assessment_rules","typeLabel":"object[] | null"},"form_fields":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Field id. Standard fields reuse the rule id (e.g. form_education). Custom fields use custom_\u003ctimestamp>.","example":"custom_1772004521633","isRequired":true,"uniqueKey":"form_fields.oneOf.0.items.[INDEX].id","typeLabel":"string"},"mandatory":{"type":"boolean","description":"Standard fields: whether the candidate must answer. Derived from the matching rule type (required/screening → true, optional → false).","uniqueKey":"form_fields.oneOf.0.items.[INDEX].mandatory","typeLabel":"boolean"},"title":{"type":"string","description":"Custom fields: the question/label shown to the candidate.","example":"Do you hold a valid work permit?","uniqueKey":"form_fields.oneOf.0.items.[INDEX].title","typeLabel":"string"},"description":{"type":"string","description":"Custom fields: optional helper text shown under the title.","uniqueKey":"form_fields.oneOf.0.items.[INDEX].description","typeLabel":"string"},"type":{"type":"string","enum":["optional","required","screening"],"description":"Custom fields: \"required\" or \"optional\" (custom fields are never \"screening\").","example":"required","uniqueKey":"form_fields.oneOf.0.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"field_type":{"type":"string","enum":["text","file","radio"],"description":"Custom fields: input widget — \"text\" (free text), \"file\" (upload) or \"radio\" (single choice from `options`).","example":"radio","uniqueKey":"form_fields.oneOf.0.items.[INDEX].field_type","typeLabel":"enum\u003cstring>"},"options":{"type":"array","items":{"type":"string","uniqueKey":"form_fields.oneOf.0.items.[INDEX].options.items.[INDEX]","typeLabel":"string"},"description":"Custom fields: the choices when field_type is \"radio\" (at least 2 required).","example":["Yes","No"],"uniqueKey":"form_fields.oneOf.0.items.[INDEX].options","typeLabel":"string[]"}},"required":["id"],"description":"A single candidate-form field: either a standard field reference or a custom field.","uniqueKey":"form_fields.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"Array describing the candidate form: standard field references ({ id, mandatory }) and/or custom fields ({ id: \"custom_…\", title, field_type, … }). For `form` and `resume_with_form` types at least one entry is required.","example":[{"id":"form_education","mandatory":true},{"id":"form_languages","mandatory":true},{"id":"form_nationality","mandatory":true},{"id":"custom_1772004521633","title":"Do you hold a valid work permit?","type":"required","field_type":"radio","options":["Yes","No"]}],"uniqueKey":"form_fields.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"id":{"type":"string","description":"Field id. Standard fields reuse the rule id (e.g. form_education). Custom fields use custom_\u003ctimestamp>.","example":"custom_1772004521633"},"mandatory":{"type":"boolean","description":"Standard fields: whether the candidate must answer. Derived from the matching rule type (required/screening → true, optional → false)."},"title":{"type":"string","description":"Custom fields: the question/label shown to the candidate.","example":"Do you hold a valid work permit?"},"description":{"type":"string","description":"Custom fields: optional helper text shown under the title."},"type":{"type":"string","enum":["optional","required","screening"],"description":"Custom fields: \"required\" or \"optional\" (custom fields are never \"screening\").","example":"required"},"field_type":{"type":"string","enum":["text","file","radio"],"description":"Custom fields: input widget — \"text\" (free text), \"file\" (upload) or \"radio\" (single choice from `options`).","example":"radio"},"options":{"type":"array","items":{"type":"string"},"description":"Custom fields: the choices when field_type is \"radio\" (at least 2 required).","example":["Yes","No"]}},"required":["id"],"description":"A single candidate-form field: either a standard field reference or a custom field."},"description":"Array describing the candidate form: standard field references ({ id, mandatory }) and/or custom fields ({ id: \"custom_…\", title, field_type, … }). For `form` and `resume_with_form` types at least one entry is required.","example":[{"id":"form_education","mandatory":true},{"id":"form_languages","mandatory":true},{"id":"form_nationality","mandatory":true},{"id":"custom_1772004521633","title":"Do you hold a valid work permit?","type":"required","field_type":"radio","options":["Yes","No"]}],"uniqueKey":"form_fields.oneOf.1","typeLabel":"null"}],"uniqueKey":"form_fields","typeLabel":"object[] | null"},"candidate_expectations":{"oneOf":[{"type":"string","description":"Candidate expectations text.","uniqueKey":"candidate_expectations.oneOf.0","typeLabel":"string"},{"type":"null","description":"Candidate expectations text.","uniqueKey":"candidate_expectations.oneOf.1","typeLabel":"null"}],"uniqueKey":"candidate_expectations","typeLabel":"string | null"},"visibility":{"oneOf":[{"type":"string","enum":["merchant_public","merchant_invite","merchant_unlisted"],"description":"Position visibility. Defaults to `merchant_invite` on create. Options — `merchant_public`: Listed on the merchant's public interview list — anyone with the merchant link can find and start it. | `merchant_invite`: Invite-only — only candidates explicitly invited (by email/link) can access it; not listed anywhere. | `merchant_unlisted`: Reachable only via a direct link — not listed anywhere; share the link manually.","example":"merchant_public","uniqueKey":"visibility.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["merchant_public","merchant_invite","merchant_unlisted"],"description":"Position visibility. Defaults to `merchant_invite` on create. Options — `merchant_public`: Listed on the merchant's public interview list — anyone with the merchant link can find and start it. | `merchant_invite`: Invite-only — only candidates explicitly invited (by email/link) can access it; not listed anywhere. | `merchant_unlisted`: Reachable only via a direct link — not listed anywhere; share the link manually.","example":"merchant_public","uniqueKey":"visibility.oneOf.1","typeLabel":"null"}],"uniqueKey":"visibility","typeLabel":"enum\u003cstring> | null"},"kombo_parameters":{"oneOf":[{"description":"Kombo integration parameters (any JSON).","example":{"kombo_job_id":"7QzbCBaxX6fa4BMXBRuD7Lwm","kombo_stage_id":"CVjhZwxbtcer5P15gakmEhsM","kombo_sync_all_results":true,"kombo_selected_stage_id":null,"kombo_sync_all_results_stage_id":"9c5VZXrcMRmyr5vr1nvZWXSX"},"uniqueKey":"kombo_parameters.oneOf.0","typeLabel":"any"},{"description":"Kombo integration parameters (any JSON).","example":{"kombo_job_id":"7QzbCBaxX6fa4BMXBRuD7Lwm","kombo_stage_id":"CVjhZwxbtcer5P15gakmEhsM","kombo_sync_all_results":true,"kombo_selected_stage_id":null,"kombo_sync_all_results_stage_id":"9c5VZXrcMRmyr5vr1nvZWXSX"},"type":"null","uniqueKey":"kombo_parameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"kombo_parameters","typeLabel":"any | null"},"interview_available_till":{"oneOf":[{"type":"string","description":"Timestamp until which the interview is available.","uniqueKey":"interview_available_till.oneOf.0","typeLabel":"string"},{"type":"null","description":"Timestamp until which the interview is available.","uniqueKey":"interview_available_till.oneOf.1","typeLabel":"null"}],"uniqueKey":"interview_available_till","typeLabel":"string | null"},"creation_parameters":{"oneOf":[{"description":"Creation parameters, any JSON (create only).","uniqueKey":"creation_parameters.oneOf.0","typeLabel":"any"},{"description":"Creation parameters, any JSON (create only).","type":"null","uniqueKey":"creation_parameters.oneOf.1","typeLabel":"null"}],"uniqueKey":"creation_parameters","typeLabel":"any | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"update_position_def_set_id":"00000000-0000-0000-0000-000000000000","position_name":"Customer Support Specialist","position_location":"Remote","position_country_code":"US","position_description":"Handle inbound customer requests.","position_description_long":"\u003cstring>","mojito_language_code":"en","merchant_id":"\u003cstring>","assessment_rules":[{"id":"form_education","type":"screening","action":"reject","education":"bachelors"},{"id":"form_languages","type":"screening","action":"mark_for_review","languages":[{"code":"en","level":"advanced"}]},{"id":"form_nationality","type":"required"},{"id":"resume_match","resume_score_reject":2,"resume_score_accept":7},{"id":"resume_technical_experience","action":"mark_for_review","technical_experience_years":3}],"form_fields":[{"id":"form_education","mandatory":true},{"id":"form_languages","mandatory":true},{"id":"form_nationality","mandatory":true},{"id":"custom_1772004521633","title":"Do you hold a valid work permit?","type":"required","field_type":"radio","options":["Yes","No"]}],"candidate_expectations":"\u003cstring>","visibility":"merchant_public","kombo_parameters":{"kombo_job_id":"7QzbCBaxX6fa4BMXBRuD7Lwm","kombo_stage_id":"CVjhZwxbtcer5P15gakmEhsM","kombo_sync_all_results":true,"kombo_selected_stage_id":null,"kombo_sync_all_results_stage_id":"9c5VZXrcMRmyr5vr1nvZWXSX"},"interview_available_till":"\u003cstring>","creation_parameters":"\u003cunknown>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"096dd89f-f506-4279-bc00-bc0be683e60d":{"description":"The pre-screening position was created or updated.","content":{"application/json":{"schema":{"type":"object","properties":{"created":{"type":"boolean","description":"True when a new pre-screening position was created.","uniqueKey":"created","typeLabel":"boolean"},"updated":{"type":"boolean","description":"True when an existing pre-screening position was updated.","uniqueKey":"updated","typeLabel":"boolean"},"position_def_set_id":{"oneOf":[{"type":"string","description":"The position_def_set id created or updated.","uniqueKey":"position_def_set_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The position_def_set id created or updated.","uniqueKey":"position_def_set_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"position_def_set_id","typeLabel":"string | null"},"interview_pre_screening_id":{"oneOf":[{"type":"string","description":"The pre-screening definition id created or updated.","uniqueKey":"interview_pre_screening_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"The pre-screening definition id created or updated.","uniqueKey":"interview_pre_screening_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"interview_pre_screening_id","typeLabel":"string | null"}},"description":"On create returns `{ created: true, position_def_set_id, interview_pre_screening_id }`; on update returns `{ updated: true, position_def_set_id, interview_pre_screening_id }`.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"created":true,"updated":true,"position_def_set_id":"\u003cstring>","interview_pre_screening_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"c4439359-9904-494c-a094-dc15eef01dc2":{"description":"Missing, expired or invalid access token.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"},"74cfde5b-0733-41d0-9ba0-eb6d7897ff9c":{"description":"Your token is not allowed to use this endpoint (it is not a merchant, merchant owner or admin token).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"},"6fc56a5c-a7ef-4756-8ef2-48802f276079":{"description":"Pre-screening step not found for the given position (update path).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"},"22d85c0f-ab47-4e2c-b3f2-3183f88f1f05":{"description":"Validation error or unresolved merchant_id.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"},"2e06a28a-be87-4465-b110-08774bff15c4":{"description":"Server error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Field is required.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"name":{"type":"string","example":"interview_result_id","uniqueKey":"name","typeLabel":"string"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Field is required.","name":"interview_result_id"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"4f0c196d-1056-45cc-b066-9ca3e01cb857":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Supabase JWT — `Authorization: Bearer \u003ctoken>`.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"454fcb62-7052-4847-a728-ecf5ade065a6":{"url":"https://cool.jobmojito.com/functions/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Supabase JWT — `Authorization: Bearer \u003ctoken>`.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Supabase JWT — `Authorization: Bearer \u003ctoken>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"https://cool.jobmojito.com/functions/v1/openapi"},"subdomain":"jobmojito","siteName":"JobMojito Developer / Agent","title":"Create or update a pre-screening position - JobMojito Developer / Agent","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T15:00:44.718Z","originalFileLocation":"api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position.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=\"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this. The screening behaviour is driven by two related arrays: - assessment_rules — the rules enforced on each candidate. Only rules with type: \u0026quot;screening\u0026quot; (plus resume_match / resume_technical_experience) actually pass/reject; other entries just declare collected fields. - form_fields — the candidate-facing form (standard field references and custom fields). For form and resume_with_form types, enable a standard field in BOTH arrays: add the rule to assessment_rules and a matching { id, mandatory } entry to form_fields. resume-only positions use assessment_rules (resume_* rules) and ignore form_fields. Both arrays are replaced wholesale on update — send the complete array, not a delta.\">\u003cmeta data-mint-head name=\"application-name\" content=\"JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_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/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jobmojito/GZwP9Qkfq6UpkrB8/_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/jobmojito/GZwP9Qkfq6UpkrB8/_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/jobmojito/GZwP9Qkfq6UpkrB8/_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/jobmojito/GZwP9Qkfq6UpkrB8/_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/jobmojito/GZwP9Qkfq6UpkrB8/_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/jobmojito/GZwP9Qkfq6UpkrB8/_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/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create or update a pre-screening position - JobMojito Developer / Agent\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this. The screening behaviour is driven by two related arrays: - assessment_rules — the rules enforced on each candidate. Only rules with type: \u0026quot;screening\u0026quot; (plus resume_match / resume_technical_experience) actually pass/reject; other entries just declare collected fields. - form_fields — the candidate-facing form (standard field references and custom fields). For form and resume_with_form types, enable a standard field in BOTH arrays: add the rule to assessment_rules and a matching { id, mandatory } entry to form_fields. resume-only positions use assessment_rules (resume_* rules) and ignore form_fields. Both arrays are replaced wholesale on update — send the complete array, not a delta.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"JobMojito Developer / Agent\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.jobmojito.com/api-reference/resume-\u0026amp;-form-verification/create-or-update-a-pre-screening-position\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://jobmojito.mintlify.site/_mintlify/api/og/v2?division=Resume+%26+Form+verification\u0026amp;title=Create+or+update+a+pre-screening+position\u0026amp;description=Creates+a+new+pre-screening+position+%28and+optionally+activates+it%29+or%2C+when+update_position_def_set_id+is+provided%2C+updates+an+existing+pre-screening+position.+\u0026amp;theme=87c5e3cf7199050cbbf4cb49\u0026amp;signature=e1c6abfc05ff7fe9b7b1b24d56e56bc5dc08d7b8ba6785b0673cbe075686909f\">\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=\"Create or update a pre-screening position - JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this. The screening behaviour is driven by two related arrays: - assessment_rules — the rules enforced on each candidate. Only rules with type: \u0026quot;screening\u0026quot; (plus resume_match / resume_technical_experience) actually pass/reject; other entries just declare collected fields. - form_fields — the candidate-facing form (standard field references and custom fields). For form and resume_with_form types, enable a standard field in BOTH arrays: add the rule to assessment_rules and a matching { id, mandatory } entry to form_fields. resume-only positions use assessment_rules (resume_* rules) and ignore form_fields. Both arrays are replaced wholesale on update — send the complete array, not a delta.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jobmojito.mintlify.site/_mintlify/api/og/v2?division=Resume+%26+Form+verification\u0026amp;title=Create+or+update+a+pre-screening+position\u0026amp;description=Creates+a+new+pre-screening+position+%28and+optionally+activates+it%29+or%2C+when+update_position_def_set_id+is+provided%2C+updates+an+existing+pre-screening+position.+\u0026amp;theme=87c5e3cf7199050cbbf4cb49\u0026amp;signature=e1c6abfc05ff7fe9b7b1b24d56e56bc5dc08d7b8ba6785b0673cbe075686909f\">\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/jobmojito/GZwP9Qkfq6UpkrB8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"JobMojito Developer / Agent\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#639C42\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.jobmojito.com/api-reference/resume-\u0026amp;-form-verification/create-or-update-a-pre-screening-position\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/resume-%26-form-verification/create-or-update-a-pre-screening-position.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.jobmojito.com/#organization\",\"name\":\"JobMojito Developer / Agent\",\"url\":\"https://developer.jobmojito.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/jobmojito/DU7xAw61G9kqV1zG/images/jobmojito-light.svg?fit=max\u0026auto=format\u0026n=DU7xAw61G9kqV1zG\u0026q=85\u0026s=6c00cb5f3104ffb6325dacc0818bba69\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.jobmojito.com#website\",\"name\":\"JobMojito Developer / Agent\",\"url\":\"https://developer.jobmojito.com\",\"publisher\":{\"@id\":\"https://developer.jobmojito.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.jobmojito.com/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position#webpage\",\"url\":\"https://developer.jobmojito.com/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position\",\"name\":\"Create or update a pre-screening position\",\"description\":\"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this. The screening behaviour is driven by two related arrays: - assessment_rules — the rules enforced on each candidate. Only rules with type: \\\"screening\\\" (plus resume_match / resume_technical_experience) actually pass/reject; other entries just declare collected fields. - form_fields — the candidate-facing form (standard field references and custom fields). For form and resume_with_form types, enable a standard field in BOTH arrays: add the rule to assessment_rules and a matching { id, mandatory } entry to form_fields. resume-only positions use assessment_rules (resume_* rules) and ignore form_fields. Both arrays are replaced wholesale on update — send the complete array, not a delta.\",\"dateModified\":\"2026-11-09T15:00:44.718Z\",\"isPartOf\":{\"@id\":\"https://developer.jobmojito.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.jobmojito.com/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.jobmojito.com/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"JobMojito Developer / Agent\",\"item\":\"https://developer.jobmojito.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create or update a pre-screening position\",\"item\":\"https://developer.jobmojito.com/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.jobmojito.com/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position#apireference\",\"headline\":\"Create or update a pre-screening position\",\"name\":\"Create or update a pre-screening position\",\"description\":\"Creates a new pre-screening position (and optionally activates it) or, when update_position_def_set_id is provided, updates an existing pre-screening position. Only merchant_owner, merchant, or admin users may call this. The screening behaviour is driven by two related arrays: - assessment_rules — the rules enforced on each candidate. Only rules with type: \\\"screening\\\" (plus resume_match / resume_technical_experience) actually pass/reject; other entries just declare collected fields. - form_fields — the candidate-facing form (standard field references and custom fields). For form and resume_with_form types, enable a standard field in BOTH arrays: add the rule to assessment_rules and a matching { id, mandatory } entry to form_fields. resume-only positions use assessment_rules (resume_* rules) and ignore form_fields. Both arrays are replaced wholesale on update — send the complete array, not a delta.\",\"url\":\"https://developer.jobmojito.com/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position\",\"mainEntityOfPage\":{\"@id\":\"https://developer.jobmojito.com/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position#webpage\"},\"dateModified\":\"2026-11-09T15:00:44.718Z\",\"publisher\":{\"@id\":\"https://developer.jobmojito.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.jobmojito.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"JobMojito Developer / Agent\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"JobMojito Developer / Agent\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/resume-%26-form-verification/create-or-update-a-pre-screening-position.md","siteName":"JobMojito Developer / Agent","nav":{"global":null,"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":"/welcome"}]},{"tab":"API Reference","groups":[{"group":"Interviews","pages":[{"title":"Create a new interview","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-create","href":"/api-reference/interviews/create-a-new-interview"},{"title":"Create an interview from an array of questions","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-create-from-array","href":"/api-reference/interviews/create-an-interview-from-an-array-of-questions"},{"title":"Create an interview for a candidate and return an access token URL","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-create-for-candidate-with-token","href":"/api-reference/interviews/create-an-interview-for-a-candidate-and-return-an-access-token-url"},{"title":"Create a role-play — coaching persona or interview-portal role-play (choose with `portal`)","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /persona-create","href":"/api-reference/interviews/create-a-role-play-—-coaching-persona-or-interview-portal-role-play-choose-with-`portal`"},{"title":"Get interview definition","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /job-interview-get","href":"/api-reference/interviews/get-interview-definition"},{"title":"Update an interview or position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-update","href":"/api-reference/interviews/update-an-interview-or-position"},{"title":"Set interview state","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-set-state","href":"/api-reference/interviews/set-interview-state"},{"title":"Generate a signed interview URL","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-token","href":"/api-reference/interviews/generate-a-signed-interview-url"},{"title":"Register users for an interview","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-register-users","href":"/api-reference/interviews/register-users-for-an-interview"},{"title":"List interview definitions","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-interview-list","href":"/api-reference/interviews/list-interview-definitions"}]},{"group":"Positions","pages":[{"title":"Set the steps of a draft position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-position-process-save","href":"/api-reference/positions/set-the-steps-of-a-draft-position"},{"title":"Change the settings of a position step","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-position-step-update","href":"/api-reference/positions/change-the-settings-of-a-position-step"},{"title":"Create, change or delete a meeting slot","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-meeting-slot-manage","href":"/api-reference/positions/create-change-or-delete-a-meeting-slot"},{"title":"Copy a position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-position-duplicate","href":"/api-reference/positions/copy-a-position"},{"title":"Copy an interview","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-interview-duplicate","href":"/api-reference/positions/copy-an-interview"}]},{"group":"Coaching catalogue","pages":[{"title":"Create a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /catalogue-tag-create","href":"/api-reference/coaching-catalogue/create-a-coaching-catalogue-directory"},{"title":"Update a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /catalogue-tag-update","href":"/api-reference/coaching-catalogue/update-a-coaching-catalogue-directory"},{"title":"Get a coaching catalogue directory","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /catalogue-tag-get","href":"/api-reference/coaching-catalogue/get-a-coaching-catalogue-directory"},{"title":"List coaching catalogue directories","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /catalogue-tag-list","href":"/api-reference/coaching-catalogue/list-coaching-catalogue-directories"}]},{"group":"Results","pages":[{"title":"Get interview result details with transcript","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /job-interview-details","href":"/api-reference/results/get-interview-result-details-with-transcript"},{"title":"Generate an interview report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pdf","href":"/api-reference/results/generate-an-interview-report"},{"title":"Request another interview attempt","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-result-request-another-attempt","href":"/api-reference/results/request-another-interview-attempt"},{"title":"Record an external assessment result","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /assessment-result-set","href":"/api-reference/results/record-an-external-assessment-result"},{"title":"List interview results","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-result-list","href":"/api-reference/results/list-interview-results"},{"title":"Get daily event analytics","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-analytics","href":"/api-reference/results/get-daily-event-analytics"},{"title":"Get merchant credit usage","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-analytics-credits-used","href":"/api-reference/results/get-merchant-credit-usage"}]},{"group":"Reports","pages":[{"title":"List report datasets, fields and measures","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-catalog","href":"/api-reference/reports/list-report-datasets-fields-and-measures"},{"title":"List custom reports","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-list","href":"/api-reference/reports/list-custom-reports"},{"title":"Get a custom report definition","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-get","href":"/api-reference/reports/get-a-custom-report-definition"},{"title":"Run a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /report-run","href":"/api-reference/reports/run-a-custom-report"},{"title":"Check and run an unsaved report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-preview","href":"/api-reference/reports/check-and-run-an-unsaved-report"},{"title":"Create a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-create","href":"/api-reference/reports/create-a-custom-report"},{"title":"Update a custom report","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /report-update","href":"/api-reference/reports/update-a-custom-report"}]},{"group":"Candidates","pages":[{"title":"List candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-list","href":"/api-reference/candidates/list-candidates"},{"title":"Get a candidate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-get","href":"/api-reference/candidates/get-a-candidate"},{"title":"Add a note to a candidate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-note-add","href":"/api-reference/candidates/add-a-note-to-a-candidate"},{"title":"Tag candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-tags-set","href":"/api-reference/candidates/tag-candidates"},{"title":"Create, change or delete a candidate tag","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-tag-manage","href":"/api-reference/candidates/create-change-or-delete-a-candidate-tag"},{"title":"List candidate filter options","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-filter-options","href":"/api-reference/candidates/list-candidate-filter-options"},{"title":"Preview merging two candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-candidate-merge-preview","href":"/api-reference/candidates/preview-merging-two-candidates"},{"title":"Merge two candidates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-merge","href":"/api-reference/candidates/merge-two-candidates"},{"title":"Dismiss a possible duplicate","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-candidate-duplicate-dismiss","href":"/api-reference/candidates/dismiss-a-possible-duplicate"},{"title":"List candidate segments","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-segment-list","href":"/api-reference/candidates/list-candidate-segments"},{"title":"Create, change or delete a candidate segment","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-segment-manage","href":"/api-reference/candidates/create-change-or-delete-a-candidate-segment"},{"title":"Download a candidate document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-document-download","href":"/api-reference/candidates/download-a-candidate-document"}]},{"group":"Tasks","pages":[{"title":"List tasks","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-task-list","href":"/api-reference/tasks/list-tasks"},{"title":"Create or change a task","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-task-save","href":"/api-reference/tasks/create-or-change-a-task"}]},{"group":"Document requests","pages":[{"title":"List document requests","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-document-request-list","href":"/api-reference/document-requests/list-document-requests"},{"title":"Ask a candidate for documents","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-document-request-create","href":"/api-reference/document-requests/ask-a-candidate-for-documents"},{"title":"Cancel a document request or mark it reviewed","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-document-request-update","href":"/api-reference/document-requests/cancel-a-document-request-or-mark-it-reviewed"}]},{"group":"Reasons","pages":[{"title":"List the company's reasons","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-reason-list","href":"/api-reference/reasons/list-the-companys-reasons"},{"title":"Get one of the company's reasons","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-reason-get","href":"/api-reference/reasons/get-one-of-the-companys-reasons"},{"title":"Create, change or archive a reason","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-reason-save","href":"/api-reference/reasons/create-change-or-archive-a-reason"}]},{"group":"Knowledge base","pages":[{"title":"Upload a knowledge base document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-document-upload","href":"/api-reference/knowledge-base/upload-a-knowledge-base-document"},{"title":"List knowledge base documents and their interview limits","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /knowledge-base-document-list","href":"/api-reference/knowledge-base/list-knowledge-base-documents-and-their-interview-limits"},{"title":"Change which interviews can use a document","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-document-set-interviews","href":"/api-reference/knowledge-base/change-which-interviews-can-use-a-document"},{"title":"List knowledge base stores","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /knowledge-base-store-list","href":"/api-reference/knowledge-base/list-knowledge-base-stores"},{"title":"Create or change a knowledge base store","description":"Creates a knowledge base store, or renames one or changes whether the AI uses only its documents (strict). Documents are added with knowledge-base-document-upload. Changing strict changes how every interview on the store answers. Owners, recruiters and admins; nothing is sent to candidates.","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /knowledge-base-store-save","href":"/api-reference/knowledge-base/create-or-change-a-knowledge-base-store"}]},{"group":"Resume \u0026 Form verification","pages":[{"title":"Create or update a pre-screening position","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /pre-screening-create","href":"/api-reference/resume-\u0026-form-verification/create-or-update-a-pre-screening-position"},{"title":"Run pre-screening on a plaintext resume","description":"Stores a plaintext candidate resume, runs AI pre-screening against the position definition, records the result and returns the AI recommendation and analysis. If the candidate is not in the pre-screening candidate_action state, an early `{ decision_status, message }` object is returned with HTTP 200.","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pre-screening-api-resume-text","href":"/api-reference/resume-\u0026-form-verification/run-pre-screening-on-a-plaintext-resume"},{"title":"Pre-screen a candidate from a binary resume upload","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pre-screening-api-resume-binary","href":"/api-reference/resume-\u0026-form-verification/pre-screen-a-candidate-from-a-binary-resume-upload"}]},{"group":"Admin","pages":[{"title":"Invite admin / merchant-team or coaching users","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /invite-users","href":"/api-reference/admin/invite-admin-merchant-team-or-coaching-users"},{"title":"List sub-merchants","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-sub-merchant-list","href":"/api-reference/admin/list-sub-merchants"},{"title":"List the company's users","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-user-list","href":"/api-reference/admin/list-the-companys-users"},{"title":"List avatar templates","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-avatar-list","href":"/api-reference/admin/list-avatar-templates"},{"title":"Get merchant status","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /merchant-status","href":"/api-reference/admin/get-merchant-status"},{"title":"List platform languages","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /platform-languages-list","href":"/api-reference/admin/list-platform-languages"},{"title":"Get the portal configuration (branding, portals, brands, pages)","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /portal-configuration-get","href":"/api-reference/admin/get-the-portal-configuration-branding-portals-brands-pages"},{"title":"Update the portal configuration (branding, portals, brands, pages)","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-configuration-update","href":"/api-reference/admin/update-the-portal-configuration-branding-portals-brands-pages"},{"title":"Publish a brand stylesheet","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-css-publish","href":"/api-reference/admin/publish-a-brand-stylesheet"},{"title":"Get the component style guide","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /portal-component-styles","href":"/api-reference/admin/get-the-component-style-guide"},{"title":"Save a component style","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-component-styles","href":"/api-reference/admin/save-a-component-style"},{"title":"Generate component style alternatives","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /portal-component-styles-generate","href":"/api-reference/admin/generate-component-style-alternatives"},{"title":"List the media library","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /media-list","href":"/api-reference/admin/list-the-media-library"},{"title":"Start uploading a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-upload-start","href":"/api-reference/admin/start-uploading-a-media-file"},{"title":"Finish uploading a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-upload-finish","href":"/api-reference/admin/finish-uploading-a-media-file"},{"title":"Describe a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-update","href":"/api-reference/admin/describe-a-media-file"},{"title":"Delete a media file","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-delete","href":"/api-reference/admin/delete-a-media-file"},{"title":"List the media library folders","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi get /media-folders","href":"/api-reference/admin/list-the-media-library-folders"},{"title":"Create, rename or delete a media library folder","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /media-folders","href":"/api-reference/admin/create-rename-or-delete-a-media-library-folder"}]},{"group":"Feedback","pages":[{"title":"Submit a feature request","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-feature-request","href":"/api-reference/feedback/submit-a-feature-request"},{"title":"Report a technical issue","deprecated":null,"version":null,"openapi":"https://cool.jobmojito.com/functions/v1/openapi post /merchant-technical-issue","href":"/api-reference/feedback/report-a-technical-issue"}]}]},{"tab":"Webhooks","pages":[{"title":"Webhooks","href":"/api-reference/webhooks/interview-result-submitted"}]},{"tab":"Cookbooks","pages":[{"title":"Cookbooks","href":"/cookbooks"}]},{"tab":"Skills","pages":[{"title":"Skills","href":"/skills/overview"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]}]},"basePath":"","title":"Create or update a pre-screening position - JobMojito Developer / Agent","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CDiBsYGW.js","utils-KF9rPlmF.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C26urKTX.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BdjmJAC1.js","snippetPresets-3IpDBjt3.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-D4x_2vvo.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BIWdc5Pa.js","shallow-LQqfiMNd.js","getApiPlaygroundDisplay-DryzlOZG.js","CodeSnippet-tcJujU4r.js","CodeSnippets-BHp0nVLL.js","Page-1CZdsdAn.js","getPastedJson-DU-1ayUv.js","icon-CZK2hPr4.js","MethodPill-DOaqmTFC.js","DuplicateIcon-B5-nUxxl.js","createIcon-CDP_U77G.js","DynamicMarkdown-GHvayGOn.js","SectionHeading-BYvpkmUD.js","axios-vUo_bRtp.js","Markdown-uxhlayGT.js","clsx-B35qUV0p.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BvrGG8gU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CAf0yVYe.js"]}