{"info":{"_postman_id":"0d501ff6-6614-4917-a89d-7fe91e7516bd","name":"DeepFace API","description":"<html><head></head><body><p>Welcome to the <strong>DeepFace API</strong>, a secure and developer-friendly facial recognition platform designed for both <strong>real-world identity workflows</strong> and <strong>fun, consumer-facing applications</strong>.</p>\n<p>DeepFace provides production-ready AI endpoints for:</p>\n<ul>\n<li><p>Face verification</p>\n</li>\n<li><p>Facial attribute analysis</p>\n</li>\n<li><p>Look-alike and similarity matching</p>\n</li>\n</ul>\n<p>StartFragment Each slot is corresponding to a dimension value and dimension value is emphasized with colors. Similar to 2D barcodes, vertical dimension stores no information in the illustration.EndFragment</p>\n<img src=\"https://content.pstmn.io/98a2e01d-a374-40a7-90a7-f6a737b5a3ec/ZW1iZWRkaW5nLmpwZw==\">\n\n<hr>\n<h2 id=\"what-deepface-api-can-do\">What DeepFace API Can Do</h2>\n<p>DeepFace allows developers to integrate advanced facial intelligence into their applications with minimal effort.</p>\n<h3 id=\"core-capabilities\">Core Capabilities</h3>\n<ul>\n<li><p><strong>Face Verification</strong></p>\n<p>  Confirm whether two images belong to the same person (ID vs selfie).</p>\n</li>\n<li><p><strong>Face Analysis</strong></p>\n<p>  Extract facial attributes such as age, gender, race, and emotion.</p>\n</li>\n<li><p><strong>Look-Alike Matching</strong></p>\n<p>  Compare two faces and return similarity scores with UI-ready feedback.</p>\n</li>\n</ul>\n<p>Each endpoint is optimized for accuracy and safe usage in production environments.</p>\n<hr>\n<h2 id=\"designed-for-real-applications\">Designed for Real Applications</h2>\n<p>DeepFace API is suitable for a wide range of use cases:</p>\n<ul>\n<li><p>Identity verification (KYC, onboarding)</p>\n</li>\n<li><p>Fraud prevention</p>\n</li>\n<li><p>Access control</p>\n</li>\n<li><p>Analytics and personalization</p>\n</li>\n<li><p>Social &amp; entertainment apps</p>\n</li>\n<li><p>Look-alike and celebrity match experiences</p>\n</li>\n</ul>\n<p>Whether you’re building a <strong>serious identity system</strong> or a <strong>viral fun app</strong>, the API adapts to your needs.</p>\n<hr>\n<h2 id=\"how-the-api-works-high-level\">How the API Works (High-Level)</h2>\n<ol>\n<li><p>Your application sends a request with image URLs or base64 images</p>\n</li>\n<li><p>The API validates inputs and authentication</p>\n</li>\n<li><p>Images are securely forwarded to internal AI engines</p>\n</li>\n<li><p>Results are normalized and returned in a developer-friendly format</p>\n</li>\n<li><p>Billing is applied only when conditions are met (success-based billing)</p>\n</li>\n</ol>\n<hr>\n<h2 id=\"authentication-overview\">Authentication Overview</h2>\n<p>All DeepFace API endpoints require <strong>API key authentication</strong>.</p>\n<h3 id=\"how-authentication-works\">How Authentication Works</h3>\n<ul>\n<li><p>Each developer account has one or more API keys</p>\n</li>\n<li><p>The API key must be sent with every request</p>\n</li>\n<li><p>Authentication occurs <strong>before</strong> any processing or billing</p>\n</li>\n</ul>\n<h3 id=\"required-header\">Required Header</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">X-API-KEY: YOUR_API_KEY\n\n</code></pre>\n<p>Requests without a valid API key are rejected immediately.</p>\n<hr>\n<h2 id=\"billing-philosophy\">Billing Philosophy</h2>\n<p>DeepFace uses a <strong>fair and transparent billing model</strong>:</p>\n<ul>\n<li><p>Face Verification → Charged <strong>only when verification succeeds</strong></p>\n</li>\n<li><p>Face Analysis → Charged <strong>only on successful analysis</strong></p>\n</li>\n<li><p>Look-Alike → Charged <strong>only when a verified match is detected</strong></p>\n</li>\n</ul>\n<p>This ensures developers are <strong>never billed for failed or invalid requests</strong>.</p>\n<p>Billing details are always returned in the response.</p>\n<hr>\n<h2 id=\"consistent-response-structure\">Consistent Response Structure</h2>\n<p>All endpoints return responses using the same structure:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success | failed | error\",\n  \"result\": \"endpoint-specific result\",\n  \"message\": \"Human-readable explanation\"\n}\n\n</code></pre>\n<p>This consistency makes it easy to:</p>\n<ul>\n<li><p>Handle responses across multiple endpoints</p>\n</li>\n<li><p>Build reusable client-side logic</p>\n</li>\n<li><p>Display clear messages to users</p>\n</li>\n</ul>\n<hr>\n<h2 id=\"error-handling--safety\">Error Handling &amp; Safety</h2>\n<p>Common error categories include:</p>\n<ul>\n<li><p><code>invalid_input</code></p>\n</li>\n<li><p><code>invalid_image</code></p>\n</li>\n<li><p><code>unauthorized</code></p>\n</li>\n<li><p><code>insufficient_balance</code></p>\n</li>\n<li><p><code>engine_unavailable</code></p>\n</li>\n</ul>\n<p>Each endpoint documents its possible errors in detail.</p>\n<hr>\n<h2 id=\"using-postman-recommended\">Using Postman (Recommended)</h2>\n<p>DeepFace API is fully compatible with <strong>Postman</strong> and similar API testing tools.</p>\n<h3 id=\"why-use-postman\">Why Use Postman?</h3>\n<ul>\n<li><p>Test endpoints quickly</p>\n</li>\n<li><p>Inspect responses easily</p>\n</li>\n<li><p>Save collections for team use</p>\n</li>\n<li><p>Auto-generate example requests</p>\n</li>\n</ul>\n<h3 id=\"getting-started-with-postman\">Getting Started with Postman</h3>\n<ol>\n<li><p>Create a new request</p>\n</li>\n<li><p>Set method to <code>POST</code></p>\n</li>\n<li><p>X-API-KEY: YOUR_API_KEY</p>\n</li>\n<li><p>Content-Type: application/json</p>\n</li>\n<li><p>Paste the endpoint URL</p>\n</li>\n<li><p>Send a JSON body</p>\n</li>\n<li><p>Click <strong>Send</strong></p>\n</li>\n</ol>\n<p>You’ll immediately see the response from the API.</p>\n<hr>\n<h2 id=\"auto-generated-requests--examples\">Auto-Generated Requests &amp; Examples</h2>\n<p>All examples in this documentation:</p>\n<ul>\n<li><p>Are compatible with Postman</p>\n</li>\n<li><p>Can be copied directly into Postman or cURL</p>\n</li>\n<li><p>Use real request/response formats</p>\n</li>\n</ul>\n<p>This makes onboarding fast and beginner-friendly.</p>\n<hr>\n<h2 id=\"try-it-experience-documentation-ui\">Try-It Experience (Documentation UI)</h2>\n<p>The documentation interface supports:</p>\n<ul>\n<li><p>Live request testing</p>\n</li>\n<li><p>Copy-paste examples</p>\n</li>\n<li><p>Endpoint-specific payload templates</p>\n</li>\n<li><p>Real response previews</p>\n</li>\n</ul>\n<p>Developers can test APIs <strong>without writing code</strong>.</p>\n<hr>\n<h2 id=\"security--privacy\">Security &amp; Privacy</h2>\n<p>DeepFace follows strict security principles:</p>\n<ul>\n<li><p>Images are processed transiently</p>\n</li>\n<li><p>No images are stored unless explicitly required</p>\n</li>\n<li><p>API keys are never exposed</p>\n</li>\n<li><p>Internal AI engines are fully isolated</p>\n</li>\n</ul>\n<p>This makes DeepFace suitable for <strong>sensitive identity workflows</strong>.</p>\n<hr>\n<h2 id=\"getting-your-api-key\">Getting Your API Key</h2>\n<p>To start using the API:</p>\n<ol>\n<li><p>Sign in to your <a href=\"https://dashboard.deepface.sbs\">dashboard</a></p>\n</li>\n<li><p>Generate an <a href=\"https://dashboard.deepface.sbs/apikeys\">API key</a></p>\n</li>\n<li><p>Copy the key into your request headers</p>\n</li>\n</ol>\n<p>👉 API Keys dashboard:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">https://dashboard.deepface.sbs/apikeys\n\n</code></pre>\n<hr>\n<h2 id=\"next-steps\">Next Steps</h2>\n<p>Once you understand the basics, explore the individual endpoint documentation:</p>\n<ul>\n<li><p><a href=\"#add48f78-1eeb-499a-afc7-2bf83f8991a6\">ID Verification</a></p>\n</li>\n<li><p><a href=\"#ded7235f-e2c6-4d3c-aa1b-304a74ffb378\">Face Analysis</a></p>\n</li>\n<li><p><a href=\"#00640a01-7b42-4082-a728-c2b6ea786457\">Look-Alike Matching</a></p>\n</li>\n</ul>\n<p>Each page includes:</p>\n<ul>\n<li><p>Detailed explanations</p>\n</li>\n<li><p>Request/response examples</p>\n</li>\n<li><p>Error tables</p>\n</li>\n<li><p>Billing rules</p>\n</li>\n</ul>\n<hr>\n<h2 id=\"developer-tip\">Developer Tip</h2>\n<p>Start with Postman first.</p>\n<p>Once your request works in Postman, integration into your app is straightforward.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"50946334","collectionId":"0d501ff6-6614-4917-a89d-7fe91e7516bd","publishedId":"2sB3dWqm49","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"7d5deb"},"publishDate":"2025-12-20T14:22:54.000Z"},"item":[{"name":"KYC Verification","id":"add48f78-1eeb-499a-afc7-2bf83f8991a6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"img1\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"img2\": \"https://images.ctfassets.net/xjcz23wx147q/iegram9XLv7h3GemB5vUR/0345811de2da23fafc79bd00b8e5f1c6/Max_Rehkopf_200x200.jpeg\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/v1/verify","description":"<h1 id=\"face-verification-id-↔-selfie\">Face Verification (ID ↔ Selfie)</h1>\n<p>Face Verification compares an <strong>identity document photo (ID)</strong> and a <strong>selfie</strong> to determine whether they belong to the <strong>same person</strong>.</p>\n<p>This endpoint is designed specifically for <strong>real-world identity verification workflows</strong>, including:</p>\n<ul>\n<li><p>ID vs selfie verification</p>\n</li>\n<li><p>KYC / onboarding validation</p>\n</li>\n<li><p>Fraud prevention</p>\n</li>\n<li><p>Account access control</p>\n</li>\n</ul>\n<p>⚠️ This endpoint <strong>does NOT support generic image-to-image comparison</strong>.</p>\n<p>Exactly <strong>one ID image and one selfie image</strong> are required.</p>\n<hr />\n<h2 id=\"how-it-works\">How It Works</h2>\n<ol>\n<li><p>The client submits <strong>two images</strong>:</p>\n<ul>\n<li><p><code>img1</code> → Identity document image (ID)</p>\n</li>\n<li><p><code>img2</code> → Selfie image</p>\n</li>\n</ul>\n</li>\n<li><p>Images are securely forwarded to an <strong>internal DeepFace verification engine</strong>.</p>\n</li>\n<li><p>Before verification, the system validates:</p>\n<ul>\n<li><p>A face exists in both images</p>\n</li>\n<li><p>Exactly <strong>one ID and one selfie</strong> are provided</p>\n</li>\n<li><p>The selfie contains <strong>only one clear face</strong></p>\n</li>\n</ul>\n</li>\n<li><p>Facial features are extracted and compared using a trained DeepFace model.</p>\n</li>\n<li><p>The engine evaluates:</p>\n<ul>\n<li><p>Facial similarity distance</p>\n</li>\n<li><p>Model threshold</p>\n</li>\n<li><p>Verification decision</p>\n</li>\n</ul>\n</li>\n<li><p>A final decision is returned:</p>\n<ul>\n<li><p><code>verified</code> → ID matches the selfie</p>\n</li>\n<li><p><code>not_verified</code> → ID does not match the selfie</p>\n</li>\n</ul>\n</li>\n</ol>\n<p>💳 <strong>Billing is applied only when verification succeeds.</strong></p>\n<hr />\n<h2 id=\"authentication\">Authentication</h2>\n<h3 id=\"api-key-authentication-required\">API Key Authentication (Required)</h3>\n<p>All requests must include a valid API key in the request headers.</p>\n<h4 id=\"required-header\">Required Header</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">X-API-KEY: YOUR_API_KEY\n\n</code></pre>\n<h3 id=\"authentication-rules\">Authentication Rules</h3>\n<ul>\n<li><p>API key must belong to an <strong>active account</strong></p>\n</li>\n<li><p>Requests without an API key are rejected</p>\n</li>\n<li><p>Suspended accounts are blocked</p>\n</li>\n<li><p>Authentication occurs <strong>before image processing or billing</strong></p>\n</li>\n</ul>\n<hr />\n<h2 id=\"api-base-url\">API Base URL</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">https://api.deepface.sbs\n\n</code></pre>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST /v1/verify\n\n</code></pre>\n<h3 id=\"full-url\">Full URL</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST https://api.deepface.sbs/v1/verify\n\n</code></pre>\n<hr />\n<h2 id=\"headers\">Headers</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>X-API-KEY</td>\n<td>Yes</td>\n<td>Your API authentication key</td>\n</tr>\n<tr>\n<td>Content-Type</td>\n<td>Yes</td>\n<td>Must be <code>application/json</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"request-body\">Request Body</h2>\n<h3 id=\"json\">JSON</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"img1\": \"https://example.com/id.jpg\",\n  \"img2\": \"https://example.com/selfie.jpg\"\n}\n\n</code></pre>\n<h3 id=\"request-parameters\">Request Parameters</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>img1</td>\n<td>string</td>\n<td>Yes</td>\n<td>Identity document image (ID). Must contain a visible face</td>\n</tr>\n<tr>\n<td>img2</td>\n<td>string</td>\n<td>Yes</td>\n<td>Selfie image. Must contain exactly one clear face</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"image-requirements\">Image Requirements</h3>\n<ul>\n<li><p>Images must be <strong>clear and well-lit</strong></p>\n</li>\n<li><p>Must be publicly accessible URLs or valid base64 images</p>\n</li>\n<li><p><strong>One ID + one selfie only</strong></p>\n</li>\n<li><p>Two selfies or two IDs are rejected</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"successful-response\">Successful Response</h2>\n<h3 id=\"id-matches-the-selfie\">ID Matches the Selfie</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"success\",\n  \"result\": \"verified\",\n  \"message\": \"Face verification successful. ID matches the selfie.\",\n  \"engine_response\": {\n    \"verified\": true,\n    \"confidence\": 100,\n    \"decision\": \"passed\",\n    \"threshold\": 0.45,\n    \"status\": \"success\",\n    \"reason\": \"Face verification successful. ID matches the selfie.\",\n    \"details\": {\n      \"detector_backend\": \"opencv\",\n      \"distance\": 0,\n      \"model\": \"Facenet\",\n      \"processing_time\": 11.06,\n      \"facial_areas\": {\n        \"img1\": { \"x\": 380, \"y\": 1127, \"w\": 1380, \"h\": 1380 },\n        \"img2\": { \"x\": 380, \"y\": 1127, \"w\": 1380, \"h\": 1380 }\n      }\n    }\n  },\n  \"billing\": {\n    \"charged\": 0.25,\n    \"currency\": \"USD\"\n  }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"failed-verification\">Failed Verification</h2>\n<h3 id=\"id-does-not-match-the-selfie\">ID Does Not Match the Selfie</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"failed\",\n  \"result\": \"not_verified\",\n  \"message\": \"Face verification failed. ID does not match the selfie.\",\n  \"engine_response\": {\n    \"verified\": false,\n    \"confidence\": 0,\n    \"decision\": \"failed\",\n    \"threshold\": 0.45,\n    \"status\": \"success\",\n    \"reason\": \"Face verification failed. ID does not match the selfie.\",\n    \"details\": {\n      \"distance\": 1.061641,\n      \"model\": \"Facenet\",\n      \"processing_time\": 7.11\n    }\n  },\n  \"billing\": {\n    \"charged\": 0,\n    \"currency\": \"USD\"\n  }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"validation-errors-engine-mapped\">Validation Errors (Engine-Mapped)</h2>\n<p>These errors are returned <strong>before verification</strong> and match the engine logic exactly.</p>\n<h3 id=\"two-selfies-uploaded\">Two Selfies Uploaded</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"failed\",\n  \"result\": \"id_required\",\n  \"message\": \"Please upload one ID image.\"\n}\n\n</code></pre>\n<h3 id=\"two-ids-uploaded\">Two IDs Uploaded</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"failed\",\n  \"result\": \"selfie_required\",\n  \"message\": \"Please upload one selfie image.\"\n}\n\n</code></pre>\n<h3 id=\"no-face-detected\">No Face Detected</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"failed\",\n  \"result\": \"invalid_image\",\n  \"message\": \"No clear face detected in one of the images.\"\n}\n\n</code></pre>\n<h3 id=\"invalid-selfie-multiple-faces\">Invalid Selfie (Multiple Faces)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"failed\",\n  \"result\": \"invalid_image\",\n  \"message\": \"Selfie image must contain exactly one clear face.\"\n}\n\n</code></pre>\n<hr />\n<h2 id=\"http-error-codes\">HTTP Error Codes</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Invalid input or image validation error</td>\n</tr>\n<tr>\n<td>401</td>\n<td>API key missing or invalid</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Account suspended</td>\n</tr>\n<tr>\n<td>402</td>\n<td>Insufficient balance (on successful match only)</td>\n</tr>\n<tr>\n<td>503</td>\n<td>Verification service unavailable</td>\n</tr>\n<tr>\n<td>504</td>\n<td>Verification service timeout</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"developer-notes\">Developer Notes</h2>\n<ul>\n<li><p>Always use <strong><code>engine_response.verified</code></strong> as the primary boolean result</p>\n</li>\n<li><p>Lower distance values indicate higher facial similarity</p>\n</li>\n<li><p>Billing occurs <strong>only when verification succeeds</strong></p>\n</li>\n<li><p>Internal engine URLs and raw errors are never exposed</p>\n</li>\n<li><p>This endpoint is safe for <strong>production identity workflows</strong></p>\n</li>\n</ul>\n<hr />\n<h2 id=\"postman-test-body-copy-paste\">Postman Test Body (Copy-Paste)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"img1\": \"https://your-domain.com/sample-id.jpg\",\n  \"img2\": \"https://your-domain.com/sample-selfie.jpg\"\n\n</code></pre>\n","urlObject":{"path":["v1","verify"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"1419c258-39ef-4f5d-b9ee-070f039a70d8","name":"Successful Verification","originalRequest":{"method":"POST","header":[{"key":"X-API-KEY","value":"YOUR_API_KEY","description":"Your API authentication key"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"img1\": \"https://deepface.sbs/img/person_a.jpg\",\n  \"img2\": \"https://deepface.sbs/img/person_b.jpg\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.deepface.sbs/v1/verify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"X-API-KEY","value":"YOUR_API_KEY","description":"Your API authentication key","enabled":true},{"key":"Content-Type","value":"application/json","description":"","enabled":true}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n  \"status\": \"success\",\n  \"result\": \"verified\",\n  \"message\": \"Face verification successful. ID matches the selfie.\",\n  \"engine_response\": {\n    \"confidence\": 100,\n    \"decision\": \"passed\",\n    \"details\": {\n      \"detector_backend\": \"opencv\",\n      \"distance\": 0,\n      \"facial_areas\": {\n        \"img1\": {\n          \"h\": 1380,\n          \"w\": 1380,\n          \"x\": 380,\n          \"y\": 1127,\n          \"left_eye\": [1313, 1647],\n          \"right_eye\": [798, 1705]\n        },\n        \"img2\": {\n          \"h\": 1380,\n          \"w\": 1380,\n          \"x\": 380,\n          \"y\": 1127,\n          \"left_eye\": [1313, 1647],\n          \"right_eye\": [798, 1705]\n        }\n      },\n      \"model\": \"Facenet\",\n      \"processing_time\": 11.06\n    },\n    \"reason\": \"Face verification successful. ID matches the selfie.\",\n    \"status\": \"success\",\n    \"threshold\": 0.45,\n    \"verified\": true\n  },\n  \"billing\": {\n    \"charged\": 0.25,\n    \"currency\": \"USD\"\n  }\n}\n"},{"id":"6f0413d6-6e02-493a-b8a3-213b995fc2fc","name":"Insufficient Balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"X-API-KEY","value":"your_valid_api_key_here"}],"body":{"mode":"raw","raw":"{\"img1\": \"https://example.com/same_person_1.jpg\", \"img2\": \"https://example.com/same_person_2.jpg\"}","options":{"raw":{"language":"json"}}},"url":"https://api.deepface.sbs/v1/verify"},"status":"Payment Required","code":402,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","enabled":true},{"key":"X-API-KEY","value":"your_valid_api_key_here","description":"","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Payment Required\",\n  \"message\": \"Insufficient balance to complete this verification. Please add credits to your account.\",\n  \"status\": 402,\n  \"current_balance\": 0.00,\n  \"required_amount\": 0.01\n}"},{"id":"d9c4a29b-2a16-403b-bcfe-e09aacf53c5f","name":"Invalid API Key","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"X-API-KEY","value":"invalid_api_key"}],"body":{"mode":"raw","raw":"{\"img1\": \"https://example.com/person_a.jpg\", \"img2\": \"https://example.com/person_b.jpg\"}","options":{"raw":{"language":"json"}}},"url":"https://api.deepface.sbs/v1/verify"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","enabled":true},{"key":"X-API-KEY","value":"invalid_api_key","description":"","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Unauthorized\",\n  \"message\": \"API key is missing or invalid. Please provide a valid API key in the X-API-KEY header.\",\n  \"status\": 401\n}"},{"id":"c1ae029c-f7f4-45ed-9490-626650621f26","name":"Failed Verification","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"X-API-KEY","value":"your_valid_api_key_here"}],"body":{"mode":"raw","raw":"{\"img1\": \"https://example.com/person_a.jpg\", \"img2\": \"https://example.com/person_b.jpg\"}","options":{"raw":{"language":"json"}}},"url":"https://api.deepface.sbs/v1/verify"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","enabled":true},{"key":"X-API-KEY","value":"your_valid_api_key_here","description":"","enabled":true}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n  \"status\": \"failed\",\n  \"result\": \"not_verified\",\n  \"message\": \"Face verification failed. ID does not match the selfie.\",\n  \"engine_response\": {\n    \"confidence\": 0,\n    \"decision\": \"failed\",\n    \"details\": {\n      \"detector_backend\": \"opencv\",\n      \"distance\": 1.061641,\n      \"facial_areas\": {\n        \"img1\": {\n          \"h\": 1380,\n          \"w\": 1380,\n          \"x\": 380,\n          \"y\": 1127,\n          \"left_eye\": [1313, 1647],\n          \"right_eye\": [798, 1705]\n        },\n        \"img2\": {\n          \"h\": 619,\n          \"w\": 619,\n          \"x\": 525,\n          \"y\": 215,\n          \"left_eye\": null,\n          \"right_eye\": null\n        }\n      },\n      \"model\": \"Facenet\",\n      \"processing_time\": 7.11\n    },\n    \"reason\": \"Face verification failed. ID does not match the selfie.\",\n    \"status\": \"success\",\n    \"threshold\": 0.45,\n    \"verified\": false\n  },\n  \"billing\": {\n    \"charged\": 0,\n    \"currency\": \"USD\"\n  }\n}\n"},{"id":"07e8b782-9c82-401a-ab52-418d8dad827d","name":"Account Suspended","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"X-API-KEY","value":"suspended_account_api_key"}],"body":{"mode":"raw","raw":"{\"img1\": \"https://example.com/person_a.jpg\", \"img2\": \"https://example.com/person_b.jpg\"}","options":{"raw":{"language":"json"}}},"url":"https://api.deepface.sbs/v1/verify"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","enabled":true},{"key":"X-API-KEY","value":"suspended_account_api_key","description":"","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n  \"error\": \"Forbidden\",\n  \"message\": \"Your account has been suspended. Please contact support to resolve this issue.\",\n  \"status\": 403\n}"}],"_postman_id":"add48f78-1eeb-499a-afc7-2bf83f8991a6"},{"name":"Face Analysis","id":"ded7235f-e2c6-4d3c-aa1b-304a74ffb378","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"image\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"actions\": [\"age\", \"gender\", \"race\", \"emotion\"]\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/v1/analyze?","description":"<h1 id=\"face-analysis\">Face Analysis</h1>\n<p>Face Analysis extracts facial attributes from a single image, including age, gender, race, and emotion.</p>\n<p>This endpoint is designed for:</p>\n<ul>\n<li><p>Demographic insights</p>\n</li>\n<li><p>Emotion detection</p>\n</li>\n<li><p>Content personalization</p>\n</li>\n<li><p>Analytics and research use-cases</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"how-it-works\">How it Works</h2>\n<p>The client submits one image and specifies which facial attributes to analyze.</p>\n<p>The system:</p>\n<ol>\n<li><p>Validates the image URL</p>\n</li>\n<li><p>Forwards the request to an internal DeepFace analysis engine</p>\n</li>\n<li><p>Detects faces in the image</p>\n</li>\n<li><p>Extracts the requested attributes</p>\n</li>\n<li><p>Returns structured analysis results</p>\n</li>\n</ol>\n<p>Billing is applied <strong>only when analysis succeeds</strong>.</p>\n<hr />\n<h2 id=\"authentication\">Authentication</h2>\n<h3 id=\"api-key-authentication-required\">API Key Authentication (Required)</h3>\n<p>All requests must include a valid API key in the request headers.</p>\n<h4 id=\"required-header\">Required Header</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>X-API-KEY: YOUR_API_KEY\n\n</code></pre><h3 id=\"authentication-rules\">Authentication Rules</h3>\n<ul>\n<li><p>API key must belong to an active account</p>\n</li>\n<li><p>Missing or invalid keys are rejected</p>\n</li>\n<li><p>Suspended accounts are blocked</p>\n</li>\n<li><p>Authentication occurs before processing or billing</p>\n</li>\n</ul>\n<h3 id=\"authentication-errors\">Authentication Errors</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>401</td>\n<td>API key missing or invalid</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Account suspended</td>\n</tr>\n<tr>\n<td>402</td>\n<td>Insufficient balance</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"billing-policy\">Billing Policy</h2>\n<ul>\n<li><p>Billing occurs only on successful analysis</p>\n</li>\n<li><p>Failed requests are not charged</p>\n</li>\n<li><p>Charged amount is returned in the response</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"api-base-url\">API Base URL</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">https://api.deepface.sbs\n\n</code></pre>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST /v1/analyze\n\n</code></pre>\n<h3 id=\"full-request-url\">Full Request URL</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST https://api.deepface.sbs/v1/analyze\n\n</code></pre>\n<h3 id=\"http-method\">HTTP Method</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST\n\n</code></pre>\n<p>JSON request bodies only.</p>\n<hr />\n<h2 id=\"headers\">Headers</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>X-API-KEY</td>\n<td>Yes</td>\n<td>Your API authentication key</td>\n</tr>\n<tr>\n<td>Content-Type</td>\n<td>Yes</td>\n<td>Must be <code>application/json</code></td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"example-request-curl\">Example Request (cURL)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl -X POST https://api.deepface.sbs/v1/analyze \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"image\": \"https://deepface.sbs/img/person.jpg\",\n    \"actions\": [\"age\", \"gender\", \"race\", \"emotion\"]\n  }'\n\n</code></pre>\n<hr />\n<h2 id=\"request-body\">Request Body</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"image\": \"https://deepface.sbs/img/person.jpg\",\n  \"actions\": [\"age\", \"gender\", \"race\", \"emotion\"]\n}\n\n</code></pre>\n<hr />\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>image</td>\n<td>string</td>\n<td>Yes</td>\n<td>Image URL or base64 string</td>\n</tr>\n<tr>\n<td>actions</td>\n<td>array</td>\n<td>Yes</td>\n<td>Facial attributes to analyze</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"supported-actions\">Supported Actions</h3>\n<ul>\n<li><p><code>age</code></p>\n</li>\n<li><p><code>gender</code></p>\n</li>\n<li><p><code>race</code></p>\n</li>\n<li><p><code>emotion</code></p>\n</li>\n</ul>\n<hr />\n<h2 id=\"response-example-success\">Response Example (Success)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"status\": \"success\",\n    \"result\": \"analysis_complete\",\n    \"message\": \"Facial analysis completed successfully\",\n    \"faces_detected\": 1,\n    \"results\": [\n        {\n            \"age\": [\n                {\n                    \"age\": 25,\n                    \"face_confidence\": 0.94,\n                    \"region\": {\n                        \"h\": 329,\n                        \"left_eye\": [\n                            325,\n                            402\n                        ],\n                        \"right_eye\": [\n                            191,\n                            417\n                        ],\n                        \"w\": 329,\n                        \"x\": 102,\n                        \"y\": 279\n                    }\n                }\n            ]\n        },\n        {\n            \"gender\": [\n                {\n                    \"dominant_gender\": \"Man\",\n                    \"face_confidence\": 0.94,\n                    \"gender\": {\n                        \"Man\": 99.51113891601562,\n                        \"Woman\": 0.48885825276374817\n                    },\n                    \"region\": {\n                        \"h\": 329,\n                        \"left_eye\": [\n                            325,\n                            402\n                        ],\n                        \"right_eye\": [\n                            191,\n                            417\n                        ],\n                        \"w\": 329,\n                        \"x\": 102,\n                        \"y\": 279\n                    }\n                }\n            ]\n        },\n        {\n            \"race\": [\n                {\n                    \"dominant_race\": \"black\",\n                    \"face_confidence\": 0.94,\n                    \"race\": {\n                        \"asian\": 2.379372254779355e-9,\n                        \"black\": 100,\n                        \"indian\": 7.843057119316654e-7,\n                        \"latino hispanic\": 2.931611176038018e-9,\n                        \"middle eastern\": 5.9640762956807234e-15,\n                        \"white\": 2.8509079184847394e-14\n                    },\n                    \"region\": {\n                        \"h\": 329,\n                        \"left_eye\": [\n                            325,\n                            402\n                        ],\n                        \"right_eye\": [\n                            191,\n                            417\n                        ],\n                        \"w\": 329,\n                        \"x\": 102,\n                        \"y\": 279\n                    }\n                }\n            ]\n        },\n        {\n            \"emotion\": [\n                {\n                    \"dominant_emotion\": \"neutral\",\n                    \"emotion\": {\n                        \"angry\": 5.36071252822876,\n                        \"disgust\": 0.3282541334629059,\n                        \"fear\": 7.490002632141113,\n                        \"happy\": 0.7017542719841003,\n                        \"neutral\": 78.49908447265625,\n                        \"sad\": 6.802980422973633,\n                        \"surprise\": 0.817212700843811\n                    },\n                    \"face_confidence\": 0.94,\n                    \"region\": {\n                        \"h\": 329,\n                        \"left_eye\": [\n                            325,\n                            402\n                        ],\n                        \"right_eye\": [\n                            191,\n                            417\n                        ],\n                        \"w\": 329,\n                        \"x\": 102,\n                        \"y\": 279\n                    }\n                }\n            ]\n        }\n    ],\n    \"billing\": {\n        \"charged\": 0.3,\n        \"currency\": \"USD\"\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Invalid request or image</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Account suspended</td>\n</tr>\n<tr>\n<td>402</td>\n<td>Insufficient balance</td>\n</tr>\n<tr>\n<td>503</td>\n<td>Analysis service unavailable</td>\n</tr>\n<tr>\n<td>504</td>\n<td>Analysis service timeout</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"notes\">Notes</h2>\n<ul>\n<li><p>Multiple faces may be detected</p>\n</li>\n<li><p>Each face is analyzed independently</p>\n</li>\n<li><p>Results are returned per requested action</p>\n</li>\n<li><p>Engine internals are never exposed</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","analyze"],"host":[""],"query":[{"key":"","value":null}],"variable":[]}},"response":[{"id":"97d0069e-c845-4221-a578-5ced708442b0","name":"Face Analysis","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"image\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"actions\": [\"age\", \"gender\", \"race\", \"emotion\"]\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":{"raw":"/v1/analyze?","host":[""],"path":["v1","analyze"],"query":[{"key":"","value":null}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Connection","value":"Keep-Alive"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"X-Powered-By","value":"PHP/8.3.19"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"733"},{"key":"Content-Encoding","value":"br"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Sat, 20 Dec 2025 02:42:10 GMT"},{"key":"Server","value":"LiteSpeed"},{"key":"platform","value":"hostinger"},{"key":"panel","value":"hpanel"},{"key":"Content-Security-Policy","value":"upgrade-insecure-requests"},{"key":"alt-svc","value":"h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\""}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"result\": \"analysis_complete\",\n    \"message\": \"Facial analysis completed successfully\",\n    \"faces_detected\": 1,\n    \"results\": [\n        {\n            \"age\": [\n                {\n                    \"age\": 25,\n                    \"face_confidence\": 0.94,\n                    \"region\": {\n                        \"h\": 329,\n                        \"left_eye\": [\n                            325,\n                            402\n                        ],\n                        \"right_eye\": [\n                            191,\n                            417\n                        ],\n                        \"w\": 329,\n                        \"x\": 102,\n                        \"y\": 279\n                    }\n                }\n            ]\n        },\n        {\n            \"gender\": [\n                {\n                    \"dominant_gender\": \"Man\",\n                    \"face_confidence\": 0.94,\n                    \"gender\": {\n                        \"Man\": 99.51113891601562,\n                        \"Woman\": 0.48885825276374817\n                    },\n                    \"region\": {\n                        \"h\": 329,\n                        \"left_eye\": [\n                            325,\n                            402\n                        ],\n                        \"right_eye\": [\n                            191,\n                            417\n                        ],\n                        \"w\": 329,\n                        \"x\": 102,\n                        \"y\": 279\n                    }\n                }\n            ]\n        },\n        {\n            \"race\": [\n                {\n                    \"dominant_race\": \"black\",\n                    \"face_confidence\": 0.94,\n                    \"race\": {\n                        \"asian\": 2.379372254779355e-9,\n                        \"black\": 100,\n                        \"indian\": 7.843057119316654e-7,\n                        \"latino hispanic\": 2.931611176038018e-9,\n                        \"middle eastern\": 5.9640762956807234e-15,\n                        \"white\": 2.8509079184847394e-14\n                    },\n                    \"region\": {\n                        \"h\": 329,\n                        \"left_eye\": [\n                            325,\n                            402\n                        ],\n                        \"right_eye\": [\n                            191,\n                            417\n                        ],\n                        \"w\": 329,\n                        \"x\": 102,\n                        \"y\": 279\n                    }\n                }\n            ]\n        },\n        {\n            \"emotion\": [\n                {\n                    \"dominant_emotion\": \"neutral\",\n                    \"emotion\": {\n                        \"angry\": 5.36071252822876,\n                        \"disgust\": 0.3282541334629059,\n                        \"fear\": 7.490002632141113,\n                        \"happy\": 0.7017542719841003,\n                        \"neutral\": 78.49908447265625,\n                        \"sad\": 6.802980422973633,\n                        \"surprise\": 0.817212700843811\n                    },\n                    \"face_confidence\": 0.94,\n                    \"region\": {\n                        \"h\": 329,\n                        \"left_eye\": [\n                            325,\n                            402\n                        ],\n                        \"right_eye\": [\n                            191,\n                            417\n                        ],\n                        \"w\": 329,\n                        \"x\": 102,\n                        \"y\": 279\n                    }\n                }\n            ]\n        }\n    ],\n    \"billing\": {\n        \"charged\": 0.3,\n        \"currency\": \"USD\"\n    }\n}"}],"_postman_id":"ded7235f-e2c6-4d3c-aa1b-304a74ffb378"},{"name":"Look-Alike","id":"00640a01-7b42-4082-a728-c2b6ea786457","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"img1\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"img2\": \"https://images.ctfassets.net/xjcz23wx147q/iegram9XLv7h3GemB5vUR/0345811de2da23fafc79bd00b8e5f1c6/Max_Rehkopf_200x200.jpeg\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/v1/lookalike","description":"<h1 id=\"look-alike--celebrity-match\">Look-Alike / Celebrity Match</h1>\n<p>The Look-Alike API compares two faces and determines how similar they are.</p>\n<p>This endpoint is built for:</p>\n<ul>\n<li><p>Look-alike apps</p>\n</li>\n<li><p>Celebrity matching</p>\n</li>\n<li><p>Family resemblance detection</p>\n</li>\n<li><p>Fun &amp; social features</p>\n</li>\n</ul>\n<p>⚠️ <strong>Low similarity is NOT an error</strong> — it is a valid result.</p>\n<hr />\n<h2 id=\"how-it-works\">How it Works</h2>\n<p>The client submits two images:</p>\n<ul>\n<li><p><code>img1</code> → Primary face</p>\n</li>\n<li><p><code>img2</code> → Comparison face</p>\n</li>\n</ul>\n<p>The system:</p>\n<ol>\n<li><p>Validates both images</p>\n</li>\n<li><p>Extracts facial features</p>\n</li>\n<li><p>Compares similarity vectors</p>\n</li>\n<li><p>Calculates similarity score</p>\n</li>\n<li><p>Returns UI-ready feedback</p>\n</li>\n</ol>\n<p>Billing is applied <strong>only when a verified match occurs</strong>.</p>\n<hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>Same API key authentication rules as other endpoints.</p>\n<hr />\n<h2 id=\"billing-policy\">Billing Policy</h2>\n<ul>\n<li><p>Billing occurs <strong>only when</strong> <strong><code>verified = true</code></strong></p>\n</li>\n<li><p>Low or no resemblance is not charged</p>\n</li>\n<li><p>Billing info is returned in the response</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST /v1/lookalike\n\n</code></pre>\n<h3 id=\"full-request-url\">Full Request URL</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST https://api.deepface.sbs/v1/lookalike\n\n</code></pre>\n<hr />\n<h2 id=\"example-request-curl\">Example Request (cURL)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl -X POST https://api.deepface.sbs/v1/lookalike \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"img1\": \"https://deepface.sbs/img/person_a.jpg\",\n    \"img2\": \"https://deepface.sbs/img/person_b.jpg\"\n  }'\n\n</code></pre>\n<hr />\n<h2 id=\"request-body\">Request Body</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">{\n  \"img1\": \"https://deepface.sbs/img/person_a.jpg\",\n  \"img2\": \"https://deepface.sbs/img/person_b.jpg\"\n}\n\n</code></pre>\n<hr />\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>img1</td>\n<td>string</td>\n<td>Yes</td>\n<td>First face image</td>\n</tr>\n<tr>\n<td>img2</td>\n<td>string</td>\n<td>Yes</td>\n<td>Second face image</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-example-strong-resemblance\">Response Example (Strong Resemblance)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"status\": \"success\",\n    \"result\": \"comparison_complete\",\n    \"message\": \"Face comparison completed\",\n    \"similarity\": 100,\n    \"similarity_label\": \"very_high\",\n    \"verified\": true,\n    \"ui_hint\": {\n        \"emoji\": \"👨‍👩‍👧\",\n        \"message\": \"Strong resemblance\"\n    },\n    \"billing\": {\n        \"charged\": 0.2,\n        \"currency\": \"USD\"\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"response-example-low-resemblance\">Response Example (Low Resemblance)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"status\": \"success\",\n    \"result\": \"comparison_complete\",\n    \"message\": \"Face comparison completed\",\n    \"similarity\": 0,\n    \"similarity_label\": \"low\",\n    \"verified\": false,\n    \"ui_hint\": {\n        \"emoji\": \"😅\",\n        \"message\": \"Low resemblance\"\n    },\n    \"billing\": {\n        \"charged\": 0,\n        \"currency\": \"USD\"\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"response-fields\">Response Fields</h2>\n<h3 id=\"top-level-fields\">Top-Level Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Request status</td>\n</tr>\n<tr>\n<td>result</td>\n<td>string</td>\n<td>comparison_complete</td>\n</tr>\n<tr>\n<td>similarity</td>\n<td>number</td>\n<td>Similarity score (0–100)</td>\n</tr>\n<tr>\n<td>similarity_label</td>\n<td>string</td>\n<td>low / medium / high / very_high</td>\n</tr>\n<tr>\n<td>verified</td>\n<td>boolean</td>\n<td>Whether faces strongly match</td>\n</tr>\n<tr>\n<td>ui_hint</td>\n<td>object</td>\n<td>Emoji &amp; UI feedback</td>\n</tr>\n<tr>\n<td>billing</td>\n<td>object</td>\n<td>Billing details</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Invalid image or request</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Account suspended</td>\n</tr>\n<tr>\n<td>402</td>\n<td>Insufficient balance</td>\n</tr>\n<tr>\n<td>503</td>\n<td>Look-alike service unavailable</td>\n</tr>\n<tr>\n<td>504</td>\n<td>Look-alike service timeout</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"developer-tips\">Developer Tips</h2>\n<ul>\n<li><p>Treat <strong>all look-alike responses as valid results</strong></p>\n</li>\n<li><p>Use <code>similarity_label</code> for UI messaging</p>\n</li>\n<li><p>Use <code>verified</code> for billing or unlock logic</p>\n</li>\n<li><p>Ideal for viral, fun applications</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","lookalike"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"0ff20020-da53-4e42-b99d-d07ccb0447ce","name":"Look-Alike / Celebrity Match","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"img1\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"img2\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/v1/lookalike"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Connection","value":"Keep-Alive"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"X-Powered-By","value":"PHP/8.3.19"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"258"},{"key":"Content-Encoding","value":"br"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Sat, 20 Dec 2025 02:45:14 GMT"},{"key":"Server","value":"LiteSpeed"},{"key":"platform","value":"hostinger"},{"key":"panel","value":"hpanel"},{"key":"Content-Security-Policy","value":"upgrade-insecure-requests"},{"key":"alt-svc","value":"h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\""}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"result\": \"comparison_complete\",\n    \"message\": \"Face comparison completed\",\n    \"similarity\": 100,\n    \"similarity_label\": \"very_high\",\n    \"verified\": true,\n    \"ui_hint\": {\n        \"emoji\": \"👨\\u200d👩\\u200d👧\",\n        \"message\": \"Strong resemblance\"\n    },\n    \"billing\": {\n        \"charged\": 0.2,\n        \"currency\": \"USD\"\n    }\n}"},{"id":"c9446fd9-3d50-457f-bfeb-e1f8bf657529","name":"Look-Alike / Celebrity Match","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"img1\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"img2\": \"https://images.ctfassets.net/xjcz23wx147q/iegram9XLv7h3GemB5vUR/0345811de2da23fafc79bd00b8e5f1c6/Max_Rehkopf_200x200.jpeg\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/v1/lookalike"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Connection","value":"Keep-Alive"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"X-Powered-By","value":"PHP/8.3.19"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"233"},{"key":"Content-Encoding","value":"br"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Sat, 20 Dec 2025 02:46:36 GMT"},{"key":"Server","value":"LiteSpeed"},{"key":"platform","value":"hostinger"},{"key":"panel","value":"hpanel"},{"key":"Content-Security-Policy","value":"upgrade-insecure-requests"},{"key":"alt-svc","value":"h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\""}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"result\": \"comparison_complete\",\n    \"message\": \"Face comparison completed\",\n    \"similarity\": 0,\n    \"similarity_label\": \"low\",\n    \"verified\": false,\n    \"ui_hint\": {\n        \"emoji\": \"😅\",\n        \"message\": \"Low resemblance\"\n    },\n    \"billing\": {\n        \"charged\": 0,\n        \"currency\": \"USD\"\n    }\n}"}],"_postman_id":"00640a01-7b42-4082-a728-c2b6ea786457"},{"name":"Celebrity Look-Alike","id":"045fbca4-9a17-4fd7-8790-6a657980a3f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"img1\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"img2\": \"https://images.ctfassets.net/xjcz23wx147q/iegram9XLv7h3GemB5vUR/0345811de2da23fafc79bd00b8e5f1c6/Max_Rehkopf_200x200.jpeg\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/v1/lookalike","description":"<h1 id=\"look-alike--celebrity-match\">Look-Alike / Celebrity Match</h1>\n<p>The Look-Alike API compares two faces and determines how similar they are.</p>\n<p>This endpoint is built for:</p>\n<ul>\n<li><p>Look-alike apps</p>\n</li>\n<li><p>Celebrity matching</p>\n</li>\n<li><p>Family resemblance detection</p>\n</li>\n<li><p>Fun &amp; social features</p>\n</li>\n</ul>\n<p>⚠️ <strong>Low similarity is NOT an error</strong> — it is a valid result.</p>\n<hr />\n<h2 id=\"how-it-works\">How it Works</h2>\n<p>The client submits two images:</p>\n<ul>\n<li><p><code>img1</code> → Primary face</p>\n</li>\n<li><p><code>img2</code> → Comparison face</p>\n</li>\n</ul>\n<p>The system:</p>\n<ol>\n<li><p>Validates both images</p>\n</li>\n<li><p>Extracts facial features</p>\n</li>\n<li><p>Compares similarity vectors</p>\n</li>\n<li><p>Calculates similarity score</p>\n</li>\n<li><p>Returns UI-ready feedback</p>\n</li>\n</ol>\n<p>Billing is applied <strong>only when a verified match occurs</strong>.</p>\n<hr />\n<h2 id=\"authentication\">Authentication</h2>\n<p>Same API key authentication rules as other endpoints.</p>\n<hr />\n<h2 id=\"billing-policy\">Billing Policy</h2>\n<ul>\n<li><p>Billing occurs <strong>only when</strong> <strong><code>verified = true</code></strong></p>\n</li>\n<li><p>Low or no resemblance is not charged</p>\n</li>\n<li><p>Billing info is returned in the response</p>\n</li>\n</ul>\n<hr />\n<h2 id=\"endpoint\">Endpoint</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST /v1/lookalike\n\n</code></pre>\n<h3 id=\"full-request-url\">Full Request URL</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">POST https://api.deepface.sbs/v1/lookalike\n\n</code></pre>\n<hr />\n<h2 id=\"example-request-curl\">Example Request (cURL)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">curl -X POST https://api.deepface.sbs/v1/lookalike \\\n  -H \"X-API-KEY: YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"img1\": \"https://deepface.sbs/img/person_a.jpg\",\n    \"img2\": \"https://deepface.sbs/img/person_b.jpg\"\n  }'\n\n</code></pre>\n<hr />\n<h2 id=\"request-body\">Request Body</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">{\n  \"img1\": \"https://deepface.sbs/img/person_a.jpg\",\n  \"img2\": \"https://deepface.sbs/img/person_b.jpg\"\n}\n\n</code></pre>\n<hr />\n<h2 id=\"request-parameters\">Request Parameters</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>img1</td>\n<td>string</td>\n<td>Yes</td>\n<td>First face image</td>\n</tr>\n<tr>\n<td>img2</td>\n<td>string</td>\n<td>Yes</td>\n<td>Second face image</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"response-example-strong-resemblance\">Response Example (Strong Resemblance)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"status\": \"success\",\n    \"result\": \"comparison_complete\",\n    \"message\": \"Face comparison completed\",\n    \"similarity\": 100,\n    \"similarity_label\": \"very_high\",\n    \"verified\": true,\n    \"ui_hint\": {\n        \"emoji\": \"👨‍👩‍👧\",\n        \"message\": \"Strong resemblance\"\n    },\n    \"billing\": {\n        \"charged\": 0.2,\n        \"currency\": \"USD\"\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"response-example-low-resemblance\">Response Example (Low Resemblance)</h2>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"status\": \"success\",\n    \"result\": \"comparison_complete\",\n    \"message\": \"Face comparison completed\",\n    \"similarity\": 0,\n    \"similarity_label\": \"low\",\n    \"verified\": false,\n    \"ui_hint\": {\n        \"emoji\": \"😅\",\n        \"message\": \"Low resemblance\"\n    },\n    \"billing\": {\n        \"charged\": 0,\n        \"currency\": \"USD\"\n    }\n}\n\n</code></pre>\n<hr />\n<h2 id=\"response-fields\">Response Fields</h2>\n<h3 id=\"top-level-fields\">Top-Level Fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>status</td>\n<td>string</td>\n<td>Request status</td>\n</tr>\n<tr>\n<td>result</td>\n<td>string</td>\n<td>comparison_complete</td>\n</tr>\n<tr>\n<td>similarity</td>\n<td>number</td>\n<td>Similarity score (0–100)</td>\n</tr>\n<tr>\n<td>similarity_label</td>\n<td>string</td>\n<td>low / medium / high / very_high</td>\n</tr>\n<tr>\n<td>verified</td>\n<td>boolean</td>\n<td>Whether faces strongly match</td>\n</tr>\n<tr>\n<td>ui_hint</td>\n<td>object</td>\n<td>Emoji &amp; UI feedback</td>\n</tr>\n<tr>\n<td>billing</td>\n<td>object</td>\n<td>Billing details</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"error-responses\">Error Responses</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>HTTP Code</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>400</td>\n<td>Invalid image or request</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Unauthorized</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Account suspended</td>\n</tr>\n<tr>\n<td>402</td>\n<td>Insufficient balance</td>\n</tr>\n<tr>\n<td>503</td>\n<td>Look-alike service unavailable</td>\n</tr>\n<tr>\n<td>504</td>\n<td>Look-alike service timeout</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"developer-tips\">Developer Tips</h2>\n<ul>\n<li><p>Treat <strong>all look-alike responses as valid results</strong></p>\n</li>\n<li><p>Use <code>similarity_label</code> for UI messaging</p>\n</li>\n<li><p>Use <code>verified</code> for billing or unlock logic</p>\n</li>\n<li><p>Ideal for viral, fun applications</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","lookalike"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"b43a536e-3dcc-4469-a962-556bd3f1d195","name":"Look-Alike / Celebrity Match","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"img1\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"img2\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/v1/lookalike"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Connection","value":"Keep-Alive"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"X-Powered-By","value":"PHP/8.3.19"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"258"},{"key":"Content-Encoding","value":"br"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Sat, 20 Dec 2025 02:45:14 GMT"},{"key":"Server","value":"LiteSpeed"},{"key":"platform","value":"hostinger"},{"key":"panel","value":"hpanel"},{"key":"Content-Security-Policy","value":"upgrade-insecure-requests"},{"key":"alt-svc","value":"h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\""}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"result\": \"comparison_complete\",\n    \"message\": \"Face comparison completed\",\n    \"similarity\": 100,\n    \"similarity_label\": \"very_high\",\n    \"verified\": true,\n    \"ui_hint\": {\n        \"emoji\": \"👨\\u200d👩\\u200d👧\",\n        \"message\": \"Strong resemblance\"\n    },\n    \"billing\": {\n        \"charged\": 0.2,\n        \"currency\": \"USD\"\n    }\n}"},{"id":"812a8160-0ffe-4c39-a55d-1a279660c397","name":"Look-Alike / Celebrity Match","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"df_live_ecK82O6TiCVJwAgtwnDMnAgZRBcw3h_T-E41Mvr4m2c","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"img1\": \"https://pis.center/api/uploads/68a4ad9f79e2e.jpg\",\r\n  \"img2\": \"https://images.ctfassets.net/xjcz23wx147q/iegram9XLv7h3GemB5vUR/0345811de2da23fafc79bd00b8e5f1c6/Max_Rehkopf_200x200.jpeg\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"/v1/lookalike"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Connection","value":"Keep-Alive"},{"key":"Keep-Alive","value":"timeout=5, max=100"},{"key":"X-Powered-By","value":"PHP/8.3.19"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"233"},{"key":"Content-Encoding","value":"br"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Sat, 20 Dec 2025 02:46:36 GMT"},{"key":"Server","value":"LiteSpeed"},{"key":"platform","value":"hostinger"},{"key":"panel","value":"hpanel"},{"key":"Content-Security-Policy","value":"upgrade-insecure-requests"},{"key":"alt-svc","value":"h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\""}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"result\": \"comparison_complete\",\n    \"message\": \"Face comparison completed\",\n    \"similarity\": 0,\n    \"similarity_label\": \"low\",\n    \"verified\": false,\n    \"ui_hint\": {\n        \"emoji\": \"😅\",\n        \"message\": \"Low resemblance\"\n    },\n    \"billing\": {\n        \"charged\": 0,\n        \"currency\": \"USD\"\n    }\n}"}],"_postman_id":"045fbca4-9a17-4fd7-8790-6a657980a3f0"}],"variable":[{"key":"baseURL","value":"","type":"default"}]}