{
  "openapi": "3.1.0",
  "info": {
    "title": "Japan TB Screening Check (JPETS) API",
    "version": "1.0.0",
    "description": "Do you need Japan's pre-entry TB clearance certificate? Nationals of the Philippines, Nepal and Viet Nam already do for stays over 3 months; Indonesia joins for COE and visa applications filed from January 4, 2027. Check your case, the exemptions (specified skilled workers are exempt for now), the 180-day validity and the designated Panel Clinics.\n\nFree, no API key, CORS open. Fair use: about 120 requests per minute per IP. Also available as MCP tools at https://free-agent-tools.vercel.app/mcp"
  },
  "servers": [
    {
      "url": "https://japan-tb-screening.vercel.app"
    }
  ],
  "paths": {
    "/api/check": {
      "get": {
        "operationId": "japanTbScreeningCheck",
        "summary": "Do I need a JPETS TB Clearance Certificate for Japan? (Philippines, Nepal, Viet Nam, Indonesia from 2027-01-04, Myanmar, China)",
        "description": "Japan Pre-Entry Tuberculosis Screening (JPETS, 入国前結核スクリーニング): nationals of the Philippines, Nepal, Viet Nam, Indonesia, Myanmar and China entering Japan as mid- to long-term residents (stay over 3 months, plus Digital Nomad No. 53/54) must submit a TB Clearance Certificate from a designated Panel Clinic with the Certificate of Eligibility (COE) application, or with the visa application if there is no COE. Mandatory since 2025-06-23 (Philippines, Nepal) and 2025-09-01 (Viet Nam); Indonesia: screening from 2026-11-02, mandatory for applications filed from 2027-01-04 (scheduled); Myanmar and China: date not announced. Temporarily exempt: Specified Skilled Workers, EPA nurses/care workers, JET, JICA trainees, JDS, Japan Foundation invitees, embassy-recommended MEXT scholars, commissioned student training, Designated Activities No. 55, special-zone housekeepers; also anyone whose residence outside the target countries is documented. Technical intern trainees and students are NOT exempt. Certificate valid 180 days from the chest X-ray (90 after close contact), checked at the COE application only. Returns verdict (required / not_yet_required / exempt / not_required), reasons, country timeline, certificate validity and X-ray window, documents, the designated Panel Clinics list (optionally filtered by city), notes, sources, rulesAsOf and a disclaimer.\n\nExample: https://japan-tb-screening.vercel.app/api/check?nationality=indonesia&status=student&applicationDate=2027-01-15",
        "parameters": [
          {
            "name": "nationality",
            "in": "query",
            "required": true,
            "description": "Passport nationality: philippines, nepal, vietnam, indonesia, myanmar, china, other (aliases like ID, VN, PH, NP, Filipino, Indonesian, インドネシア accepted; any other country = not covered).",
            "schema": {
              "type": "string",
              "description": "Passport nationality: philippines, nepal, vietnam, indonesia, myanmar, china, other (aliases like ID, VN, PH, NP, Filipino, Indonesian, インドネシア accepted; any other country = not covered)."
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Status of residence / purpose, e.g. student, technical_intern_training, specified_skilled_worker, engineer_humanities, dependent, spouse_of_japanese, digital_nomad, temporary_visitor. Aliases like tokutei_ginou, ssw, gijinkoku, tourist accepted.",
            "schema": {
              "type": "string",
              "description": "Status of residence / purpose, e.g. student, technical_intern_training, specified_skilled_worker, engineer_humanities, dependent, spouse_of_japanese, digital_nomad, temporary_visitor. Aliases like tokutei_ginou, ssw, gijinkoku, tourist accepted.",
              "enum": [
                "student",
                "technical_intern_training",
                "employment_for_skill_development",
                "engineer_humanities",
                "skilled_labor",
                "nursing_care",
                "intra_company_transferee",
                "business_manager",
                "highly_skilled_professional",
                "professor_researcher",
                "other_work",
                "training",
                "cultural_activities",
                "dependent",
                "spouse_of_japanese",
                "spouse_of_permanent_resident",
                "long_term_resident",
                "designated_activities",
                "other_mid_long",
                "digital_nomad",
                "digital_nomad_family",
                "specified_skilled_worker",
                "epa_nurse_care_worker",
                "jet_programme",
                "jica_trainee",
                "jds_scholar",
                "japan_foundation_invitee",
                "mext_embassy_scholar",
                "commissioned_student_training",
                "da55_motor_vehicle",
                "housekeeping_special_zone",
                "temporary_visitor",
                "diplomat_official"
              ],
              "default": "other_mid_long"
            }
          },
          {
            "name": "applicationDate",
            "in": "query",
            "required": false,
            "description": "YYYY-MM-DD the COE (or direct visa) application is filed. Default: today in Japan.",
            "schema": {
              "type": "string",
              "description": "YYYY-MM-DD the COE (or direct visa) application is filed. Default: today in Japan."
            }
          },
          {
            "name": "residenceCountry",
            "in": "query",
            "required": false,
            "description": "Country where the applicant lives now, if different from nationality. A non-target country (with a residence permit) = exempt. 'japan' = applying from inside Japan (change of status / extension) = not required.",
            "schema": {
              "type": "string",
              "description": "Country where the applicant lives now, if different from nationality. A non-target country (with a residence permit) = exempt. 'japan' = applying from inside Japan (change of status / extension) = not required."
            }
          },
          {
            "name": "route",
            "in": "query",
            "required": false,
            "description": "coe (default) or visa_direct (visa at an embassy without a COE; default for digital_nomad).",
            "schema": {
              "type": "string",
              "description": "coe (default) or visa_direct (visa at an embassy without a COE; default for digital_nomad).",
              "enum": [
                "coe",
                "visa_direct"
              ]
            }
          },
          {
            "name": "xrayDate",
            "in": "query",
            "required": false,
            "description": "YYYY-MM-DD of the chest X-ray at the Panel Clinic, to check certificate validity on the application date.",
            "schema": {
              "type": "string",
              "description": "YYYY-MM-DD of the chest X-ray at the Panel Clinic, to check certificate validity on the application date."
            }
          },
          {
            "name": "stayMonths",
            "in": "query",
            "required": false,
            "description": "Expected period of stay in months. 3 or less = not a mid- to long-term stay (not covered), except Digital Nomad.",
            "schema": {
              "type": "number",
              "description": "Expected period of stay in months. 3 or less = not a mid- to long-term stay (not covered), except Digital Nomad.",
              "minimum": 1,
              "maximum": 600
            }
          },
          {
            "name": "hasReentryPermit",
            "in": "query",
            "required": false,
            "description": "Returning on a re-entry permit (incl. special re-entry). Excluded from JPETS.",
            "schema": {
              "type": "boolean",
              "description": "Returning on a re-entry permit (incl. special re-entry). Excluded from JPETS.",
              "default": false
            }
          },
          {
            "name": "closeContact",
            "in": "query",
            "required": false,
            "description": "Close contact with active infectious pulmonary TB within 2 months before the X-ray: validity drops to 90 days.",
            "schema": {
              "type": "boolean",
              "description": "Close contact with active infectious pulmonary TB within 2 months before the X-ray: validity drops to 90 days.",
              "default": false
            }
          },
          {
            "name": "city",
            "in": "query",
            "required": false,
            "description": "Filter the Panel Clinic list by city, e.g. Jakarta, Surabaya, Hanoi, Manila, Kathmandu.",
            "schema": {
              "type": "string",
              "description": "Filter the Panel Clinic list by city, e.g. Jakarta, Surabaya, Hanoi, Manila, Kathmandu."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result as JSON. Always includes a `disclaimer` field.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid input. The body explains what to send and gives an example."
          },
          "429": {
            "description": "Too many requests from one IP. Retry after the Retry-After seconds."
          }
        }
      },
      "post": {
        "operationId": "japanTbScreeningCheckPost",
        "summary": "Do I need a JPETS TB Clearance Certificate for Japan? (Philippines, Nepal, Viet Nam, Indonesia from 2027-01-04, Myanmar, China) (JSON body)",
        "description": "Japan Pre-Entry Tuberculosis Screening (JPETS, 入国前結核スクリーニング): nationals of the Philippines, Nepal, Viet Nam, Indonesia, Myanmar and China entering Japan as mid- to long-term residents (stay over 3 months, plus Digital Nomad No. 53/54) must submit a TB Clearance Certificate from a designated Panel Clinic with the Certificate of Eligibility (COE) application, or with the visa application if there is no COE. Mandatory since 2025-06-23 (Philippines, Nepal) and 2025-09-01 (Viet Nam); Indonesia: screening from 2026-11-02, mandatory for applications filed from 2027-01-04 (scheduled); Myanmar and China: date not announced. Temporarily exempt: Specified Skilled Workers, EPA nurses/care workers, JET, JICA trainees, JDS, Japan Foundation invitees, embassy-recommended MEXT scholars, commissioned student training, Designated Activities No. 55, special-zone housekeepers; also anyone whose residence outside the target countries is documented. Technical intern trainees and students are NOT exempt. Certificate valid 180 days from the chest X-ray (90 after close contact), checked at the COE application only. Returns verdict (required / not_yet_required / exempt / not_required), reasons, country timeline, certificate validity and X-ray window, documents, the designated Panel Clinics list (optionally filtered by city), notes, sources, rulesAsOf and a disclaimer.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "nationality"
                ],
                "properties": {
                  "nationality": {
                    "type": "string",
                    "description": "Passport nationality: philippines, nepal, vietnam, indonesia, myanmar, china, other (aliases like ID, VN, PH, NP, Filipino, Indonesian, インドネシア accepted; any other country = not covered)."
                  },
                  "status": {
                    "type": "string",
                    "description": "Status of residence / purpose, e.g. student, technical_intern_training, specified_skilled_worker, engineer_humanities, dependent, spouse_of_japanese, digital_nomad, temporary_visitor. Aliases like tokutei_ginou, ssw, gijinkoku, tourist accepted.",
                    "enum": [
                      "student",
                      "technical_intern_training",
                      "employment_for_skill_development",
                      "engineer_humanities",
                      "skilled_labor",
                      "nursing_care",
                      "intra_company_transferee",
                      "business_manager",
                      "highly_skilled_professional",
                      "professor_researcher",
                      "other_work",
                      "training",
                      "cultural_activities",
                      "dependent",
                      "spouse_of_japanese",
                      "spouse_of_permanent_resident",
                      "long_term_resident",
                      "designated_activities",
                      "other_mid_long",
                      "digital_nomad",
                      "digital_nomad_family",
                      "specified_skilled_worker",
                      "epa_nurse_care_worker",
                      "jet_programme",
                      "jica_trainee",
                      "jds_scholar",
                      "japan_foundation_invitee",
                      "mext_embassy_scholar",
                      "commissioned_student_training",
                      "da55_motor_vehicle",
                      "housekeeping_special_zone",
                      "temporary_visitor",
                      "diplomat_official"
                    ],
                    "default": "other_mid_long"
                  },
                  "applicationDate": {
                    "type": "string",
                    "description": "YYYY-MM-DD the COE (or direct visa) application is filed. Default: today in Japan."
                  },
                  "residenceCountry": {
                    "type": "string",
                    "description": "Country where the applicant lives now, if different from nationality. A non-target country (with a residence permit) = exempt. 'japan' = applying from inside Japan (change of status / extension) = not required."
                  },
                  "route": {
                    "type": "string",
                    "description": "coe (default) or visa_direct (visa at an embassy without a COE; default for digital_nomad).",
                    "enum": [
                      "coe",
                      "visa_direct"
                    ]
                  },
                  "xrayDate": {
                    "type": "string",
                    "description": "YYYY-MM-DD of the chest X-ray at the Panel Clinic, to check certificate validity on the application date."
                  },
                  "stayMonths": {
                    "type": "number",
                    "description": "Expected period of stay in months. 3 or less = not a mid- to long-term stay (not covered), except Digital Nomad.",
                    "minimum": 1,
                    "maximum": 600
                  },
                  "hasReentryPermit": {
                    "type": "boolean",
                    "description": "Returning on a re-entry permit (incl. special re-entry). Excluded from JPETS.",
                    "default": false
                  },
                  "closeContact": {
                    "type": "boolean",
                    "description": "Close contact with active infectious pulmonary TB within 2 months before the X-ray: validity drops to 90 days.",
                    "default": false
                  },
                  "city": {
                    "type": "string",
                    "description": "Filter the Panel Clinic list by city, e.g. Jakarta, Surabaya, Hanoi, Manila, Kathmandu."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Result as JSON. Always includes a `disclaimer` field.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid input. The body explains what to send and gives an example."
          },
          "429": {
            "description": "Too many requests from one IP. Retry after the Retry-After seconds."
          }
        }
      }
    },
    "/api/rules": {
      "get": {
        "operationId": "japanTbScreeningRules",
        "summary": "All JPETS rules: target countries and dates, exemptions, validity, transition rule, statuses, and the designated Panel Clinic list",
        "description": "Returns the dated JPETS rules (Philippines, Nepal, Viet Nam, Indonesia, Myanmar, China), the temporary exemption list, certificate validity, when to submit, all Panel Clinics by country, sources, and disclaimer. No inputs.",
        "responses": {
          "200": {
            "description": "Rules JSON with rulesAsOf and sources.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    }
  }
}