{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"4b4b6aae-8137-461f-9fc3-5bb2ca161d8d","name":"Kalos API","description":"Stop AI-generated applications from slipping through your hiring process. Kalos gives you the competitive edge with 95% accuracy detection, saving your team hours of wasted interviews with inauthentic candidates.\n\n### Overview\n\n[Kalos](https://kalosats.com/) provides AI content detection services with the following features:\n\n- Text analysis for AI-generated content\n    \n- Bulk processing (Text, DOCX and PDF)\n    \n- Confidence scoring\n    \n- Language detection\n    \n- DOCX/PDF Text Extraction\n    \n- Threshold Configuration\n    \n- Historical analysis tracking\n    \n- API integration with ATS systems\n    \n\nOur RESTful API features:\n\n- Resource-oriented URLs\n    \n- JSON-encoded responses\n    \n- Standard HTTP response codes\n    \n\n### Authentication\n\nAuthenticate using API keys:\n\n- Required: `X-API-Key` header in each request\n    \n- Missing or invalid keys return `401 Unauthorized`\n    \n\n**Security Note:** Keep your API key secure and private.\n\n### API Resources\n\n**Text Analysis**\n\n`POST /v1/analyze`\n\nSubmit text for AI detection analysis:\n\n- Content-Type: `application/json`\n    \n- Required fields:\n    \n    - `text`: The content to analyze\n        \n    - `metadata`: Optional context\n        \n\nResponse includes:\n\n- `AI or Human`: Detect whether content is AI-generated or human written\n    \n- `Confidence Score`: Probability of AI generation\n    \n- `Language`: Detected language code (ISO 639-1)\n    \n- `Analysis Report`: Detailed findings\n    \n\n**Text Analysis - Bulk Processing**\n\n`POST /v1/analyze/bulk`\n\nSubmit multiple texts for batch AI detection analysis:\n\n- Content-Type: `application/json`\n    \n- Required fields:\n    \n    - `texts`: Array of text contents to analyze\n        \n    - `metadata`: Optional context for all texts\n        \n\nResponse includes:\n\n- `Results`: Array of analysis results containing:\n    \n    - `Confidence Score`: Probability of AI generation (0.0-1.0)\n        \n    - `Is AI`: Boolean indicating if content is AI-generated\n        \n    - `Analysis`: Detailed findings text\n        \n    - `Language`: Detected language code (ISO 639-1)\n        \n- `Processed At`: Timestamp of analysis completion\n    \n- `Total Texts`: Total number of texts processed\n    \n- `Total AI`: Count of texts detected as AI-generated\n    \n- `Total Human`: Count of texts detected as human-written\n    \n- `Average Confidence`: Average confidence score across all texts\n    \n\n**Analysis (Result)**\n\n`GET /v1/analysis/:id`\n\nRetrieve a specific analysis result by ID:\n\n- Returns all analysis details\n    \n- Includes timestamp and organization ID\n    \n\n**PDF Text Extraction**\n\n`POST /v1/analyze/pdf`\n\nSubmit PDF files for text extraction:\n\n- Content-Type: `multipart/form-data`\n    \n- Required fields:\n    \n    - `file`: PDF file to analyze (max 1MB for direct response)\n        \n\nResponse includes:\n\n- `Content`: Extracted text (for files ≤1MB)\n    \n- `Download URL`: Temporary download link for extracted text (for files >1MB)\n    \n- `Size Exceeded`: Boolean indicating if file exceeded size limit\n    \n\nSize Handling\n\n- PDF Files ≤1MB: Returns text directly in response\n    \n- PDF Files >1MB: Returns download URL valid for 24 hours\n    \n\n**PDF Text Extraction - Bulk Processing**\n\n`POST /v1/analyze/pdf/bulk`\n\nSubmit multiple PDF files for batch text extraction:\n\n- Content-Type: `multipart/form-data`\n    \n- Required fields:\n    \n    - `files`: Multiple PDF files to analyze (max 1MB each for direct response)\n        \n\nResponse includes:\n\n- `Results`: Array of extraction results containing:\n    \n    - `Content`: Extracted text (for files ≤1MB)\n        \n    - `Download URL`: Temporary download link for extracted text (for files >1MB)\n        \n    - `Size Exceeded`: Boolean indicating if file exceeded size limit\n        \n- `Processed At`: Timestamp of processing completion\n    \n- `Total Files`: Total number of files processed\n    \n- `Total Success`: Count of successfully processed files\n    \n- `Total Failed`: Count of failed processing attempts\n    \n\nSize Handling\n\n- Files ≤1MB: Returns text directly in response\n    \n- Files >1MB: Returns download URL valid for 24 hours\n    \n\n**DOCX Text Extraction**\n\n`POST /v1/analyze/docx`\n\nSubmit DOCX files for text extraction:\n\n- Content-Type: `multipart/form-data`\n    \n- Required fields:\n    \n    - `file`: DOCX file to analyze (max 1MB for direct response)\n        \n\nResponse includes:\n\n- `Content`: Extracted text (for files ≤1MB)\n    \n- `Download URL`: Temporary download link for extracted text (for files >1MB)\n    \n- `Size Exceeded`: Boolean indicating if file exceeded size limit\n    \n\nSize Handling\n\n- DOCX Files ≤1MB: Returns text directly in response\n    \n- DOCX Files >1MB: Returns download URL valid for 24 hours\n    \n\n**DOCX Text Extraction - Bulk Processing**\n\n`POST /v1/analyze/docx/bulk`\n\nSubmit multiple DOCX files for batch text extraction:\n\n- Content-Type: `multipart/form-data`\n    \n- Required fields:\n    \n    - `files`: Multiple DOCX files to analyze (max 1MB each for direct response)\n        \n\nResponse includes:\n\n- `Results`: Array of extraction results containing:\n    \n    - `Content`: Extracted text (for files ≤1MB)\n        \n    - `Download URL`: Temporary download link for extracted text (for files >1MB)\n        \n    - `Size Exceeded`: Boolean indicating if file exceeded size limit\n        \n- `Processed At`: Timestamp of processing completion\n    \n- `Total Files`: Total number of files processed\n    \n- `Total Success`: Count of successfully processed files-\n    \n- `Total Failed`: Count of failed processing attempts\n    \n\nSize Handling\n\n- Files ≤1MB: Returns text directly in response\n    \n- Files >1MB: Returns download URL valid for 24 hours\n    \n\n**Data Export**\n\n`GET /v1/export`\n\nExport all submission data as CSV:\n\n- Returns download URL with expiration\n    \n- Includes all analyzed content and results\n    \n\n`GET /v1/export/analytics`\n\nExport analytics data as CSV:\n\n- Returns download URL with expiration\n    \n- Includes usage statistics and metrics\n    \n\n**Threshold Configuration**\n\n`POST /v1/configure`\n\nConfigure detection threshold:\n\n- Content-Type: `application/json`\n    \n- Required fields:\n    \n    - `threshold`: Detection threshold (0.1-1.0)\n        \n    - `language`: optional language code (ISO 639-1)\n        \n\n**Rate Limiting**\n\nKalos’s API rate limiting is in conformance with the [IETF standard](https://datatracker.ietf.org/doc/html/draft-ietf-httpapi-ratelimit-headers):\n\n| **Header** | **Description** |\n| --- | --- |\n| `X-RateLimit-Limit` | The maximum number of requests that the consumer is permitted to make per hour. |\n| `X-RateLimit-Remaining` | The number of requests remaining in the current rate limit window. |\n| `X-Rate-Limit-Reset` | The time at which the current rate limit window resets in UTC epoch seconds. |\n| `Retry-After` | The number of seconds to wait before retrying the request again. |\n\nYou’ll receive a `429 Too Many Requests` response code if the rate limit is exceeded.\n\n### Response Codes\n\nThe API returns standard HTTP response codes to indicate the success or failure of an API request. Here are a few examples:\n\n| **Code** | **Description** |\n| --- | --- |\n| 200 | The request was successful. |\n| 400 | The request was invalid or cannot be served. |\n| 401 | The request requires user authentication. |\n| 403 | The server understood the request, but refuses to authorize it. |\n| 404 | The requested resource could not be found. |\n| 429 | Too many requests. |\n| 500 | The server encountered an unexpected condition which prevented it from fulfilling the request. |\n\n### API Deprecation Policy\n\n1. Documentation marked as deprecated\n    \n2. `Sunset` header added with end date\n    \n3. Email notification sent\n    \n4. Entry added to API Changelog\n    \n5. Final notification after sunset date\n    \n\n### Performance Tips\n\nFor optimal performance:\n\n- Batch requests when possible\n    \n- Cache results locally\n    \n- Implement exponential backoff for retries\n    \n\nContact support at: [support@horisystems.com](https://mailto:support@horisystems.com)\n\n### API Changelog\n\n| **Date** | **Change** |\n| --- | --- |\n| 05/04/2025 | DOCX Text Extraction—Bulk Processing  <br>PDF Text Extraction—Bulk Processing |\n| 04/04/2025 | Text Analysis—Bulk Processing |\n| 02/04/2025 | Threshold Configuration |\n| 31/03/2025 | DOCX Text Extraction |\n| 30/03/2025 | PDF Text Extraction  <br>Initial Release |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"33326789","team":6073467,"collectionId":"4b4b6aae-8137-461f-9fc3-5bb2ca161d8d","publishedId":"2sB2cPk5wn","public":true,"publicUrl":"https://docs.kalosats.com","privateUrl":"https://go.postman.co/documentation/33326789-4b4b6aae-8137-461f-9fc3-5bb2ca161d8d","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":"Stop AI-generated applications from slipping through your hiring process. Kalos gives you the competitive edge with 95% accuracy detection, saving your team hours of wasted interviews with inauthentic candidates."},{"name":"title","value":"Kalos for ATS Systems - API Documentation"}],"appearance":{"default":"dark","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.11.4","publishDate":"2025-03-30T12:03:34.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"Kalos for ATS Systems - API Documentation","description":"Stop AI-generated applications from slipping through your hiring process. Kalos gives you the competitive edge with 95% accuracy detection, saving your team hours of wasted interviews with inauthentic candidates."},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"Kalos API","id":"3dab8a90-9500-4e21-a03f-768f1c28eb3e","owner":"33326789","values":[{"key":"baseUrl","value":"https://kalosats.com","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/b1330b7ecc5a694de8e0da84e96c322c71bfbc680c5925e42924ddc133d17483","favicon":"https://kalosats.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Kalos API","value":"33326789-3dab8a90-9500-4e21-a03f-768f1c28eb3e"}],"canonicalUrl":"https://docs.kalosats.com/view/metadata/2sB2cPk5wn"}