{"openapi":"3.1.0","info":{"title":"China Entry Visa public service API","version":"1.0.0"},"servers":[{"url":"https://app.chinaentryvisa.com"}],"paths":{"/api/public/v1/list_services":{"post":{"operationId":"list_services","description":"List currently enabled services and configured USD service fees. Shipping requires a separate address-based quote; fees do not include official charges.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"default":"en","type":"string","enum":["en","zh","ko","vi","ja"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Public service result; prices are integer USD cents. Check status and missing conditions before using an estimate.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"apiVersion":{"type":"string","const":"1"},"locale":{"type":"string","enum":["en","zh","ko","vi","ja"]},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"translationFallback":{"type":"boolean"},"serviceUrl":{"type":"string","format":"uri"},"services":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]},"name":{"type":"string"},"description":{"type":"string"},"detail":{"type":"string"},"category":{"type":"string","enum":["core","shipping","photo","ai"]},"chargeBasis":{"type":"string","enum":["per_applicant","per_order"]},"price":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"requires_address_quote"},"currency":{"type":"string","const":"USD"},"amountCents":{"type":"null"}},"required":["status","currency","amountCents"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"configured_service_fee"},"currency":{"type":"string","const":"USD"},"amountCents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["status","currency","amountCents"],"additionalProperties":false}]},"url":{"type":"string","format":"uri"}},"required":["code","name","description","detail","category","chargeBasis","price","url"],"additionalProperties":false}},"excludedFromServiceFees":{"type":"array","items":{"type":"string"}}},"required":["apiVersion","locale","generatedAt","translationFallback","serviceUrl","services","excludedFromServiceFees"],"additionalProperties":false}}}},"400":{"description":"INVALID_INPUT: missing, unknown or invalid fields."},"409":{"description":"QUOTE_CHANGED: refresh the estimate."},"422":{"description":"SERVICE_UNAVAILABLE or LOCALE_UNAVAILABLE."},"429":{"description":"Rate limit exceeded; honor Retry-After."},"503":{"description":"DEPENDENCY_UNAVAILABLE: retry later."}}}},"/api/public/v1/get_service_coverage":{"post":{"operationId":"get_service_coverage","description":"Resolve residence jurisdiction reference for a selected service. California needs a county. Confirm actual service availability before mailing; this does not assign an order office.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"default":"en","type":"string","enum":["en","zh","ko","vi","ja"]},"serviceCode":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]},"regionCode":{"type":"string","pattern":"^[A-Za-z]{2}$"},"county":{"type":"string","minLength":1,"maxLength":80}},"required":["serviceCode","regionCode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Public service result; prices are integer USD cents. Check status and missing conditions before using an estimate.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"apiVersion":{"type":"string","const":"1"},"locale":{"type":"string","enum":["en","zh","ko","vi","ja"]},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"translationFallback":{"type":"boolean"},"serviceUrl":{"type":"string","format":"uri"},"serviceCode":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]},"jurisdiction":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"resolved"},"officeId":{"type":"string"},"officeCode":{"type":"string"},"consulateName":{"type":"string"},"consulateNameZh":{"type":"string"},"regionCode":{"type":"string"},"county":{"type":"string"},"basis":{"type":"string","enum":["state_or_district","california_county"]},"support":{"type":"string","const":"standard"}},"required":["status","officeId","officeCode","consulateName","consulateNameZh","regionCode","basis","support"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"manual_review"},"regionCode":{"type":"string"},"territoryName":{"type":"string"},"territoryNameZh":{"type":"string"},"officialOfficeId":{"type":"string"},"support":{"type":"string","const":"manual_review_required"},"reason":{"type":"string"}},"required":["status","regionCode","territoryName","territoryNameZh","officialOfficeId","support","reason"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"unresolved"},"regionCode":{"type":"string"},"county":{"type":"string"},"reason":{"type":"string"}},"required":["status","reason"],"additionalProperties":false}]},"coverageStatus":{"type":"string","enum":["requires_service_confirmation","unresolved","manual_review"]},"source":{"type":"object","properties":{"schemaVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"version":{"type":"string"},"verifiedOn":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"officialAnnouncementUrl":{"type":"string","format":"uri"},"californiaCountyMapUrl":{"type":"string","format":"uri"},"note":{"type":"string"}},"required":["schemaVersion","version","verifiedOn","officialAnnouncementUrl","californiaCountyMapUrl","note"],"additionalProperties":false},"assignsOffice":{"type":"boolean","const":false},"nextStep":{"type":"string"}},"required":["apiVersion","locale","generatedAt","translationFallback","serviceUrl","serviceCode","jurisdiction","coverageStatus","source","assignsOffice","nextStep"],"additionalProperties":false}}}},"400":{"description":"INVALID_INPUT: missing, unknown or invalid fields."},"409":{"description":"QUOTE_CHANGED: refresh the estimate."},"422":{"description":"SERVICE_UNAVAILABLE or LOCALE_UNAVAILABLE."},"429":{"description":"Rate limit exceeded; honor Retry-After."},"503":{"description":"DEPENDENCY_UNAVAILABLE: retry later."}}}},"/api/public/v1/get_preparation_requirements":{"post":{"operationId":"get_preparation_requirements","description":"Read general preparation guidance and current service details. The personal checklist and receiving address are available only through the customer's order.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"default":"en","type":"string","enum":["en","zh","ko","vi","ja"]},"serviceCode":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]}},"required":["serviceCode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Public service result; prices are integer USD cents. Check status and missing conditions before using an estimate.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"apiVersion":{"type":"string","const":"1"},"locale":{"type":"string","enum":["en","zh","ko","vi","ja"]},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"translationFallback":{"type":"boolean"},"serviceUrl":{"type":"string","format":"uri"},"serviceCode":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]},"scope":{"type":"string","const":"general_public_guidance"},"serviceDescription":{"type":"string"},"serviceDetail":{"type":"string"},"guidanceLocale":{"type":"string","enum":["en","zh"]},"guidance":{"type":"object","properties":{"title":{"type":"string"},"summary":{"type":"string"},"sections":{"type":"array","items":{"type":"object","properties":{"heading":{"type":"string"},"text":{"type":"string"}},"required":["heading","text"],"additionalProperties":false}}},"required":["title","summary","sections"],"additionalProperties":false},"contentUpdatedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"sourceUrl":{"type":"string","format":"uri"},"personalChecklistIncluded":{"type":"boolean","const":false},"nextStep":{"type":"string"}},"required":["apiVersion","locale","generatedAt","translationFallback","serviceUrl","serviceCode","scope","serviceDescription","serviceDetail","guidanceLocale","guidance","contentUpdatedAt","sourceUrl","personalChecklistIncluded","nextStep"],"additionalProperties":false}}}},"400":{"description":"INVALID_INPUT: missing, unknown or invalid fields."},"409":{"description":"QUOTE_CHANGED: refresh the estimate."},"422":{"description":"SERVICE_UNAVAILABLE or LOCALE_UNAVAILABLE."},"429":{"description":"Rate limit exceeded; honor Retry-After."},"503":{"description":"DEPENDENCY_UNAVAILABLE: retry later."}}}},"/api/public/v1/estimate_service_cost":{"post":{"operationId":"estimate_service_cost","description":"Estimate configured service fees for 1–50 applicants. Returns a partial estimate with missing conditions, not a total or binding payment quote. Refresh after validUntil or a pricing version change.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"default":"en","type":"string","enum":["en","zh","ko","vi","ja"]},"serviceCodes":{"minItems":1,"maxItems":11,"type":"array","items":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]}},"applicantCount":{"type":"integer","minimum":1,"maximum":50},"expectedPricingVersion":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["serviceCodes","applicantCount"],"additionalProperties":false}}}},"responses":{"200":{"description":"Public service result; prices are integer USD cents. Check status and missing conditions before using an estimate.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"apiVersion":{"type":"string","const":"1"},"locale":{"type":"string","enum":["en","zh","ko","vi","ja"]},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"translationFallback":{"type":"boolean"},"serviceUrl":{"type":"string","format":"uri"},"status":{"type":"string","const":"partial_estimate"},"currency":{"type":"string","const":"USD"},"pricingVersion":{"type":"string","pattern":"^[a-f0-9]{64}$"},"validUntil":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"bindingQuote":{"type":"boolean","const":false},"applicantCount":{"type":"integer","minimum":1,"maximum":50},"serviceSubtotalCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalCents":{"type":"null"},"volumeSavingsCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]},"name":{"type":"string"},"quantity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"unitAmountCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"discountRate":{"type":"number","minimum":0,"maximum":100}},"required":["code","name","quantity","unitAmountCents","amountCents","discountRate"],"additionalProperties":false}},"unpricedServiceCodes":{"type":"array","items":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]}},"missingForTotal":{"type":"array","items":{"type":"string"}},"nextStep":{"type":"string"}},"required":["apiVersion","locale","generatedAt","translationFallback","serviceUrl","status","currency","pricingVersion","validUntil","bindingQuote","applicantCount","serviceSubtotalCents","totalCents","volumeSavingsCents","lines","unpricedServiceCodes","missingForTotal","nextStep"],"additionalProperties":false}}}},"400":{"description":"INVALID_INPUT: missing, unknown or invalid fields."},"409":{"description":"QUOTE_CHANGED: refresh the estimate."},"422":{"description":"SERVICE_UNAVAILABLE or LOCALE_UNAVAILABLE."},"429":{"description":"Rate limit exceeded; honor Retry-After."},"503":{"description":"DEPENDENCY_UNAVAILABLE: retry later."}}}},"/api/public/v1/build_order_link":{"post":{"operationId":"build_order_link","description":"Create a URL with validated preselected services. This creates no order, makes no payment and includes no personal information. The customer reviews all conditions before checkout.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"locale":{"default":"en","type":"string","enum":["en","zh","ko","vi","ja"]},"serviceCodes":{"minItems":1,"maxItems":11,"type":"array","items":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]}}},"required":["serviceCodes"],"additionalProperties":false}}}},"responses":{"200":{"description":"Public service result; prices are integer USD cents. Check status and missing conditions before using an estimate.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"apiVersion":{"type":"string","const":"1"},"locale":{"type":"string","enum":["en","zh","ko","vi","ja"]},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"translationFallback":{"type":"boolean"},"serviceUrl":{"type":"string","format":"uri"},"url":{"type":"string","format":"uri"},"selectedServiceCodes":{"type":"array","items":{"type":"string","enum":["vip_full_service","vip_overnight_service","dropoff_service","pickup_service","priority_next_business_day","priority_same_day","inbound_test_label","return_test_label","photo_optimization","ai_single_question","ai_question_pack"]}},"createsOrder":{"type":"boolean","const":false},"requiresCustomerReview":{"type":"boolean","const":true}},"required":["apiVersion","locale","generatedAt","translationFallback","serviceUrl","url","selectedServiceCodes","createsOrder","requiresCustomerReview"],"additionalProperties":false}}}},"400":{"description":"INVALID_INPUT: missing, unknown or invalid fields."},"409":{"description":"QUOTE_CHANGED: refresh the estimate."},"422":{"description":"SERVICE_UNAVAILABLE or LOCALE_UNAVAILABLE."},"429":{"description":"Rate limit exceeded; honor Retry-After."},"503":{"description":"DEPENDENCY_UNAVAILABLE: retry later."}}}}}}