[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"api-page:phone-number-validator":3},{"status":4,"api":5,"seo":283},"success",{"blocked":6,"description":7,"about":8,"stats":9,"name":11,"title":12,"slug":13,"logo":14,"created_at":15,"agent":16,"user":28,"endpoint_groups":31,"faqs":192,"features":217,"periodic_plans":218,"payasyougo_plans":265,"createdAtText":282},false,"Validate, parse and format phone numbers worldwide. Returns validity, line type (mobile, fixed-line, VoIP, toll-free), country and calling code, plus E.164, international, national and RFC3966 formats. Batch validation of up to 100 numbers per call. Fast edge-hosted, ruleset-based validation powered by libphonenumber metadata (not a live carrier/HLR lookup).","# Phone Number Validator and Formatter\n\nValidate, parse and format phone numbers from every country in a single request. The API tells you whether a number is valid, what kind of line it is, which country it belongs to, and returns it in all the formats you need for storage, display and dialing.\n\n## What you get\n\n- **Validation** — `valid` and `possible` flags plus a machine-readable `reason` for invalid input (`TOO_SHORT`, `TOO_LONG`, `INVALID_COUNTRY`, `NOT_A_NUMBER`, ...).\n- **Line type detection** — `MOBILE`, `FIXED_LINE`, `FIXED_LINE_OR_MOBILE`, `TOLL_FREE`, `PREMIUM_RATE`, `VOIP`, `PAGER`, `UAN`, `VOICEMAIL` and more.\n- **Country detection** — ISO 3166-1 alpha-2 region and the country calling code.\n- **Four output formats** — E.164 (`+4915123456789`), international (`+49 1512 3456789`), national (`01512 3456789`) and RFC 3966 (`tel:+4915123456789`).\n- **Batch validation** — up to 100 numbers per request, results returned in the same order.\n- **Helpers** — example numbers per country and line type, calling-code lookup, and the full list of supported regions.\n\n## Endpoints\n\n| Method | Path | Purpose |\n|---|---|---|\n| GET | `/validate?number=+4915123456789&country=DE` | Validate and format one number |\n| POST | `/validate/batch` | Validate up to 100 numbers |\n| GET | `/example?country=DE&type=mobile` | Example number for a region |\n| GET | `/calling-code?country=DE` | Country calling code |\n| GET | `/regions` | All supported regions and calling codes |\n\nNumbers can be passed in E.164 form (with a leading `+`) or in national form together with a `country` hint.\n\n## Example\n\nRequest:\n\n```\nGET /validate?number=%2B4915123456789\n```\n\nResponse:\n\n```json\n{\n  \"input\": \"+4915123456789\",\n  \"valid\": true,\n  \"possible\": true,\n  \"type\": \"MOBILE\",\n  \"country\": \"DE\",\n  \"countryCallingCode\": \"49\",\n  \"formats\": {\n    \"e164\": \"+4915123456789\",\n    \"international\": \"+49 1512 3456789\",\n    \"national\": \"01512 3456789\",\n    \"rfc3966\": \"tel:+4915123456789\"\n  }\n}\n```\n\nInvalid numbers still return HTTP 200 with `valid: false` and a `reason`, so a single code path handles every input. Only malformed requests (missing parameter, batch over 100 items, bad JSON) return 4xx.\n\n## Typical use cases\n\n- Clean up sign-up and checkout forms before storing a number.\n- Normalise CRM or marketing lists to E.164 before sending SMS or placing calls.\n- Detect mobile vs. fixed-line numbers to pick the right contact channel.\n- Display numbers in the caller's local convention.\n- Deduplicate contact databases that mix national and international formats.\n\n## How it works\n\nValidation is ruleset-based and runs on a globally distributed edge network, so responses are fast from anywhere in the world. Numbering-plan metadata comes from Google's libphonenumber project (the same rules used by Android) and is updated regularly.\n\nThis API does **not** perform live carrier, HLR or number-portability lookups and does not guarantee that a number is currently in service or reachable. It tells you whether a number is well-formed and assigned under the national numbering plan.\n\n## Coverage\n\nAll 240+ regions with an ITU-assigned calling code are supported. Use `/regions` to retrieve the current list.",{"score":10},"2.75","Phone Number Validator and Formatter","Phone Number Validator and Formatter API","phone-number-validator","https://cdn.jojapi.com/api/0d843d25-ca20-4885-b2e0-5199e8970c8d","2026-09-01 21:10:51",{"enabled":17,"closed":18,"request_enabled":6,"catalog_url":19,"discovery_url":20,"directory_url":21,"rails":22,"networks":25,"docs":27},true,null,"https://uhecf.jojapi.net/_jojapi/agent/plans","https://uhecf.jojapi.net/.well-known/x402","https://agents.jojapi.net/apis/phone-number-validator",[23,24],"x402","mpp",[26],"eip155:8453","https://docs.jojapi.com/consumers/agents",{"nick":29,"name":30,"verified":6,"website":18},"manuel","Manuel",[32],{"endpoints":33,"name":191,"description":40,"ungrouped":17},[34,86,120,146,170],{"blocked":6,"hidden":6,"agent_price":18,"credits":18,"flexible_credits_description":18,"consumptions":35,"description":42,"method":43,"name":44,"url_path":45,"root_url":46,"parameters":47,"responses":67,"result_stats":82},[36],{"name":37,"slug":38,"cost":39,"label":40,"avg":41},"API Requests","requests","1","",1,"Returns validity, possibility, line type, country, calling code and all four formats. Invalid numbers still return HTTP 200 with valid:false and a reason.","GET","Validate & format a single phone number","/validate","https://uhecf.jojapi.net",{"url":48,"header":58,"post":64,"body":65,"path":66},[49,54],{"key":50,"example":51,"schema":18,"example_disabled":6,"example_type":52,"value_type":52,"enum_values":18,"default_value":40,"required":17,"name":40,"description":53},"number","+4915123456789","string","Phone number in E.164 (with +) or national format (provide country).",{"key":55,"example":56,"schema":18,"example_disabled":6,"example_type":52,"value_type":52,"enum_values":18,"default_value":40,"required":6,"name":40,"description":57},"country","DE","ISO 3166-1 alpha-2 region hint for numbers without a + prefix.",[59],{"key":60,"is_auth":17,"example":61,"example_disabled":17,"example_type":52,"name":62,"description":61,"required":17,"always_error":63},"X-JoJAPI-Key","You must log in to get API key","JoJ API Key","Please log in to get API key",[],[],[],[68,77],{"status":69,"status_code":70,"description":71,"schema":72,"examples":73,"example":76},"200",200,"Validation result","{\"type\":\"object\",\"properties\":{\"input\":{\"type\":\"string\"},\"valid\":{\"type\":\"boolean\"},\"possible\":{\"type\":\"boolean\"},\"type\":{\"type\":\"string\",\"example\":\"MOBILE\"},\"country\":{\"type\":\"string\",\"nullable\":true,\"example\":\"DE\"},\"countryCallingCode\":{\"type\":\"string\",\"nullable\":true,\"example\":\"49\"},\"formats\":{\"type\":\"object\",\"properties\":{\"e164\":{\"type\":\"string\",\"nullable\":true},\"international\":{\"type\":\"string\",\"nullable\":true},\"national\":{\"type\":\"string\",\"nullable\":true},\"rfc3966\":{\"type\":\"string\",\"nullable\":true}}},\"reason\":{\"type\":\"string\",\"nullable\":true}}}",[74],{"name":75,"summary":40,"description":40,"example":76},"default","{\"input\":\"+4915123456789\",\"valid\":true,\"possible\":true,\"type\":\"MOBILE\",\"country\":\"DE\",\"countryCallingCode\":\"49\",\"formats\":{\"e164\":\"+4915123456789\",\"international\":\"+49 1512 3456789\",\"national\":\"01512 3456789\",\"rfc3966\":\"tel:+4915123456789\"}}",{"status":78,"status_code":79,"description":80,"schema":18,"examples":81,"example":40},"422",422,"Missing required `number` query param.",[],{"x2":83,"x3":84,"x4":84,"x5":84,"uptime":83,"avg_latency":85,"avg_credits":84},"100.00","0.00","159",{"blocked":6,"hidden":6,"agent_price":18,"credits":18,"flexible_credits_description":18,"consumptions":87,"description":89,"method":90,"name":91,"url_path":92,"root_url":46,"parameters":93,"responses":104,"result_stats":118},[88],{"name":37,"slug":38,"cost":39,"label":40,"avg":41},"Validate up to 100 numbers in one request. Returns a per-number result array in the same order.","POST","Validate an array of phone numbers","/validate/batch",{"url":94,"header":95,"post":97,"body":98,"path":103},[],[96],{"key":60,"is_auth":17,"example":61,"example_disabled":17,"example_type":52,"name":62,"description":61,"required":17,"always_error":63},[],[99],{"key":18,"example":100,"schema":101,"example_disabled":6,"example_type":52,"value_type":52,"enum_values":18,"default_value":40,"required":6,"name":18,"description":102},"{\"numbers\":[\"+4915123456789\",\"+14155552671\",\"bad\"],\"defaultCountry\":\"US\"}","{\"type\":\"object\",\"required\":[\"numbers\"],\"properties\":{\"numbers\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"maxItems\":100},\"defaultCountry\":{\"type\":\"string\",\"description\":\"ISO 3166-1 alpha-2 hint applied to national-format numbers.\"}}}","''",[],[105,110,115],{"status":69,"status_code":70,"description":106,"schema":18,"examples":107,"example":109},"Per-number results",[108],{"name":75,"summary":40,"description":40,"example":109},"{\"count\":2,\"results\":[{\"input\":\"+14155552671\",\"valid\":true,\"possible\":true,\"type\":\"FIXED_LINE_OR_MOBILE\",\"country\":\"US\",\"countryCallingCode\":\"1\",\"formats\":{\"e164\":\"+14155552671\",\"international\":\"+1 415 555 2671\",\"national\":\"(415) 555-2671\",\"rfc3966\":\"tel:+14155552671\"}},{\"input\":\"bad\",\"valid\":false,\"possible\":false,\"type\":\"UNKNOWN\",\"country\":null,\"countryCallingCode\":null,\"formats\":{\"e164\":null,\"international\":null,\"national\":null,\"rfc3966\":null},\"reason\":\"NOT_A_NUMBER\"}]}",{"status":111,"status_code":112,"description":113,"schema":18,"examples":114,"example":40},"400",400,"Malformed JSON body.",[],{"status":78,"status_code":79,"description":116,"schema":18,"examples":117,"example":40},"Missing numbers array or batch larger than 100.",[],{"x2":83,"x3":84,"x4":84,"x5":84,"uptime":83,"avg_latency":119,"avg_credits":84},"86",{"blocked":6,"hidden":6,"agent_price":18,"credits":18,"flexible_credits_description":18,"consumptions":121,"description":123,"method":43,"name":124,"url_path":125,"root_url":46,"parameters":126,"responses":137,"result_stats":144},[122],{"name":37,"slug":38,"cost":39,"label":40,"avg":41},"Returns a valid example (mobile) number for the requested country, fully validated and formatted.","Get an example number for a region","/example",{"url":127,"header":132,"post":134,"body":135,"path":136},[128,129],{"key":55,"example":56,"schema":18,"example_disabled":6,"example_type":52,"value_type":52,"enum_values":18,"default_value":40,"required":17,"name":40,"description":40},{"key":130,"example":131,"schema":18,"example_disabled":6,"example_type":52,"value_type":52,"enum_values":18,"default_value":40,"required":6,"name":40,"description":40},"type","mobile",[133],{"key":60,"is_auth":17,"example":61,"example_disabled":17,"example_type":52,"name":62,"description":61,"required":17,"always_error":63},[],[],[],[138,141],{"status":69,"status_code":70,"description":139,"schema":18,"examples":140,"example":40},"Example number result",[],{"status":78,"status_code":79,"description":142,"schema":18,"examples":143,"example":40},"Invalid or missing country.",[],{"x2":83,"x3":84,"x4":84,"x5":84,"uptime":83,"avg_latency":145,"avg_credits":84},"90",{"blocked":6,"hidden":6,"agent_price":18,"credits":18,"flexible_credits_description":18,"consumptions":147,"description":149,"method":43,"name":150,"url_path":151,"root_url":46,"parameters":152,"responses":160,"result_stats":168},[148],{"name":37,"slug":38,"cost":39,"label":40,"avg":41},"Returns the country calling code (e.g. 49 for DE) for an ISO 3166-1 alpha-2 country code. Returns 422 for an unknown or missing country.","Look up a country calling code","/calling-code",{"url":153,"header":155,"post":157,"body":158,"path":159},[154],{"key":55,"example":56,"schema":18,"example_disabled":6,"example_type":52,"value_type":52,"enum_values":18,"default_value":40,"required":17,"name":40,"description":40},[156],{"key":60,"is_auth":17,"example":61,"example_disabled":17,"example_type":52,"name":62,"description":61,"required":17,"always_error":63},[],[],[],[161,166],{"status":69,"status_code":70,"description":162,"schema":18,"examples":163,"example":165},"Calling code",[164],{"name":75,"summary":40,"description":40,"example":165},"{\"country\":\"DE\",\"countryCallingCode\":\"49\"}",{"status":78,"status_code":79,"description":142,"schema":18,"examples":167,"example":40},[],{"x2":83,"x3":84,"x4":84,"x5":84,"uptime":83,"avg_latency":169,"avg_credits":84},"76",{"blocked":6,"hidden":6,"agent_price":18,"credits":18,"flexible_credits_description":18,"consumptions":171,"description":173,"method":43,"name":174,"url_path":175,"root_url":46,"parameters":176,"responses":183,"result_stats":189},[172],{"name":37,"slug":38,"cost":39,"label":40,"avg":41},"Lists every supported ISO 3166-1 alpha-2 region together with its country calling code. Useful for building country pickers and for checking coverage.","List supported regions and calling codes","/regions",{"url":177,"header":178,"post":180,"body":181,"path":182},[],[179],{"key":60,"is_auth":17,"example":61,"example_disabled":17,"example_type":52,"name":62,"description":61,"required":17,"always_error":63},[],[],[],[184],{"status":69,"status_code":70,"description":185,"schema":18,"examples":186,"example":188},"Supported regions",[187],{"name":75,"summary":40,"description":40,"example":188},"{\"count\":248,\"regions\":[{\"country\":\"US\",\"countryCallingCode\":\"1\"}]}",{"x2":83,"x3":84,"x4":84,"x5":84,"uptime":83,"avg_latency":190,"avg_credits":84},"89","Ungrouped Endpoints",[193,196,199,202,205,208,211,214],{"question":194,"answer":195},"Does the API check whether a phone number is actually in service?","No. Validation is ruleset-based: it checks that a number is well-formed and assigned under the national numbering plan (libphonenumber metadata). It does not perform live carrier, HLR or number-portability lookups, so it cannot tell whether a line is currently active.",{"question":197,"answer":198},"Which formats can I send numbers in?","Send numbers in E.164 form with a leading + (e.g. +4915123456789), or in national form (e.g. 01512 3456789) together with the country query parameter as an ISO 3166-1 alpha-2 code such as DE or US. Spaces, dashes and parentheses are tolerated.",{"question":200,"answer":201},"What does the response contain?","Each result includes valid and possible flags, the detected line type (MOBILE, FIXED_LINE, TOLL_FREE, VOIP, ...), the ISO country code, the country calling code, and four formatted variants: e164, international, national and rfc3966. Invalid numbers include a reason such as TOO_SHORT or NOT_A_NUMBER.",{"question":203,"answer":204},"How many numbers can I validate in one batch request?","POST /validate/batch accepts up to 100 numbers per call. Results are returned in the same order as the input. Each batch request counts as one API call against your plan.",{"question":206,"answer":207},"Why do invalid numbers return HTTP 200?","An invalid number is a normal, expected result, not an error, so the API returns 200 with valid:false and a reason. HTTP 4xx codes are reserved for malformed requests: a missing number parameter, a batch larger than 100 items, or a JSON body that cannot be parsed.",{"question":209,"answer":210},"Which countries are supported?","All regions with an ITU-assigned country calling code, currently more than 240. Call GET /regions to retrieve the full list of supported ISO country codes and their calling codes.",{"question":212,"answer":213},"How up to date is the numbering data?","The API uses libphonenumber metadata, the same rules used by Android and many telecom applications. The data set is updated regularly as national numbering plans change.",{"question":215,"answer":216},"What is the difference between valid and possible?","possible means the number has a plausible length for its country; valid additionally means it matches the national numbering-plan pattern for an assigned range. A number can be possible but not valid (for example, a correct length in an unassigned prefix).",[],[219,235,245,255],{"type":220,"slug":221,"blocked":6,"period":222,"currency":223,"pricing":224,"rate_limit":228,"objects":229,"name":233,"display_name":233,"features":234},"periodic","kvq0gfdnlc3hp17mntefiekb","1 MONTH","usd",{"price":225,"credits":225,"past_due_timeout_num":226,"past_due_timeout_type":227},0,3,"DAY",{"max_requests":18,"time_window":18},[230],{"id":231,"name":37,"slug":38,"quota":232,"tiers":18},"n13608500",1000,"Free",[],{"type":220,"slug":236,"blocked":6,"period":222,"currency":223,"pricing":237,"rate_limit":239,"objects":240,"name":243,"display_name":243,"features":244},"a86eu0lic72ccn2jcwzu8qh4",{"price":238,"credits":225,"past_due_timeout_num":226,"past_due_timeout_type":227},9,{"max_requests":18,"time_window":18},[241],{"id":231,"name":37,"slug":38,"quota":242,"tiers":18},25000,"Basic",[],{"type":220,"slug":246,"blocked":6,"period":222,"currency":223,"pricing":247,"rate_limit":249,"objects":250,"name":253,"display_name":253,"features":254},"lv8gu4reckr4pqbp9hq20php",{"price":248,"credits":225,"past_due_timeout_num":226,"past_due_timeout_type":227},29,{"max_requests":18,"time_window":18},[251],{"id":231,"name":37,"slug":38,"quota":252,"tiers":18},150000,"Pro",[],{"type":220,"slug":256,"blocked":6,"period":222,"currency":223,"pricing":257,"rate_limit":259,"objects":260,"name":263,"display_name":263,"features":264},"drx9f704xegnywy1wdau00ti",{"price":258,"credits":225,"past_due_timeout_num":226,"past_due_timeout_type":227},99,{"max_requests":18,"time_window":18},[261],{"id":231,"name":37,"slug":38,"quota":262,"tiers":18},1000000,"Ultra",[],[266],{"type":267,"slug":268,"blocked":6,"period":222,"currency":223,"pricing":269,"rate_limit":270,"objects":271,"name":280,"display_name":280,"features":281},"payasyougo","ed7amhdp1nb8pv1oufkwlu2z",[],{"max_requests":18,"time_window":18},[272],{"id":231,"name":37,"slug":38,"quota":18,"tiers":273},[274,277],{"start":225,"unit_price":275,"start_text":276},0.01,"0",{"start":232,"unit_price":278,"start_text":279},0.005,"1K","Pay as you go",[],"2026-09-01",{"canonical":284,"page_title":285,"meta":286},"https://jojapi.com/hub/api/phone-number-validator","Phone Number Validator and Formatter API Documentation & Playground - JoJ API",{"description":7,"keywords":287},"API,API Documentation,API Playground,Plans & Pricing,Phone Number Validator and Formatter,manuel"]