{
  "batch_mode": {
    "batch": "Multiple files, async, returns 202 + batch_id \u2014 poll via POST /batch",
    "single": "One file, returns result immediately"
  },
  "dest_bucket": "atscvtext",
  "error": "Documentation file not found",
  "modes": {
    "extractor_mode": {
      "applies_to": [
        "POST /parse",
        "POST /extract"
      ],
      "default": "auto",
      "values": [
        "fast",
        "smart",
        "auto"
      ]
    },
    "parse_mode": {
      "applies_to": [
        "POST /parse"
      ],
      "default": "smart",
      "note": "fast=rule-based NER pipeline, smart=Nebius LLM",
      "values": [
        "fast",
        "smart"
      ]
    }
  },
  "output_structure": {
    "local": {
      "convert_batch": "outputs/convert/batch/{batch_id}/",
      "convert_single": "outputs/convert/single/{file_id}/",
      "extract_batch": "outputs/extract/batch/{batch_id}/",
      "extract_single": "outputs/extract/single/{file_id}/",
      "merge_single": "outputs/merge/single/{file_id}/",
      "parse_fast_batch": "outputs/parse/fast/batch/{batch_id}/",
      "parse_fast_single": "outputs/parse/fast/single/{resume_id}/",
      "parse_smart_batch": "outputs/parse/smart/batch/{batch_id}/",
      "parse_smart_single": "outputs/parse/smart/single/{resume_id}/"
    },
    "s3": {
      "convert_batch": "convert/batch/{batch_id}/",
      "convert_single": "convert/single/{file_id}/",
      "extract_batch": "extract/batch/{batch_id}/",
      "extract_single": "extract/single/{file_id}/",
      "merge_single": "merge/single/{file_id}/",
      "parse_fast_batch": "parse/fast/batch/{batch_id}/",
      "parse_fast_single": "parse/fast/single/{resume_id}/",
      "parse_smart_batch": "parse/smart/batch/{batch_id}/",
      "parse_smart_single": "parse/smart/single/{resume_id}/"
    }
  },
  "post_batch_actions": {
    "download": "Retrieve completed batch results. batch_id required.",
    "list": "List all batches. Supports filters: operation, parse_mode, status, cloud_file, limit, offset.",
    "status": "Poll batch progress. batch_id required."
  },
  "rate_limits": {
    "GET /download": "no limit",
    "POST /batch": "6000 per minute",
    "POST /convert": "5000 per hour",
    "POST /extract": "3000 per hour",
    "POST /merge": "3000 per hour",
    "POST /parse": "2000 per hour",
    "max_batch_files": "500 files",
    "max_file_size": "5MB per file"
  },
  "routes": {
    "GET  /download/<path>": "Download any result file",
    "GET  /health": "This endpoint",
    "POST /batch": "Batch status, download, and list",
    "POST /convert": "File format conversion",
    "POST /extract": "Text extraction only",
    "POST /merge": "Merge and mask resume documents",
    "POST /parse": "Extract + parse resumes (rule-based or LLM)"
  },
  "source_buckets": [
    "atsemailedfiles",
    "atsjobseekerfiles",
    "atsresumes",
    "atsuploadedfiles"
  ],
  "status": "healthy",
  "timestamp": "2026-05-17T11:20:44.533188"
}
