Check an image before submitting it to Create Face. Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face.
Send the image bytes as base64 in imageBase64, without a data URL prefix, and specify the image’s mimeType. This endpoint takes image data, not a train_image_url.
Set model to the same Phoenix model you will use as model_name when creating the face. Validation defaults to phoenix-4; send "model": "phoenix-4.5" to use Phoenix-4.5 checks. See Phoenix-4 Image Requirements and Phoenix-4.5 Image Requirements.
HTTP 200 means validation completed, not that the image passed. Read passed for the overall result. Each entry in checks has an id, a display label, and its own passed value. Entries with passed: false identify what the user should fix. The checks and details vary by model.
The JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters.
Legacy:POST /v2/replicas/image-validation remains supported. Its diagnostic details use pose_suitable_for_replica where this endpoint uses pose_suitable_for_face; check IDs are unchanged.
Model-specific observations, including booleans about image quality, pose, framing, and other requirements. Use checks for pass/fail decisions: some detail booleans describe problems, so true does not always mean acceptable.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tavus","colors":{"primary":"#FA3862","light":"#FA3862","dark":"#FA3862"},"logo":{"light":"https://mintcdn.com/tavus/mlBBb4gkXXhWTLQi/logo/light_logo.png?fit=max\u0026auto=format\u0026n=mlBBb4gkXXhWTLQi\u0026q=85\u0026s=892e020f9d0afc49e64011dcae9d3dd6","dark":"https://mintcdn.com/tavus/mlBBb4gkXXhWTLQi/logo/dark_logo.png?fit=max\u0026auto=format\u0026n=mlBBb4gkXXhWTLQi\u0026q=85\u0026s=1268f09533ab55791e8ef8200d4a669f"},"favicon":{"light":"https://mintcdn.com/tavus/yC-TYEqHye998xbI/favicon_light.png?fit=max\u0026auto=format\u0026n=yC-TYEqHye998xbI\u0026q=85\u0026s=25642e844d8f4aaad82e6cb0d0cf44c3","dark":"https://mintcdn.com/tavus/yC-TYEqHye998xbI/favicon_dark.png?fit=max\u0026auto=format\u0026n=yC-TYEqHye998xbI\u0026q=85\u0026s=42861da3c81323c222cd6182eee43175"},"api":{"openapi":"openapi.yaml"},"navbar":{"links":[{"href":"https://discord.gg/5Y9Er6WNN5","label":"Community"},{"href":"https://status.tavus.io","label":"Status"},{"href":"mailto:support@tavus.io","label":"Get Support"}],"primary":{"type":"button","label":"Get Started","href":"https://maker.tavus.io/auth/sign-up?is_developer=true"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/tavus-io","discord":"https://discord.gg/5Y9Er6WNN5"}},"integrations":{"ga4":{"measurementId":"G-SBQHZWT4FS"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor","mcp"],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tavus","hasAudioNarration":false,"actualSubdomain":"tavus","customDomains":["docs.tavus.io"],"gitSource":{"type":"github","owner":"tavus-engineering","repo":"platform-api-developer-documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee098bd121ed565e113da5","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"CVI","count":137},{"language":"default","tag":"API","count":93},{"language":"default","tag":"Build","count":92},{"language":"default","tag":"Skills","count":27},{"language":"default","tag":"Deploy","count":23},{"language":"default","tag":"Interaction Events","count":21},{"language":"default","tag":"Face","count":20},{"language":"default","tag":"Magic Canvas","count":17},{"language":"default","tag":"Deployments","count":16},{"language":"default","tag":"Tools","count":14}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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-reference/faces/validate-face-image","slug":"/api-reference/faces/validate-face-image","pageMetadata":{"openapi":"post /v2/faces/image-validation","keywords":["face","image validation","headshot validation","Phoenix face","replica image validation","imageBase64"],"title":"Validate Face Image","description":"Check an image before submitting it to [Create Face](/api-reference/faces/create-face). Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face.\n\nSend the image bytes as base64 in `imageBase64`, without a data URL prefix, and specify the image's `mimeType`. This endpoint takes image data, not a `train_image_url`.\n\nSet `model` to the same Phoenix model you will use as `model_name` when creating the face. Validation defaults to `phoenix-4`; send `\"model\": \"phoenix-4.5\"` to use Phoenix-4.5 checks. See [Phoenix-4 Image Requirements](/sections/faces/phoenix-4-image-requirements) and [Phoenix-4.5 Image Requirements](/sections/faces/phoenix-45-image-requirements).\n\nHTTP `200` means validation completed, not that the image passed. Read `passed` for the overall result. Each entry in `checks` has an `id`, a display `label`, and its own `passed` value. Entries with `passed: false` identify what the user should fix. The checks and `details` vary by model.\n\nThe JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters.\n\n**Legacy:** `POST /v2/replicas/image-validation` remains supported. Its diagnostic details use `pose_suitable_for_replica` where this endpoint uses `pose_suitable_for_face`; check IDs are unchanged.\n","href":"/api-reference/faces/validate-face-image"},"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 a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Check an image before submitting it to \", _jsx(_components.a, {\n href: \"/api-reference/faces/create-face\",\n children: \"Create Face\"\n }), \". Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Send the image bytes as base64 in \", _jsx(_components.code, {\n children: \"imageBase64\"\n }), \", without a data URL prefix, and specify the image’s \", _jsx(_components.code, {\n children: \"mimeType\"\n }), \". This endpoint takes image data, not a \", _jsx(_components.code, {\n children: \"train_image_url\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Set \", _jsx(_components.code, {\n children: \"model\"\n }), \" to the same Phoenix model you will use as \", _jsx(_components.code, {\n children: \"model_name\"\n }), \" when creating the face. Validation defaults to \", _jsx(_components.code, {\n children: \"phoenix-4\"\n }), \"; send \", _jsx(_components.code, {\n children: \"\\\"model\\\": \\\"phoenix-4.5\\\"\"\n }), \" to use Phoenix-4.5 checks. See \", _jsx(_components.a, {\n href: \"/sections/faces/phoenix-4-image-requirements\",\n children: \"Phoenix-4 Image Requirements\"\n }), \" and \", _jsx(_components.a, {\n href: \"/sections/faces/phoenix-45-image-requirements\",\n children: \"Phoenix-4.5 Image Requirements\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"HTTP \", _jsx(_components.code, {\n children: \"200\"\n }), \" means validation completed, not that the image passed. Read \", _jsx(_components.code, {\n children: \"passed\"\n }), \" for the overall result. Each entry in \", _jsx(_components.code, {\n children: \"checks\"\n }), \" has an \", _jsx(_components.code, {\n children: \"id\"\n }), \", a display \", _jsx(_components.code, {\n children: \"label\"\n }), \", and its own \", _jsx(_components.code, {\n children: \"passed\"\n }), \" value. Entries with \", _jsx(_components.code, {\n children: \"passed: false\"\n }), \" identify what the user should fix. The checks and \", _jsx(_components.code, {\n children: \"details\"\n }), \" vary by model.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"The JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Legacy:\"\n }), \" \", _jsx(_components.code, {\n children: \"POST /v2/replicas/image-validation\"\n }), \" remains supported. Its diagnostic details use \", _jsx(_components.code, {\n children: \"pose_suitable_for_replica\"\n }), \" where this endpoint uses \", _jsx(_components.code, {\n children: \"pose_suitable_for_face\"\n }), \"; check IDs are unchanged.\"]\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{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,..._provideComponents(),...props.components},{Info}=_components;if(!Info)_missingMdxReference(`Info`,true);return _jsx(Info,{children:_jsxs(_components.p,{children:[`For AI agents, use `,_jsx(_components.code,{children:`https://docs.tavus.io/openapi.yaml`}),` for the full HTTP API contract.`]})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"post /v2/faces/image-validation","keywords":["face","image validation","headshot validation","Phoenix face","replica image validation","imageBase64"],"title":"Validate Face Image","description":"Check an image before submitting it to [Create Face](/api-reference/faces/create-face). Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face.\n\nSend the image bytes as base64 in `imageBase64`, without a data URL prefix, and specify the image's `mimeType`. This endpoint takes image data, not a `train_image_url`.\n\nSet `model` to the same Phoenix model you will use as `model_name` when creating the face. Validation defaults to `phoenix-4`; send `\"model\": \"phoenix-4.5\"` to use Phoenix-4.5 checks. See [Phoenix-4 Image Requirements](/sections/faces/phoenix-4-image-requirements) and [Phoenix-4.5 Image Requirements](/sections/faces/phoenix-45-image-requirements).\n\nHTTP `200` means validation completed, not that the image passed. Read `passed` for the overall result. Each entry in `checks` has an `id`, a display `label`, and its own `passed` value. Entries with `passed: false` identify what the user should fix. The checks and `details` vary by model.\n\nThe JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters.\n\n**Legacy:** `POST /v2/replicas/image-validation` remains supported. Its diagnostic details use `pose_suitable_for_replica` where this endpoint uses `pose_suitable_for_face`; check IDs are unchanged.\n","href":"/api-reference/faces/validate-face-image"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Faces"],"summary":"Validate Face Image","description":"Check an image before submitting it to [Create Face](/api-reference/faces/create-face). Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face.\n\nSend the image bytes as base64 in `imageBase64`, without a data URL prefix, and specify the image's `mimeType`. This endpoint takes image data, not a `train_image_url`.\n\nSet `model` to the same Phoenix model you will use as `model_name` when creating the face. Validation defaults to `phoenix-4`; send `\"model\": \"phoenix-4.5\"` to use Phoenix-4.5 checks. See [Phoenix-4 Image Requirements](/sections/faces/phoenix-4-image-requirements) and [Phoenix-4.5 Image Requirements](/sections/faces/phoenix-45-image-requirements).\n\nHTTP `200` means validation completed, not that the image passed. Read `passed` for the overall result. Each entry in `checks` has an `id`, a display `label`, and its own `passed` value. Entries with `passed: false` identify what the user should fix. The checks and `details` vary by model.\n\nThe JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters.\n\n**Legacy:** `POST /v2/replicas/image-validation` remains supported. Its diagnostic details use `pose_suitable_for_replica` where this endpoint uses `pose_suitable_for_face`; check IDs are unchanged.\n","operationId":"validateFaceImage","requestBody":"862b0bc4-8024-45e8-aa80-2e88d62fa435","responses":{"200":"da965de8-3231-4c3b-9379-1ab2940e6a65","400":"968b62e5-15a3-4136-970d-91ebc4907880","401":"c196bdb0-1bcd-4ad0-8850-bc1578d125a7","413":"143a7e9d-36a4-4b92-ab7c-299754645df8","422":"36fc9857-2279-43bc-98a1-a5da336731ff","429":"bf10ed61-ca57-4b49-850d-c30c714367c3","502":"cda66cdc-84fd-44d7-b4cb-99637b0eea40","504":"0b5378ce-df49-4523-b93f-606fe8eddad1"},"security":["216e8aaf-5a22-42aa-b45a-1b5ad5a66f58"],"method":"post","type":"path","servers":["b17d08fa-e921-4a01-8671-46fdd3a8244e"],"path":"/v2/faces/image-validation","baseUrlOptions":["https://tavusapi.com"],"title":"Validate Face Image","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["imageBase64"],"properties":{"imageBase64":{"type":"string","minLength":1,"maxLength":29360128,"description":"Base64-encoded image bytes, without a `data:image/...;base64,` prefix. Leading and trailing whitespace is trimmed.","example":"\u003cbase64-encoded-image>","isRequired":true,"uniqueKey":"imageBase64","typeLabel":"string"},"mimeType":{"type":"string","enum":["image/jpeg","image/png","image/webp","image/heic","image/heif"],"default":"image/jpeg","description":"The image's MIME type. Defaults to `image/jpeg` when omitted.","example":"image/jpeg","uniqueKey":"mimeType","typeLabel":"enum\u003cstring>"},"model":{"type":"string","enum":["phoenix-4","phoenix-4.5"],"default":"phoenix-4","description":"Phoenix model to validate the image for. Match the `model_name` you will send to Create Face.","example":"phoenix-4.5","uniqueKey":"model","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"example":{"imageBase64":"\u003cbase64-encoded-image>","mimeType":"image/jpeg","model":"phoenix-4.5"},"examples":{"Example":{"title":"Example","value":{"imageBase64":"\u003cbase64-encoded-image>","mimeType":"image/jpeg","model":"phoenix-4.5"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"da965de8-3231-4c3b-9379-1ab2940e6a65":{"description":"Validation completed. An unsuitable image returns `passed: false` with structured checks.","content":{"application/json":{"schema":{"type":"object","required":["passed","message","checks","details"],"properties":{"passed":{"type":"boolean","description":"True when every check for the selected model passes.","isRequired":true,"uniqueKey":"passed","typeLabel":"boolean"},"message":{"type":"string","description":"A human-readable summary of the validation result.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"checks":{"type":"array","description":"Checks for the selected model. Use entries with `passed: false` to show rejection reasons.","items":{"type":"object","required":["id","label","passed"],"properties":{"id":{"type":"string","description":"Identifier for the check, such as `image_quality_acceptable` or `chest_up_framing_acceptable`. The set of checks depends on the selected model.","isRequired":true,"uniqueKey":"checks.items.[INDEX].id","typeLabel":"string"},"label":{"type":"string","description":"Human-readable description of the condition being checked.","isRequired":true,"uniqueKey":"checks.items.[INDEX].label","typeLabel":"string"},"passed":{"type":"boolean","description":"True when the image satisfies this check.","isRequired":true,"uniqueKey":"checks.items.[INDEX].passed","typeLabel":"boolean"}},"uniqueKey":"checks.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"checks","typeLabel":"object[]"},"details":{"type":"object","description":"Model-specific observations, including booleans about image quality, pose, framing, and other requirements. Use `checks` for pass/fail decisions: some detail booleans describe problems, so `true` does not always mean acceptable.","additionalProperties":true,"properties":{"scene_description":{"type":"string","description":"Description of the image.","uniqueKey":"details.scene_description","typeLabel":"string"},"issues":{"type":"array","description":"Human-readable issues identified in the image.","items":{"type":"string","uniqueKey":"details.issues.items.[INDEX]","typeLabel":"string"},"uniqueKey":"details.issues","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"details","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"passed":false,"message":"The image is blurry. Use a sharper image with even lighting.","checks":[{"id":"image_quality_acceptable","label":"Image is sharp and well-lit","passed":false},{"id":"human_like_subject","label":"Subject is a person or human-like character","passed":true},{"id":"appears_under_18","label":"Subject appears 18 or older","passed":true},{"id":"only_one_person_visible","label":"Only one person in the photo","passed":true},{"id":"person_centered","label":"Person is centered in frame","passed":true},{"id":"head_fully_in_frame","label":"Head is fully visible in the photo","passed":true},{"id":"looking_straight_at_camera","label":"Looking straight at the camera","passed":true},{"id":"pose_suitable_for_replica","label":"Pose is natural and upright","passed":true},{"id":"face_substantially_obscured","label":"Face is clearly visible","passed":true},{"id":"chest_up_framing_acceptable","label":"Framed as a chest-up portrait","passed":true},{"id":"no_nudity","label":"Chest is covered","passed":true},{"id":"celebrity_or_copyright_character","label":"Not a celebrity or copyrighted character","passed":true}],"details":{"scene_description":"A blurry chest-up portrait of an adult facing the camera.","image_quality_acceptable":false,"human_like_subject":true,"appears_under_18":false,"only_one_person_visible":true,"person_centered":true,"head_fully_in_frame":true,"looking_straight_at_camera":true,"pose_suitable_for_face":true,"face_substantially_obscured":false,"chest_up_framing_acceptable":true,"no_nudity":true,"celebrity_or_copyright_character":false,"issues":["The image is blurry. Use a sharper image with even lighting."]}},"examples":{"Example":{"title":"Example","value":{"passed":false,"message":"The image is blurry. Use a sharper image with even lighting.","checks":[{"id":"image_quality_acceptable","label":"Image is sharp and well-lit","passed":false},{"id":"human_like_subject","label":"Subject is a person or human-like character","passed":true},{"id":"appears_under_18","label":"Subject appears 18 or older","passed":true},{"id":"only_one_person_visible","label":"Only one person in the photo","passed":true},{"id":"person_centered","label":"Person is centered in frame","passed":true},{"id":"head_fully_in_frame","label":"Head is fully visible in the photo","passed":true},{"id":"looking_straight_at_camera","label":"Looking straight at the camera","passed":true},{"id":"pose_suitable_for_replica","label":"Pose is natural and upright","passed":true},{"id":"face_substantially_obscured","label":"Face is clearly visible","passed":true},{"id":"chest_up_framing_acceptable","label":"Framed as a chest-up portrait","passed":true},{"id":"no_nudity","label":"Chest is covered","passed":true},{"id":"celebrity_or_copyright_character","label":"Not a celebrity or copyrighted character","passed":true}],"details":{"scene_description":"A blurry chest-up portrait of an adult facing the camera.","image_quality_acceptable":false,"human_like_subject":true,"appears_under_18":false,"only_one_person_visible":true,"person_centered":true,"head_fully_in_frame":true,"looking_straight_at_camera":true,"pose_suitable_for_face":true,"face_substantially_obscured":false,"chest_up_framing_acceptable":true,"no_nudity":true,"celebrity_or_copyright_character":false,"issues":["The image is blurry. Use a sharper image with even lighting."]}}}},"exampleType":"examples"}},"exampleType":"examples"},"968b62e5-15a3-4136-970d-91ebc4907880":{"description":"Invalid JSON or request fields, including a missing image, unsupported MIME type or model, or unknown fields.","content":{"application/json":{"schema":{"type":"object","description":"Error details. Depending on the failure, the explanation is returned in `message` or `error`. Provider safety blocks and timeouts also return a `code`.","properties":{"message":{"type":"string","description":"Explanation of the failure, when returned by authentication or the validation service.","uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"Explanation of the failure, when returned by request handling or rate limiting.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"`validation_policy_blocked` for HTTP 422, or `provider_timeout` for HTTP 504.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"c196bdb0-1bcd-4ad0-8850-bc1578d125a7":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"type":"object","description":"Error details. Depending on the failure, the explanation is returned in `message` or `error`. Provider safety blocks and timeouts also return a `code`.","properties":{"message":{"type":"string","description":"Explanation of the failure, when returned by authentication or the validation service.","uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"Explanation of the failure, when returned by request handling or rate limiting.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"`validation_policy_blocked` for HTTP 422, or `provider_timeout` for HTTP 504.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"143a7e9d-36a4-4b92-ab7c-299754645df8":{"description":"The JSON request body exceeds the 30 MiB limit.","content":{"application/json":{"schema":{"type":"object","description":"Error details. Depending on the failure, the explanation is returned in `message` or `error`. Provider safety blocks and timeouts also return a `code`.","properties":{"message":{"type":"string","description":"Explanation of the failure, when returned by authentication or the validation service.","uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"Explanation of the failure, when returned by request handling or rate limiting.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"`validation_policy_blocked` for HTTP 422, or `provider_timeout` for HTTP 504.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"36fc9857-2279-43bc-98a1-a5da336731ff":{"description":"The validation provider blocked the image under its safety policy. Returns `code: validation_policy_blocked` and a `message`, rather than a completed set of checks.","content":{"application/json":{"schema":{"type":"object","description":"Error details. Depending on the failure, the explanation is returned in `message` or `error`. Provider safety blocks and timeouts also return a `code`.","properties":{"message":{"type":"string","description":"Explanation of the failure, when returned by authentication or the validation service.","uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"Explanation of the failure, when returned by request handling or rate limiting.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"`validation_policy_blocked` for HTTP 422, or `provider_timeout` for HTTP 504.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"bf10ed61-ca57-4b49-850d-c30c714367c3":{"description":"The upstream AI request rate limit was reached.","content":{"application/json":{"schema":{"type":"object","description":"Error details. Depending on the failure, the explanation is returned in `message` or `error`. Provider safety blocks and timeouts also return a `code`.","properties":{"message":{"type":"string","description":"Explanation of the failure, when returned by authentication or the validation service.","uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"Explanation of the failure, when returned by request handling or rate limiting.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"`validation_policy_blocked` for HTTP 422, or `provider_timeout` for HTTP 504.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"cda66cdc-84fd-44d7-b4cb-99637b0eea40":{"description":"Validation failed because the upstream service or provider could not complete the request.","content":{"application/json":{"schema":{"type":"object","description":"Error details. Depending on the failure, the explanation is returned in `message` or `error`. Provider safety blocks and timeouts also return a `code`.","properties":{"message":{"type":"string","description":"Explanation of the failure, when returned by authentication or the validation service.","uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"Explanation of the failure, when returned by request handling or rate limiting.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"`validation_policy_blocked` for HTTP 422, or `provider_timeout` for HTTP 504.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"0b5378ce-df49-4523-b93f-606fe8eddad1":{"description":"The validation provider timed out. Returns `code: provider_timeout` and a `message`.","content":{"application/json":{"schema":{"type":"object","description":"Error details. Depending on the failure, the explanation is returned in `message` or `error`. Provider safety blocks and timeouts also return a `code`.","properties":{"message":{"type":"string","description":"Explanation of the failure, when returned by authentication or the validation service.","uniqueKey":"message","typeLabel":"string"},"error":{"type":"string","description":"Explanation of the failure, when returned by request handling or rate limiting.","uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"`validation_policy_blocked` for HTTP 422, or `provider_timeout` for HTTP 504.","uniqueKey":"code","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","error":"\u003cstring>","code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"216e8aaf-5a22-42aa-b45a-1b5ad5a66f58":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[],"schemeName":"apiKey"}}},"servers":{"b17d08fa-e921-4a01-8671-46fdd3a8244e":{"url":"https://tavusapi.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[],"schemeName":"apiKey"},"schema":{"title":"x-api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"x-api-key"}],"title":"apiKey"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"tavus","siteName":"Tavus","title":"Validate Face Image - Tavus","contextualStarterQuestions":[{"_id":"6ad5ad093877263b062192c5","deploymentId":"65baa7516ce8cd46ab1aa877","questionText":"How do I validate a face image?","status":"active","generatedBy":"contextual","path":"api-reference/faces/validate-face-image","createdAt":"2026-10-19T05:39:21.487Z","updatedAt":"2026-10-19T05:39:21.487Z","__v":0},{"_id":"6ad5ad093877263b062192c7","deploymentId":"65baa7516ce8cd46ab1aa877","questionText":"How do I fix failed checks?","status":"active","generatedBy":"contextual","path":"api-reference/faces/validate-face-image","createdAt":"2026-10-19T05:39:21.487Z","updatedAt":"2026-10-19T05:39:21.487Z","__v":0},{"_id":"6ad5ad093877263b062192c6","deploymentId":"65baa7516ce8cd46ab1aa877","questionText":"What checks does validation perform?","status":"active","generatedBy":"contextual","path":"api-reference/faces/validate-face-image","createdAt":"2026-10-19T05:39:21.487Z","updatedAt":"2026-10-19T05:39:21.487Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-19T05:39:13.981Z","originalFileLocation":"api-reference/faces/validate-face-image.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=\"Check an image before submitting it to Create Face. Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face. Send the image bytes as base64 in imageBase64, without a data URL prefix, and specify the image\u0026#x27;s mimeType. This endpoint takes image data, not a train_image_url. Set model to the same Phoenix model you will use as model_name when creating the face. Validation defaults to phoenix-4; send \u0026quot;model\u0026quot;: \u0026quot;phoenix-4.5\u0026quot; to use Phoenix-4.5 checks. See Phoenix-4 Image Requirements and Phoenix-4.5 Image Requirements. HTTP 200 means validation completed, not that the image passed. Read passed for the overall result. Each entry in checks has an id, a display label, and its own passed value. Entries with passed: false identify what the user should fix. The checks and details vary by model. The JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters. Legacy: POST /v2/replicas/image-validation remains supported. Its diagnostic details use pose_suitable_for_replica where this endpoint uses pose_suitable_for_face; check IDs are unchanged.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tavus\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_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/tavus/Gv5r0opZCeHlefXw/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tavus/Gv5r0opZCeHlefXw/_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/tavus/Gv5r0opZCeHlefXw/_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/tavus/Gv5r0opZCeHlefXw/_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/tavus/Gv5r0opZCeHlefXw/_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/tavus/Gv5r0opZCeHlefXw/_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/tavus/Gv5r0opZCeHlefXw/_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/tavus/Gv5r0opZCeHlefXw/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Validate Face Image - Tavus\">\u003cmeta data-mint-head property=\"og:description\" content=\"Check an image before submitting it to Create Face. Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face. Send the image bytes as base64 in imageBase64, without a data URL prefix, and specify the image\u0026#x27;s mimeType. This endpoint takes image data, not a train_image_url. Set model to the same Phoenix model you will use as model_name when creating the face. Validation defaults to phoenix-4; send \u0026quot;model\u0026quot;: \u0026quot;phoenix-4.5\u0026quot; to use Phoenix-4.5 checks. See Phoenix-4 Image Requirements and Phoenix-4.5 Image Requirements. HTTP 200 means validation completed, not that the image passed. Read passed for the overall result. Each entry in checks has an id, a display label, and its own passed value. Entries with passed: false identify what the user should fix. The checks and details vary by model. The JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters. Legacy: POST /v2/replicas/image-validation remains supported. Its diagnostic details use pose_suitable_for_replica where this endpoint uses pose_suitable_for_face; check IDs are unchanged.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tavus\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tavus.io/api-reference/faces/validate-face-image\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tavus.mintlify.site/_mintlify/api/og/v2?division=Face\u0026amp;title=Validate+Face+Image\u0026amp;description=Check+an+image+before+submitting+it+to+%5BCreate+Face%5D%28%2Fapi-reference%2Ffaces%2Fcreate-face%29.+Returns+an+overall+pass%2Ffail+result%2C+structured+checks%2C+and+diagnostic+d\u0026amp;theme=91cafe4cc1af35a0828d7f58\u0026amp;signature=d4e37292445d0993af58aaeada6406c59d6add6403978bfef805abf0fe743038\">\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=\"Validate Face Image - Tavus\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Check an image before submitting it to Create Face. Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face. Send the image bytes as base64 in imageBase64, without a data URL prefix, and specify the image\u0026#x27;s mimeType. This endpoint takes image data, not a train_image_url. Set model to the same Phoenix model you will use as model_name when creating the face. Validation defaults to phoenix-4; send \u0026quot;model\u0026quot;: \u0026quot;phoenix-4.5\u0026quot; to use Phoenix-4.5 checks. See Phoenix-4 Image Requirements and Phoenix-4.5 Image Requirements. HTTP 200 means validation completed, not that the image passed. Read passed for the overall result. Each entry in checks has an id, a display label, and its own passed value. Entries with passed: false identify what the user should fix. The checks and details vary by model. The JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters. Legacy: POST /v2/replicas/image-validation remains supported. Its diagnostic details use pose_suitable_for_replica where this endpoint uses pose_suitable_for_face; check IDs are unchanged.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tavus.mintlify.site/_mintlify/api/og/v2?division=Face\u0026amp;title=Validate+Face+Image\u0026amp;description=Check+an+image+before+submitting+it+to+%5BCreate+Face%5D%28%2Fapi-reference%2Ffaces%2Fcreate-face%29.+Returns+an+overall+pass%2Ffail+result%2C+structured+checks%2C+and+diagnostic+d\u0026amp;theme=91cafe4cc1af35a0828d7f58\u0026amp;signature=d4e37292445d0993af58aaeada6406c59d6add6403978bfef805abf0fe743038\">\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/tavus/Gv5r0opZCeHlefXw/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tavus\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FA3862\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tavus.io/api-reference/faces/validate-face-image\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/faces/validate-face-image.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tavus.io/#organization\",\"name\":\"Tavus\",\"url\":\"https://docs.tavus.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tavus/mlBBb4gkXXhWTLQi/logo/light_logo.png?fit=max\u0026auto=format\u0026n=mlBBb4gkXXhWTLQi\u0026q=85\u0026s=892e020f9d0afc49e64011dcae9d3dd6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tavus.io#website\",\"name\":\"Tavus\",\"url\":\"https://docs.tavus.io\",\"publisher\":{\"@id\":\"https://docs.tavus.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tavus.io/api-reference/faces/validate-face-image#webpage\",\"url\":\"https://docs.tavus.io/api-reference/faces/validate-face-image\",\"name\":\"Validate Face Image\",\"description\":\"Check an image before submitting it to Create Face. Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face. Send the image bytes as base64 in imageBase64, without a data URL prefix, and specify the image's mimeType. This endpoint takes image data, not a train_image_url. Set model to the same Phoenix model you will use as model_name when creating the face. Validation defaults to phoenix-4; send \\\"model\\\": \\\"phoenix-4.5\\\" to use Phoenix-4.5 checks. See Phoenix-4 Image Requirements and Phoenix-4.5 Image Requirements. HTTP 200 means validation completed, not that the image passed. Read passed for the overall result. Each entry in checks has an id, a display label, and its own passed value. Entries with passed: false identify what the user should fix. The checks and details vary by model. The JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters. Legacy: POST /v2/replicas/image-validation remains supported. Its diagnostic details use pose_suitable_for_replica where this endpoint uses pose_suitable_for_face; check IDs are unchanged.\",\"dateModified\":\"2026-10-19T05:39:13.981Z\",\"isPartOf\":{\"@id\":\"https://docs.tavus.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tavus.io/api-reference/faces/validate-face-image#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tavus.io/api-reference/faces/validate-face-image#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Face\",\"item\":\"https://docs.tavus.io/api-reference/faces/create-face\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Validate Face Image\",\"item\":\"https://docs.tavus.io/api-reference/faces/validate-face-image\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tavus.io/api-reference/faces/validate-face-image#apireference\",\"headline\":\"Validate Face Image\",\"name\":\"Validate Face Image\",\"description\":\"Check an image before submitting it to Create Face. Returns an overall pass/fail result, structured checks, and diagnostic details without creating a face. Send the image bytes as base64 in imageBase64, without a data URL prefix, and specify the image's mimeType. This endpoint takes image data, not a train_image_url. Set model to the same Phoenix model you will use as model_name when creating the face. Validation defaults to phoenix-4; send \\\"model\\\": \\\"phoenix-4.5\\\" to use Phoenix-4.5 checks. See Phoenix-4 Image Requirements and Phoenix-4.5 Image Requirements. HTTP 200 means validation completed, not that the image passed. Read passed for the overall result. Each entry in checks has an id, a display label, and its own passed value. Entries with passed: false identify what the user should fix. The checks and details vary by model. The JSON request body must not exceed 30 MiB. The base64 string is limited to 28 MiB of characters. Legacy: POST /v2/replicas/image-validation remains supported. Its diagnostic details use pose_suitable_for_replica where this endpoint uses pose_suitable_for_face; check IDs are unchanged.\",\"url\":\"https://docs.tavus.io/api-reference/faces/validate-face-image\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tavus.io/api-reference/faces/validate-face-image#webpage\"},\"dateModified\":\"2026-10-19T05:39:13.981Z\",\"keywords\":\"face, image validation, headshot validation, Phoenix face, replica image validation, imageBase64\",\"publisher\":{\"@id\":\"https://docs.tavus.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tavus.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tavus\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Tavus","nav":{"global":null,"tabs":[{"tab":"CVI","pages":[{"title":"CVI","href":"/sections/introduction"}]},{"tab":"API","groups":[{"group":"Introduction","pages":[{"title":"Overview","href":"/api-reference/overview"},{"title":"Authentication","href":"/api-reference/authentication"}]},{"group":"Conversation","pages":[{"openapi":"post /v2/conversations","title":null,"href":"/api-reference/conversations/create-conversation"},{"openapi":"get /v2/conversations/{conversation_id}","title":"Get Conversation","href":"/api-reference/conversations/get-conversation"},{"openapi":"get /v2/conversations","title":"List Conversations","href":"/api-reference/conversations/get-conversations"},{"openapi":"post /v2/conversations/{conversation_id}/end","title":"End Conversation","href":"/api-reference/conversations/end-conversation"},{"openapi":"delete /v2/conversations/{conversation_id}","title":"Delete Conversation","href":"/api-reference/conversations/delete-conversation"}]},{"group":"PAL","pages":[{"openapi":"post /v2/pals","title":"Create PAL","href":"/api-reference/pals/create-pal"},{"openapi":"get /v2/pals/{pal_id}","title":"Get PAL","href":"/api-reference/pals/get-pal"},{"openapi":"get /v2/pals","title":"List PALs","href":"/api-reference/pals/list-pals"},{"openapi":"patch /v2/pals/{pal_id}","title":"Patch PAL","href":"/api-reference/pals/patch-pal"},{"title":"Publish PAL","sidebarTitle":"Publish PAL (removed)","href":"/api-reference/pals/publish-pal"},{"openapi":"delete /v2/pals/{pal_id}","title":"Delete PAL","href":"/api-reference/pals/delete-pal"},{"openapi":"get /v2/pals/check-username","title":"Check Conferencing Username Availability","href":"/api-reference/pals/check-conferencing-username"}]},{"group":"Face","pages":[{"openapi":"post /v2/faces","title":"Create Face","description":"Creates a new face from training video or image URL for use in conversations. See [Choose a Model and Training Path](/sections/faces/which-training-path) for model and footage requirements and [Face overview](/sections/faces/overview#platform-policies) for rights and permissions.","href":"/api-reference/faces/create-face"},{"openapi":"post /v2/faces/image-validation","title":"Validate Face Image","href":"/api-reference/faces/validate-face-image"},{"openapi":"get /v2/faces/{face_id}","title":"Get Face","description":"This endpoint returns a single Face by its unique identifier.\n","href":"/api-reference/faces/get-face"},{"openapi":"get /v2/faces","title":"List Faces","href":"/api-reference/faces/list-faces"},{"openapi":"patch /v2/faces/{face_id}","title":"Update Face","href":"/api-reference/faces/update-face"},{"openapi":"delete /v2/faces/{face_id}","title":"Delete Face","href":"/api-reference/faces/delete-face"}]},{"group":"Voices","pages":[{"openapi":"post /v2/voices","title":"Create Voice","href":"/api-reference/voices/create-voice"},{"openapi":"get /v2/voices/{voice_id}","title":"Get Voice","href":"/api-reference/voices/get-voice"},{"openapi":"get /v2/voices","title":"List Voices","href":"/api-reference/voices/list-voices"},{"openapi":"patch /v2/voices/{voice_id}","title":"Update Voice","href":"/api-reference/voices/update-voice"},{"openapi":"delete /v2/voices/{voice_id}","title":"Delete Voice","href":"/api-reference/voices/delete-voice"}]},{"group":"Tools","pages":[{"openapi":"post /v2/tools","title":"Create Tool","href":"/api-reference/tools/create-tool"},{"openapi":"get /v2/tools","title":"Get Tools","href":"/api-reference/tools/get-tools"},{"openapi":"get /v2/tools/{tool_id}","title":"Get Tool","href":"/api-reference/tools/get-tool"},{"openapi":"patch /v2/tools/{tool_id}","title":"Update Tool","href":"/api-reference/tools/update-tool"},{"openapi":"delete /v2/tools/{tool_id}","title":"Delete Tool","href":"/api-reference/tools/delete-tool"},{"openapi":"post /v2/pals/{pal_id}/tools","title":"Attach Tools To PAL","href":"/api-reference/pal-tools/attach-tools-to-pal"},{"openapi":"get /v2/pals/{pal_id}/tools","title":"List PAL Tools","href":"/api-reference/pal-tools/list-pal-tools"},{"openapi":"delete /v2/pals/{pal_id}/tools/{tool_id}","title":"Detach Tool From PAL","href":"/api-reference/pal-tools/detach-tool-from-pal"}]},{"group":"Connectors","pages":[{"openapi":"post /v2/connectors","title":"Create Connector","href":"/api-reference/connectors/create-connector"},{"openapi":"get /v2/connectors","title":"List Connectors","href":"/api-reference/connectors/list-connectors"},{"openapi":"get /v2/connectors/{connector_id}","title":"Get Connector","href":"/api-reference/connectors/get-connector"},{"openapi":"patch /v2/connectors/{connector_id}","title":"Update Connector","href":"/api-reference/connectors/update-connector"},{"openapi":"delete /v2/connectors/{connector_id}","title":"Delete Connector","href":"/api-reference/connectors/delete-connector"},{"openapi":"get /v2/connectors/{connector_id}/preview","title":"Preview Connector Tools","href":"/api-reference/connectors/preview-connector-tools"},{"openapi":"post /v2/connectors/{connector_id}/runtime_check","title":"Runtime Check Connector","href":"/api-reference/connectors/runtime-check-connector"},{"openapi":"post /v2/connectors/{connector_id}/oauth/reconnect","title":"Reconnect OAuth","href":"/api-reference/connectors/reconnect-connector-oauth"}]},{"group":"Skills","pages":[{"openapi":"get /v2/skills","title":"List Skills","href":"/api-reference/skills/list-skills"},{"openapi":"get /v2/skills/{skill_id}","title":"Get Skill","href":"/api-reference/skills/get-skill"},{"openapi":"get /v2/pals/{pal_id}/skills","title":"List PAL Skills","href":"/api-reference/pal-skills/list-pal-skills"},{"openapi":"get /v2/pals/{pal_id}/skills/{skill_id}","title":"Get PAL Skill","href":"/api-reference/pal-skills/get-pal-skill"},{"openapi":"put /v2/pals/{pal_id}/skills/{skill_id}","title":"Attach Skill to PAL","href":"/api-reference/pal-skills/attach-skill-to-pal"},{"openapi":"patch /v2/pals/{pal_id}/skills/{skill_id}","title":"Update PAL Skill","href":"/api-reference/pal-skills/update-pal-skill"},{"openapi":"delete /v2/pals/{pal_id}/skills/{skill_id}","title":"Detach Skill from PAL","href":"/api-reference/pal-skills/detach-skill-from-pal"},{"openapi":"put /v2/pals/{pal_id}/skills","title":"Replace PAL Skills","href":"/api-reference/pal-skills/replace-pal-skills"}]},{"group":"Memory Stores","pages":[{"group":"Store management","pages":[{"openapi":"post /v2/memory-stores","title":"Create Memory Store","href":"/api-reference/memory-stores/create-memory-store"},{"openapi":"get /v2/memory-stores","title":"List Memory Stores","href":"/api-reference/memory-stores/list-memory-stores"},{"openapi":"get /v2/memory-stores/{memory_store_id}","title":"Get Memory Store","href":"/api-reference/memory-stores/get-memory-store"},{"openapi":"delete /v2/memory-stores/{memory_store_id}","title":"Delete Memory Store","href":"/api-reference/memory-stores/delete-memory-store"}]},{"group":"Pinned memories","pages":[{"openapi":"post /v2/memory-stores/{memory_store_id}/pinned","title":"Create Pinned Memory","href":"/api-reference/memory-stores/create-pinned-memory"},{"openapi":"get /v2/memory-stores/{memory_store_id}/pinned","title":"List Pinned Memories","href":"/api-reference/memory-stores/list-pinned-memories"},{"openapi":"patch /v2/memory-stores/{memory_store_id}/pinned/{memory_id}","title":"Update Pinned Memory","href":"/api-reference/memory-stores/update-pinned-memory"},{"openapi":"delete /v2/memory-stores/{memory_store_id}/pinned/{memory_id}","title":"Delete Pinned Memory","href":"/api-reference/memory-stores/delete-pinned-memory"}]},{"group":"Learned memory","pages":[{"openapi":"get /v2/memory-stores/{memory_store_id}/learned","title":"Get Learned Memory","href":"/api-reference/memory-stores/get-learned-memory"},{"openapi":"delete /v2/memory-stores/{memory_store_id}/learned/profile","title":"Delete Learned Profile Memory","href":"/api-reference/memory-stores/delete-learned-profile-memory"},{"openapi":"delete /v2/memory-stores/{memory_store_id}/learned/timeline","title":"Delete Learned Timeline Memory","href":"/api-reference/memory-stores/delete-learned-timeline-memory"}]}]},{"group":"Magic Canvas","pages":[{"openapi":"post /v2/conversations/{conversation_id}/canvas/interactions","title":"Record Canvas Interaction","href":"/api-reference/canvas-interactions/record-canvas-interaction"},{"openapi":"get /v2/conversations/{conversation_id}/canvas/interactions","title":"List Canvas Interactions","href":"/api-reference/canvas-interactions/list-canvas-interactions"}]},{"group":"Objectives","pages":[{"openapi":"post /v2/objectives","title":"Create Objectives","href":"/api-reference/objectives/create-objectives"},{"openapi":"get /v2/objectives/{objectives_id}","title":"Get Objective","href":"/api-reference/objectives/get-objectives"},{"openapi":"get /v2/objectives","title":"Get Objectives","href":"/api-reference/objectives/get-objectives-list"},{"openapi":"patch /v2/objectives/{objectives_id}","title":"Patch Objective","href":"/api-reference/objectives/patch-objectives"},{"openapi":"delete /v2/objectives/{objectives_id}","title":"Delete Objective","href":"/api-reference/objectives/delete-objectives"}]},{"group":"Guardrails","pages":[{"openapi":"post /v2/guardrails","title":"Create Guardrails","href":"/api-reference/guardrails/create-guardrails"},{"openapi":"get /v2/guardrails/{guardrail_id}","title":"Get Guardrails","href":"/api-reference/guardrails/get-guardrails"},{"openapi":"get /v2/guardrails","title":"List Guardrails","href":"/api-reference/guardrails/list-guardrails"},{"openapi":"patch /v2/guardrails/{guardrail_id}","title":"Patch Guardrails","href":"/api-reference/guardrails/patch-guardrails"},{"openapi":"delete /v2/guardrails/{guardrail_id}","title":"Delete Guardrails","href":"/api-reference/guardrails/delete-guardrails"}]},{"group":"Knowledge Base","pages":[{"title":"Create Document","openapi":"post /v2/documents","href":"/api-reference/documents/create-document"},{"title":"Get Document","openapi":"get /v2/documents/{document_id}","href":"/api-reference/documents/get-document"},{"title":"List Documents","openapi":"get /v2/documents","href":"/api-reference/documents/get-documents"},{"title":"Delete Document","openapi":"delete /v2/documents/{document_id}","href":"/api-reference/documents/delete-document"},{"title":"Update Document","openapi":"patch /v2/documents/{document_id}","href":"/api-reference/documents/patch-document"},{"title":"Recrawl Document","openapi":"post /v2/documents/{document_id}/recrawl","href":"/api-reference/documents/recrawl-document"}]},{"group":"Pronunciation Dictionaries","pages":[{"openapi":"post /v2/pronunciation-dictionaries","title":"Create Pronunciation Dictionary","href":"/api-reference/pronunciation-dictionaries/create-pronunciation-dictionary"},{"openapi":"get /v2/pronunciation-dictionaries/{dictionary_id}","title":"Get Pronunciation Dictionary","href":"/api-reference/pronunciation-dictionaries/get-pronunciation-dictionary"},{"openapi":"get /v2/pronunciation-dictionaries","title":"List Pronunciation Dictionaries","href":"/api-reference/pronunciation-dictionaries/list-pronunciation-dictionaries"},{"openapi":"patch /v2/pronunciation-dictionaries/{dictionary_id}","title":"Update Pronunciation Dictionary","href":"/api-reference/pronunciation-dictionaries/update-pronunciation-dictionary"},{"openapi":"delete /v2/pronunciation-dictionaries/{dictionary_id}","title":"Delete Pronunciation Dictionary","href":"/api-reference/pronunciation-dictionaries/delete-pronunciation-dictionary"}]},{"group":"Deployments","pages":[{"openapi":"post /v2/deployments","title":"Create Deployment","href":"/api-reference/deployments/create-deployment"},{"openapi":"get /v2/deployments","title":"List Deployments","href":"/api-reference/deployments/list-deployments"},{"openapi":"get /v2/deployments/{deployment_id}","title":"Get Deployment","href":"/api-reference/deployments/get-deployment"},{"openapi":"patch /v2/deployments/{deployment_id}","title":"Patch Deployment","href":"/api-reference/deployments/patch-deployment"},{"openapi":"delete /v2/deployments/{deployment_id}","title":"Delete Deployment","href":"/api-reference/deployments/delete-deployment"},{"openapi":"get /v2/deployments/{deployment_id}/init","title":"Get Deployment Init Config","href":"/api-reference/deployments/get-deployment-init"},{"openapi":"post /v2/deployments/{deployment_id}/start","title":"Start Deployment Conversation","href":"/api-reference/deployments/start-deployment-conversation"},{"openapi":"post /v2/deployments/{deployment_id}/conversations/{conversation_id}/end","title":"End Deployment Conversation","href":"/api-reference/deployments/end-deployment-conversation"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/sections/changelog/changelog"}]},{"tab":"Other Products","pages":[{"title":"Other Products","href":"/sections/video/overview"}]},{"tab":"Enablement Docs","hidden":true,"pages":[{"title":"Enablement Docs","href":"/sections/enablement-docs"}]}]},"basePath":"","title":"Validate Face Image - Tavus","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","Page-Dr40SSJq.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}