{"openapi":"3.1.0","info":{"title":"OSINT Trace API","description":"\n## High-Performance OSINT Intelligence API\n\nWelcome to the **OSINT Trace API** developer documentation. This service provides high-performance, asynchronous OSINT intelligence endpoints to verify identifier existence (emails, usernames, phone numbers) across major social media networks and online platforms.\n\n---\n\n### 🔑 Authentication\n\nAll check endpoints require authentication using your personal API key passed via the HTTP request header:\n\n```http\nx-osint-key: your_api_key_here\n```\n\nAPI keys can be generated and managed from your developer dashboard. Every API key inherits the product subscriptions and quotas associated with your user account.\n\n---\n\n### 📦 Subscription-First Architecture\n\nThe OSINT Trace platform uses a **per-product subscription model**:\n- **Active Subscription Required**: To execute checks for any product, your user account must have an active subscription tier (`Free`, `Starter`, `Premium`, or `Enterprise`) for that specific product (e.g., Social Media, Google, Facebook, WhatsApp, Amazon, Microsoft, etc.).\n- **Independent Quota Pools**: Quotas are allocated and tracked per product. API checks consume quota from the corresponding product's balance only upon successful completion (2xx status).\n- **Insufficient Quota / Subscription Inactive**: If your quota is exhausted or if you do not have an active subscription for the target product, the API returns `403 Forbidden`.\n- **Explore & Subscribe**: Check `GET /pricing` to inspect product tiers and features, and `GET /subscriptions` to monitor your current active plans and remaining quota.\n\n---\n\n### 🌐 Social Media Scanner Coverage\n\nThe multi-platform check endpoint (`POST /v1/check`) scans **6 core platforms concurrently by default**:\n1. **Google** (`google`)\n2. **Microsoft** (`microsoft`)\n3. **Facebook** (`facebook`)\n4. **Instagram** (`instagram`)\n5. **Snapchat** (`snapchat`)\n6. **X / Twitter** (`x`)\n\n- **Default Execution**: If the `programs` parameter is omitted or passed as `null`, **all 6 platforms** are scanned simultaneously.\n- **Selective Filtering**: You can optionally pass a subset array of `programs` (e.g., `[\"google\", \"x\"]`) to query specific platforms from the supported suite.\n\n---\n\n### ⏱️ Rate Limiting & Concurrency\n\n- **Rate Limit**: Standard endpoints are rate-limited to **1 request per second** (`1 req/s`) per client.\n- **Retry-After**: Exceeding the rate limit returns `429 Too Many Requests` with a `Retry-After: <seconds>` header.\n- **Bulk Operations**: For batch processing up to 10,000 items, use the asynchronous bulk endpoint (`POST /v1/check_bulk_async`) and stream real-time progress via Server-Sent Events (`GET /v1/stream/{job_id}`).\n\n---\n\n### 🚦 HTTP Status Code Reference\n\n| Status Code | Description | Rationale |\n|:---|:---|:---|\n| **`200 OK`** | Success | Query completed and presence results returned. |\n| **`400 Bad Request`** | Validation Error | Malformed request body or invalid parameters. |\n| **`401 Unauthorized`** | Authentication Required | Missing, invalid, or expired `x-osint-key` header. |\n| **`403 Forbidden`** | Quota / Subscription Error | Monthly quota exhausted or no active subscription for the requested product. |\n| **`408 Request Timeout`** | Timeout | Upstream platform check exceeded the 35-second ceiling. |\n| **`429 Too Many Requests`** | Rate Limit Exceeded | Exceeded the 1 request/second threshold. |\n| **`502 Bad Gateway`** | Upstream Error | Upstream target platform failed or timed out after exhausting all retries. |\n","version":"1.0.0"},"paths":{"/v1/check/whatsapp":{"post":{"tags":["checks"],"summary":"Check WhatsApp Phone Number & Business Status","description":"> ⚠️ **Subscription Required**: Requires an active **WhatsApp subscription**.\n\nVerifies WhatsApp phone numbers. Returns registration presence, Business vs Personal classification, verified badges, company names, high-res avatar pictures, and catalog links.","operationId":"check_whatsapp_v1_check_whatsapp_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppInput"}}},"required":true},"responses":{"200":{"description":"Presence check result and metadata for whatsapp.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for whatsapp."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"Upstream check on whatsapp failed after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check/microsoft":{"post":{"tags":["checks"],"summary":"Check Microsoft & Azure AD Account Existence","description":"> ⚠️ **Subscription Required**: Requires an active **Microsoft subscription**.\n\nVerifies Microsoft accounts across Personal MSA and Enterprise Azure AD directories. Returns tenant classification, SAML SSO federation URLs, and masked contact pivot data.","operationId":"check_microsoft_v1_check_microsoft_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MicrosoftInput"}}},"required":true},"responses":{"200":{"description":"Presence check result and metadata for microsoft.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MicrosoftCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for microsoft."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"Upstream check on microsoft failed after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check/snapchat":{"post":{"tags":["checks"],"summary":"Check Snapchat Account & 3D Bitmoji Profile","description":"> ⚠️ **Subscription Required**: Requires an active **Snapchat subscription**.\n\nVerifies Snapchat accounts by username, email, or phone. Returns 3D Bitmojis, display titles, subscriber counts, official Star badges, and vector Snapcode links.","operationId":"check_snapchat_v1_check_snapchat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapchatInput"}}},"required":true},"responses":{"200":{"description":"Presence check result and metadata for snapchat.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapchatCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for snapchat."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"Upstream check on snapchat failed after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check/instagram":{"post":{"tags":["checks"],"summary":"Check Instagram Account, User ID & Audience Metrics","description":"> ⚠️ **Subscription Required**: Requires an active **Instagram subscription**.\n\nVerifies Instagram account existence. Querying by username extracts numerical User ID, follower/following/post metrics, verified checkmarks, creator categories, and bio link.","operationId":"check_instagram_v1_check_instagram_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstagramInput"}}},"required":true},"responses":{"200":{"description":"Presence check result and metadata for instagram.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstagramCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for instagram."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"Upstream check on instagram failed after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check/facebook":{"post":{"tags":["checks"],"summary":"Check Facebook Account & Meta Accounts Center Links","description":"> ⚠️ **Subscription Required**: Requires an active **Facebook subscription**.\n\nVerifies Facebook account existence. Extracts numerical Profile IDs, HD profile photos, custom avatar flags, and linked Instagram accounts via Meta Accounts Center.","operationId":"check_facebook_v1_check_facebook_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacebookInput"}}},"required":true},"responses":{"200":{"description":"Presence check result and metadata for facebook.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacebookCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for facebook."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"Upstream check on facebook failed after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check/x":{"post":{"tags":["checks"],"summary":"Check X (Twitter) Profile & Account Age","description":"> ⚠️ **Subscription Required**: Requires an active **X (Twitter) subscription**.\n\nVerifies accounts on X / Twitter. Extracts profile descriptions, account creation join date, follower statistics, custom avatar indicators, and verification badges.","operationId":"check_x_v1_check_x_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XInput"}}},"required":true},"responses":{"200":{"description":"Presence check result and metadata for x.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for x."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"Upstream check on x failed after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check/amazon":{"post":{"tags":["checks"],"summary":"Check Amazon Customer, Author & Influencer Storefront","description":"> ⚠️ **Subscription Required**: Requires an active **Amazon subscription**.\n\nVerifies Amazon accounts. Distinguishes between Customer Accounts, Author Profiles, and Influencer Storefronts, and extracts masked contact information.","operationId":"check_amazon_v1_check_amazon_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmazonInput"}}},"required":true},"responses":{"200":{"description":"Presence check result and metadata for amazon.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmazonCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for amazon."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"Upstream check on amazon failed after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check/google":{"post":{"tags":["checks"],"summary":"Check Google Account & Gmail Inbox Deliverability","description":"> ⚠️ **Subscription Required**: Requires an active **Google subscription**.\n\nVerifies Google Accounts, Gmail addresses, and Google Workspace corporate mailboxes with real-time diagnostic status notes.","operationId":"check_google_v1_check_google_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleInput"}}},"required":true},"responses":{"200":{"description":"Presence check result and metadata for google.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for google."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"Upstream check on google failed after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check":{"post":{"tags":["checks"],"summary":"Check Identifier Across Social Media Networks [Requires Social Media Subscription]","description":"> ⚠️ **Subscription Required**: This endpoint requires an active **Social Media subscription** (Free, Starter, Premium, or Enterprise plan). Requests without an active subscription or with exhausted monthly quota will receive a `403 Forbidden` error.\n\nExecutes target OSINT presence checks across major social media networks for the **Social Media** product.\n\n### 🌐 Supported Platforms (Scanned Concurrently):\n- **Google** (`google`)\n- **Microsoft** (`microsoft`)\n- **Facebook** (`facebook`)\n- **Instagram** (`instagram`)\n- **Snapchat** (`snapchat`)\n- **X / Twitter** (`x`)\n\n### 📋 Execution Behavior:\n- **Default Scan**: If `programs` is omitted or passed as `null`, **all 6 platforms** are queried simultaneously.\n- **Selective Scan**: If `programs` is provided, only the specified subset of platforms will be queried.\n\n### 🔑 Authentication & Quota:\n- **API Key Header**: Pass your API key in the `x-osint-key` header.\n- **Quota Deduction**: Consumes **1 check** from your user's monthly **Social Media subscription quota** balance upon successful execution (2xx status).","operationId":"check_v1_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskInput"}}},"required":true},"responses":{"200":{"description":"Presence check results mapped by platform name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleCheckResult"}}}},"400":{"description":"Invalid input format or validation error."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or no active subscription for Social Media."},"408":{"description":"Request timed out after 35 seconds."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"502":{"description":"All requested platform checks failed upstream after exhausting retries."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/check_bulk_async":{"post":{"tags":["checks"],"summary":"Submit Asynchronous Bulk Check Job [Requires Product Subscription]","description":"> ⚠️ **Subscription & Quota Required**: This endpoint requires an active **product subscription** (default: **Social Media subscription**) with sufficient remaining monthly quota to cover the entire batch size (`len(inputs)`). If remaining quota is insufficient, a `403 Forbidden` error is returned immediately.\n\nSubmits a high-volume batch of target emails or usernames (up to 10,000 items) for asynchronous processing.\n\n### 🔄 Asynchronous Workflow Lifecycle:\n1. **Job Creation**: Submits target list and designated `product` (default: Social Media).\n2. **Quota Reservation**: Checks that your remaining monthly quota is sufficient for the entire batch size.\n3. **Background Worker**: Spawns background worker and returns `{ 'job_id': '...', 'status': 'pending' }` immediately.\n4. **Real-time Streaming**: Connect to `GET /v1/stream/{job_id}` to stream progress via Server-Sent Events (SSE).\n5. **Fetch Results**: Fetch final aggregated JSON results from `GET /v1/results/{job_id}` upon completion.\n\n### 🔑 Authentication:\n- **API Key Header**: Pass your API key in the `x-osint-key` header.","operationId":"check_bulk_async_v1_check_bulk_async_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskBulkAsyncInput"}}},"required":true},"responses":{"200":{"description":"Bulk check job queued successfully. Returns job_id and pending status.","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input format or batch size outside allowed limits (1-10,000)."},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"403":{"description":"Insufficient monthly quota or inactive subscription for the target product."},"429":{"description":"Rate limit exceeded (1 req/s). Check Retry-After header."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/stream/{job_id}":{"get":{"tags":["checks"],"summary":"Stream Bulk Check Progress (Server-Sent Events)","description":"Streams real-time execution progress of an ongoing bulk check job over an HTTP Server-Sent Events (SSE) connection.\n\n### 📡 Stream Message Format:\n```json\ndata: {\"progress\": 45, \"status\": \"processing\"}\n```\n- Stream closes automatically when `status` reaches `'completed'` or `'failed'`.","operationId":"stream_progress_v1_stream__job_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Active text/event-stream real-time SSE connection.","content":{"application/json":{"schema":{}}}},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"404":{"description":"Job not found or Redis cache expired."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/results/{job_id}":{"get":{"tags":["checks"],"summary":"Retrieve Bulk Check Results","description":"Fetches the completed JSON results for a bulk check background job by `job_id`.\n\n### 🔑 Requirements:\n- **Authentication**: Pass your API key in the `x-osint-key` header.","operationId":"get_bulk_results_v1_results__job_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Array of result items corresponding to all processed batch inputs.","content":{"application/json":{"schema":{}}}},"401":{"description":"Missing, invalid, or expired x-osint-key header."},"404":{"description":"Job results not ready or job still in progress."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/check_bulk/history":{"get":{"tags":["checks"],"summary":"Get User Bulk Check History","description":"Retrieves the chronological execution history of all bulk check jobs submitted by the authenticated user.\n\n### 🔑 Requirements:\n- **Authentication**: Pass your API key in the `x-osint-key` header.","operationId":"get_bulk_history_v1_check_bulk_history_get","responses":{"200":{"description":"List of user bulk check job records with status, progress, timestamps, and row counts.","content":{"application/json":{"schema":{}}}},"401":{"description":"Missing, invalid, or expired x-osint-key header."}},"security":[{"APIKeyHeader":[]}]}},"/v1/check_bulk/{job_id}":{"delete":{"tags":["checks"],"summary":"Delete Bulk Check Job Record and Results","description":"Permanently and irreversibly delete a bulk check job from Supabase and Redis (Clause 5.7).","operationId":"delete_bulk_job_v1_check_bulk__job_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Bulk Job V1 Check Bulk  Job Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pricing":{"get":{"tags":["pricing"],"summary":"Get Products & Pricing Catalog","description":"Retrieves live configuration for all available products, subscription tiers (Free, Starter, Premium, Enterprise), monthly quotas, rate limits, feature lists, and Paddle checkout price identifiers.","operationId":"get_pricing_pricing_get","responses":{"200":{"description":"Dictionary of product configurations keyed by product ID.","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/MergedProductConfig"},"type":"object","title":"Response Get Pricing Pricing Get"}}}}}}},"/subscriptions":{"get":{"tags":["subscriptions"],"summary":"Get Active User Subscriptions","description":"Retrieves active product subscriptions, tier levels, monthly quotas, used quotas, and remaining balances for the authenticated user. Pulls live data from billing provider (Paddle) with local fallback.","operationId":"get_subscriptions_subscriptions_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"product","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional product filter (e.g. 'social_media_checker', 'google')","title":"Product"},"description":"Optional product filter (e.g. 'social_media_checker', 'google')"}],"responses":{"200":{"description":"List of active product subscription records.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SubscriptionInfo"},"title":"Response Get Subscriptions Subscriptions Get"}}}},"401":{"description":"Authentication required (X-OSINT-Key header or Bearer JWT token)."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/subscriptions/cancel":{"post":{"tags":["subscriptions"],"summary":"Cancel a Product Subscription","description":"Cancels an active free or backend-managed subscription for a specific product. Preserves historical quota usage in Redis so that re-subscribing within the current cycle maintains an accurate remaining balance.","operationId":"cancel_subscription_subscriptions_cancel_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"product","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product identifier to cancel","title":"Product"},"description":"Product identifier to cancel"}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CancelSubscriptionRequest"},{"type":"null"}],"title":"Req Body"}}}},"responses":{"200":{"description":"Subscription canceled successfully.","content":{"application/json":{"schema":{}}}},"401":{"description":"Authentication required."},"404":{"description":"Product not found."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AmazonCheckResult":{"properties":{"live":{"type":"boolean","title":"Live"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/AmazonMetadata"},{"type":"null"}]}},"type":"object","title":"AmazonCheckResult"},"AmazonInput":{"properties":{"input":{"type":"string","minLength":3,"title":"Input","description":"Target Amazon email address, phone number, or vanity author/storefront handle","examples":["buyer@example.com","author_handle","+14155552671"]}},"type":"object","required":["input"],"title":"AmazonInput"},"AmazonMetadata":{"properties":{"account_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Type"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"masked_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Masked Phone"},"masked_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Masked Email"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","title":"AmazonMetadata"},"CancelSubscriptionRequest":{"properties":{"product":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product"}},"type":"object","title":"CancelSubscriptionRequest"},"FacebookCheckResult":{"properties":{"live":{"type":"boolean","title":"Live"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/FacebookMetadata"},{"type":"null"}]}},"type":"object","title":"FacebookCheckResult"},"FacebookInput":{"properties":{"input":{"type":"string","minLength":3,"title":"Input","description":"Target Facebook email address, phone number, or vanity username","examples":["user@example.com","+14155552671","johndoe"]}},"type":"object","required":["input"],"title":"FacebookInput"},"FacebookLinkedAccount":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"account_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Type"}},"type":"object","title":"FacebookLinkedAccount"},"FacebookMetadata":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"has_custom_avatar":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Custom Avatar"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"},"linked_accounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/FacebookLinkedAccount"},"type":"array"},{"type":"null"}],"title":"Linked Accounts"}},"type":"object","title":"FacebookMetadata"},"GoogleCheckResult":{"properties":{"live":{"type":"boolean","title":"Live"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"GoogleCheckResult"},"GoogleInput":{"properties":{"input":{"type":"string","minLength":3,"title":"Input","description":"Target Gmail address or Google Workspace email address","examples":["user@gmail.com","analyst@company.com"]}},"type":"object","required":["input"],"title":"GoogleInput"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InstagramCheckResult":{"properties":{"live":{"type":"boolean","title":"Live"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/InstagramMetadata"},{"type":"null"}]}},"type":"object","title":"InstagramCheckResult"},"InstagramInput":{"properties":{"input":{"type":"string","minLength":1,"title":"Input","description":"Target Instagram username handle, email address, or phone number","examples":["johndoe","user@example.com"]}},"type":"object","required":["input"],"title":"InstagramInput"},"InstagramMetadata":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"followers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers"},"following":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Following"},"posts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Posts"},"is_private":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Private"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"is_business":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Business"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"external_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Url"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","title":"InstagramMetadata"},"MergedProductConfig":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"tiers":{"additionalProperties":{"$ref":"#/components/schemas/MergedTierConfig"},"type":"object","title":"Tiers"}},"type":"object","required":["id","name","description","tiers"],"title":"MergedProductConfig","description":"Product configuration containing tiers and catalog metadata."},"MergedTierConfig":{"properties":{"name":{"type":"string","title":"Name"},"rate":{"type":"integer","title":"Rate"},"per":{"type":"integer","title":"Per"},"monthly_quota":{"type":"integer","title":"Monthly Quota"},"features":{"items":{"type":"string"},"type":"array","title":"Features","default":[]},"price_monthly":{"type":"number","title":"Price Monthly","default":0.0},"price_yearly":{"type":"number","title":"Price Yearly","default":0.0},"paddle_price_id_monthly":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paddle Price Id Monthly"},"paddle_price_id_yearly":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paddle Price Id Yearly"},"paddle_product_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paddle Product Id"}},"type":"object","required":["name","rate","per","monthly_quota"],"title":"MergedTierConfig","description":"Tier configuration including quotas, features, and Paddle pricing IDs."},"MicrosoftCheckResult":{"properties":{"live":{"type":"boolean","title":"Live"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/MicrosoftMetadata"},{"type":"null"}]}},"type":"object","title":"MicrosoftCheckResult"},"MicrosoftInput":{"properties":{"input":{"type":"string","minLength":3,"title":"Input","description":"Target Microsoft email address, phone number, or username","examples":["user@outlook.com","analyst@contoso.com","+14155552671"]}},"type":"object","required":["input"],"title":"MicrosoftInput"},"MicrosoftMetadata":{"properties":{"account_type":{"type":"string","title":"Account Type"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"masked_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Masked Phone"},"masked_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Masked Email"},"tenant_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tenant Type"},"federation_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Federation Url"},"auth_methods":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Auth Methods"}},"type":"object","title":"MicrosoftMetadata"},"ProgramName":{"type":"string","enum":["facebook","instagram","snapchat","x","google","microsoft","amazon","tiktok","telegram","whatsapp"],"title":"ProgramName"},"SingleCheckResult":{"properties":{"google":{"anyOf":[{"$ref":"#/components/schemas/GoogleCheckResult"},{"type":"null"}]},"microsoft":{"anyOf":[{"$ref":"#/components/schemas/MicrosoftCheckResult"},{"type":"null"}]},"facebook":{"anyOf":[{"$ref":"#/components/schemas/FacebookCheckResult"},{"type":"null"}]},"instagram":{"anyOf":[{"$ref":"#/components/schemas/InstagramCheckResult"},{"type":"null"}]},"snapchat":{"anyOf":[{"$ref":"#/components/schemas/SnapchatCheckResult"},{"type":"null"}]},"x":{"anyOf":[{"$ref":"#/components/schemas/XCheckResult"},{"type":"null"}]},"whatsapp":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppCheckResult"},{"type":"null"}]},"amazon":{"anyOf":[{"$ref":"#/components/schemas/AmazonCheckResult"},{"type":"null"}]}},"type":"object","title":"SingleCheckResult"},"SnapchatCheckResult":{"properties":{"live":{"type":"boolean","title":"Live"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/SnapchatMetadata"},{"type":"null"}]}},"type":"object","title":"SnapchatCheckResult"},"SnapchatInput":{"properties":{"input":{"type":"string","minLength":1,"title":"Input","description":"Target Snapchat username handle, email, or phone number","examples":["creator_handle","user@example.com","+14155552671"]}},"type":"object","required":["input"],"title":"SnapchatInput"},"SnapchatMetadata":{"properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"banner_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banner Url"},"followers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"snapcode_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snapcode Url"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","title":"SnapchatMetadata"},"SubscriptionInfo":{"properties":{"product":{"type":"string","title":"Product"},"plan":{"type":"string","title":"Plan"},"period":{"type":"string","title":"Period"},"monthly_quota":{"type":"integer","title":"Monthly Quota"},"quota_used":{"type":"integer","title":"Quota Used"},"quota_remaining":{"type":"integer","title":"Quota Remaining"},"rate_limit":{"type":"string","title":"Rate Limit"},"status":{"type":"string","title":"Status","default":"active"},"next_billing_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Billing At"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End","default":false},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Id"},"price_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Id"}},"type":"object","required":["product","plan","period","monthly_quota","quota_used","quota_remaining","rate_limit"],"title":"SubscriptionInfo"},"TaskBulkAsyncInput":{"properties":{"input":{"items":{"type":"string"},"type":"array","maxItems":10000,"minItems":1,"title":"Input","description":"List of target emails or usernames to process in asynchronous background batch (max 10,000)","examples":[["alice@example.com","bob@example.com","johndoe"]]},"product":{"type":"string","title":"Product","description":"Product identifier corresponding to your active subscription (e.g. 'social_media_checker', 'google', 'facebook', 'instagram', 'snapchat', 'x', 'microsoft', 'amazon', 'whatsapp')","default":"social_media_checker","examples":["social_media_checker"]},"programs":{"anyOf":[{"items":{"$ref":"#/components/schemas/ProgramName"},"type":"array"},{"type":"null"}],"title":"Programs","description":"Optional list of platforms to check. When omitted and product is 'social_media_checker', all 6 supported platforms (google, microsoft, facebook, instagram, snapchat, x) are checked.","examples":[["google","microsoft","facebook","instagram","snapchat","x"]]},"include_metadata":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Metadata","description":"Whether to include rich OSINT profile metadata in scan responses. If omitted, inherits from account settings."},"exclude_metadata":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude Metadata","description":"Inverse of include_metadata. When true, returns strictly binary indicators."}},"type":"object","required":["input"],"title":"TaskBulkAsyncInput"},"TaskInput":{"properties":{"programs":{"anyOf":[{"items":{"$ref":"#/components/schemas/ProgramName"},"type":"array"},{"type":"null"}],"title":"Programs","description":"Optional list of platforms to check. If omitted or null, all 6 supported platforms (google, microsoft, facebook, instagram, snapchat, x) will be checked concurrently.","examples":[["google","microsoft","facebook","instagram","snapchat","x"]]},"input":{"type":"string","minLength":3,"title":"Input","description":"Target email address or username to check across platforms","examples":["alice@example.com","johndoe"]}},"type":"object","required":["input"],"title":"TaskInput"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WhatsAppCheckResult":{"properties":{"live":{"type":"boolean","title":"Live"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/WhatsAppMetadata"},{"type":"null"}]}},"type":"object","title":"WhatsAppCheckResult"},"WhatsAppInput":{"properties":{"input":{"type":"string","minLength":5,"title":"Input","description":"Target phone number in international standard E.164 format (e.g. +14155552671)","examples":["+14155552671"]}},"type":"object","required":["input"],"title":"WhatsAppInput"},"WhatsAppMetadata":{"properties":{"is_business":{"type":"boolean","title":"Is Business"},"is_verified":{"type":"boolean","title":"Is Verified"},"account_type":{"type":"string","title":"Account Type"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"catalog_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Catalog Url"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","title":"WhatsAppMetadata"},"XCheckResult":{"properties":{"live":{"type":"boolean","title":"Live"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/XMetadata"},{"type":"null"}]}},"type":"object","title":"XCheckResult"},"XInput":{"properties":{"input":{"type":"string","minLength":1,"title":"Input","description":"Target X (Twitter) handle (@username) or registered email address","examples":["security_analyst","user@example.com"]}},"type":"object","required":["input"],"title":"XInput"},"XMetadata":{"properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bio"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"followers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers"},"following":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Following"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"has_custom_avatar":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Custom Avatar"},"profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Url"}},"type":"object","title":"XMetadata"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"x-osint-key","description":"API Key for product subscription authentication (pass in 'x-osint-key' header)"}}},"tags":[{"name":"checks","description":"OSINT intelligence check endpoints. Supports single-identifier checks, individual platform checks, and high-volume asynchronous bulk checks."},{"name":"pricing","description":"Public pricing table, product tiers, quotas, and feature specifications."},{"name":"subscriptions","description":"Active user product subscriptions, quota consumption, and billing management."}]}