openapi: 3.0.3 info: title: 'Link Shield API Documentation' description: 'API platform that leverages the power of AI to detect malicious URLs and protect your online security.' version: 1.0.0 servers: - url: 'https://linkshieldapi.com' paths: /api/v1/link/score: post: summary: 'Score a URL for threats.' operationId: scoreAURLForThreats description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: id: 123 url: 'https://example.xyz' tag: your_tag_here risk_score: 12 reason: 'Suspicious TLD (.xyz)' domain_flagged: false url_flagged: false ai_flagged: false flagged_categories: - phishing final_url: 'https://example.xyz/login' created_at: '2024-01-01T12:00:00.000000Z' updated_at: '2024-01-01T12:00:00.000000Z' properties: id: type: integer example: 123 url: type: string example: 'https://example.xyz' tag: type: string example: your_tag_here risk_score: type: integer example: 12 reason: type: string example: 'Suspicious TLD (.xyz)' domain_flagged: type: boolean example: false url_flagged: type: boolean example: false ai_flagged: type: boolean example: false flagged_categories: type: array example: - phishing items: type: string final_url: type: string example: 'https://example.xyz/login' created_at: type: string example: '2024-01-01T12:00:00.000000Z' updated_at: type: string example: '2024-01-01T12:00:00.000000Z' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: url: type: string description: 'The URL to scan.' example: 'https://example.com' tag: type: string description: 'Optional. Tag to associate with the scan (e.g., a URL).' example: your_tag_here follow_redirects: type: boolean description: 'Optional. Follow redirects and score the final URL.' example: false categories: type: array description: 'Optional. Categories to scan. Allowed: phishing, malware, scam, adult, dating, gambling, crypto, spam. If omitted or empty, scans all categories.' example: - phishing - malware - scam - adult - dating - gambling - crypto - spam items: type: string required: - url /api/v1/link/bulk-score: post: summary: 'Score multiple URLs for threats.' operationId: scoreMultipleURLsForThreats description: '' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: scores: - id: 123 url: 'https://example.xyz' tag: your_tag_here risk_score: 12 reason: 'Suspicious TLD (.xyz)' domain_flagged: false url_flagged: false ai_flagged: false flagged_categories: - phishing final_url: 'https://example.xyz/login' created_at: '2024-01-01T12:00:00.000000Z' updated_at: '2024-01-01T12:00:00.000000Z' properties: scores: type: array example: - id: 123 url: 'https://example.xyz' tag: your_tag_here risk_score: 12 reason: 'Suspicious TLD (.xyz)' domain_flagged: false url_flagged: false ai_flagged: false flagged_categories: - phishing final_url: 'https://example.xyz/login' created_at: '2024-01-01T12:00:00.000000Z' updated_at: '2024-01-01T12:00:00.000000Z' items: type: object properties: id: type: integer example: 123 url: type: string example: 'https://example.xyz' tag: type: string example: your_tag_here risk_score: type: integer example: 12 reason: type: string example: 'Suspicious TLD (.xyz)' domain_flagged: type: boolean example: false url_flagged: type: boolean example: false ai_flagged: type: boolean example: false flagged_categories: type: array example: - phishing items: type: string final_url: type: string example: 'https://example.xyz/login' created_at: type: string example: '2024-01-01T12:00:00.000000Z' updated_at: type: string example: '2024-01-01T12:00:00.000000Z' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: urls: type: array description: 'List of URLs to scan (max 10).' example: - 'https://example.com' - 'https://bad.test' items: type: string follow_redirects: type: boolean description: 'Optional. Follow redirects and score the final URL.' example: false categories: type: array description: 'Optional. Categories to scan. Allowed: phishing, malware, scam, adult, dating, gambling, crypto, spam. If omitted or empty, scans all categories.' example: - phishing - malware - scam - adult - dating - gambling - crypto - spam items: type: string required: - urls /api/v1/link/list: get: summary: 'List threat logs for the authenticated user.' operationId: listThreatLogsForTheAuthenticatedUser description: '' parameters: - in: query name: page description: 'Optional. Page number for pagination.' example: 1 required: false schema: type: integer description: 'Optional. Page number for pagination.' example: 1 - in: query name: tag description: 'Optional. Filter logs by tag (exact match).' example: tag-123 required: false schema: type: string description: 'Optional. Filter logs by tag (exact match).' example: tag-123 - in: query name: flagged_categories description: 'Optional. Filter logs by flagged categories (any match).' example: - phishing - scam required: false schema: type: array description: 'Optional. Filter logs by flagged categories (any match).' example: - phishing - scam items: type: string - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: current_page: 1 data: - id: 123 url: 'https://example.xyz' tag: your_tag_here risk_score: 12 reason: 'Suspicious TLD (.xyz)' domain_flagged: false url_flagged: false ai_flagged: false flagged_categories: - phishing final_url: 'https://example.xyz/login' created_at: '2024-01-01T12:00:00.000000Z' updated_at: '2024-01-01T12:00:00.000000Z' first_page_url: 'https://example.test/api/v1/link/list?page=1' from: 1 next_page_url: null path: 'https://example.test/api/v1/link/list' per_page: 15 prev_page_url: null to: 1 properties: current_page: type: integer example: 1 data: type: array example: - id: 123 url: 'https://example.xyz' tag: your_tag_here risk_score: 12 reason: 'Suspicious TLD (.xyz)' domain_flagged: false url_flagged: false ai_flagged: false flagged_categories: - phishing final_url: 'https://example.xyz/login' created_at: '2024-01-01T12:00:00.000000Z' updated_at: '2024-01-01T12:00:00.000000Z' items: type: object properties: id: type: integer example: 123 url: type: string example: 'https://example.xyz' tag: type: string example: your_tag_here risk_score: type: integer example: 12 reason: type: string example: 'Suspicious TLD (.xyz)' domain_flagged: type: boolean example: false url_flagged: type: boolean example: false ai_flagged: type: boolean example: false flagged_categories: type: array example: - phishing items: type: string final_url: type: string example: 'https://example.xyz/login' created_at: type: string example: '2024-01-01T12:00:00.000000Z' updated_at: type: string example: '2024-01-01T12:00:00.000000Z' first_page_url: type: string example: 'https://example.test/api/v1/link/list?page=1' from: type: integer example: 1 next_page_url: type: string example: null path: type: string example: 'https://example.test/api/v1/link/list' per_page: type: integer example: 15 prev_page_url: type: string example: null to: type: integer example: 1 tags: - Endpoints tags: - name: Endpoints description: '' components: securitySchemes: default: type: http scheme: bearer description: '' security: - default: []