{"_id":"55154daec859ac2f0001b48b","user":"54eb4fdedf7add210007b29b","parentDoc":null,"version":{"_id":"54eb63b859b1172100334fae","project":"54eb50e5615ffc1900305a16","forked_from":"54eb63a1867e1917009b711d","__v":28,"createdAt":"2015-02-23T17:30:32.501Z","releaseDate":"2015-02-23T17:30:32.501Z","categories":["54eb63b959b1172100334faf","54eb63b959b1172100334fb0","54eb63b959b1172100334fb1","54eb63b959b1172100334fb2","54ed8dd4ab373e2300f50eae","54ed99b2ab373e2300f50ede","55153a6de68daa2f00cff838","551546edbc466623002afe72","5515472ac28d6125001b8884","55154749c28d6125001b8885","555d9b4106dfec0d00d38ea7","5613e06e433e5735007c7708","5624bbb785a31117001c5403","56669e857cc81e0d00253f8e","568b8d837a42220d00498311","56a632277ef6620d00e2f18a","56d8147c3eb4dd0b00201aac","57a9ce2fac6db30e000d7efd","57a9cf4e944ea60e00dc3f74","58172386715dce0f00da4aa0","582dc59ee1b8692300c0dd03","589b19b4fec2730f0082e040","58b04a023529383900a759b5","58b92d1598157a0f004869bf","592e7685c58275000f20174f","59392839e376d4002f8a0474","59393064e376d4002f8a05a1","5947ae0d4005e2000f3a4fec","594a74df1d1de5001ab3517a","5954bc387a147f001b918915","59b8eeeb707542001076d3b6"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1"},"project":"54eb50e5615ffc1900305a16","__v":22,"category":{"_id":"551546edbc466623002afe72","pages":["551549c0bc466623002afe76","55154afbc859ac2f0001b486","55154daec859ac2f0001b48b","55154f36bc466623002afe7c","551550c5e68daa2f00cff84c","551551d4f854a31900368737","551552e7c859ac2f0001b494","551be4e3a0ee622b0087f69e","5527acc447b71d0d0044e6cd","552f84ad633a5b0d00e99daf","5537533df162750d00bbf7d0","554b3ffd6b448d0d00646d79","55506416fa289c0d0075e4f0","5550aaea00420e0d00d13113","55545865b450630d00041d80","55546906f9a7871700ef8e3c","555c4bf87e271d0d00f3c8c4","5564318c1fa8002300ea4bb0","556ffbd5910c090d00c432b6","557019f4cc189a21001ab258","55703aefcc189a21001ab2a3","5575a3c60b81dc230069c910","558ab69575eaf50d004e4cf3","55b0b41fb3171b3700b1539a","55ba2e48d72d1e1900276ac1","55ba45c804775a2f00628101","55c0b789344dc40d00f55933","55c0b8c837298d0d00088d88","55c0c095344dc40d00f55960","55d43e05b49ab11900328e2e","55d72c8c60fc730d00fc2738","55e6c564d678ad17001589ac","55e9b7780c9b420d0042b275","55f7cf2de32e9b0d00a2d4b6","56094efea7b2590d0089eb95","5613cdbeecbebc21003fa179","5613d8de6a092921004c30b8","5613de7c443514170060dbb6","5613e02823ecf6350009eefc","5613e4271db46e2100e142ad","5614d73c8113d20d00082e3e","561e11ae50e0a62100955946","561e2008efcf8217003adf77","5620f184b244890d001868e0","5620feb740e2c30d0002a899","562105ce40e2c30d0002a8a3","56210b3340e2c30d0002a8b3","56210c74b244890d0018690e","56249a0372ac510d00e49149","56249df185a31117001c53de","56249f0c85a31117001c53e1","5624a9e7c4bf501700bc5ec8","5624b29806e8040d005ed6a0","562507435a86b42300946324","563877854bfb360d00a463c1","5639e0f91846790d0089529a","565327d17d29410d004a0835","565457df04feff210074b17d","56545821ec189235002967af","565485099c4c6d0d00aeda02","5666f1f1f672550d000851ad","566abc7b74d574170070b700","566ad3c7c7c3cd1700265d14","566aede7b5ccc20d00817f71","566aef3147ebaf1900fe65d6"],"project":"54eb50e5615ffc1900305a16","version":"54eb63b859b1172100334fae","__v":65,"sync":{"url":"","isSync":false},"reference":true,"createdAt":"2015-03-27T12:02:53.314Z","from_sync":false,"order":12,"slug":"advanced-tutorials","title":"Advanced tutorials"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-03-27T12:31:42.402Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[]},"auth":"required","params":[],"url":""},"isReference":true,"order":24,"body":"You've sent promotional messages to your customers, then analyzed the delivery reports and found out that your phone number database has a lot of invalid numbers. You may consider cleaning it up with our Number Lookup solution.\n\nNumber Lookup enables identifying unused and inactive numbers or the network your customer is currently using. We’re offering [three distinct packages](doc:number-context) tailor made for three types of enterprise clients.\n\nIn order to clean up your database, you need to have our **Database Cleaning package** and perform Number Lookup with an HTTP POST request:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /number/1/query HTTP/1.1\\nHost: api.infobip.com\\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\\nContent-Type: application/json\\n\\n{  \\n   \\\"to\\\":[\\\"41793026834\\\"]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nIn this example we used only one phone number to make it easier to follow . Depending of the package, the response will be something like this:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"HTTP/1.1 200 OK\\nContent-Type: application/json\\n\\n{  \\n   \\\"results\\\":[  \\n      {  \\n         \\\"to\\\":\\\"41793026834\\\",\\n         \\\"mccMnc\\\":\\\"22801\\\",\\n         \\\"imsi\\\":\\\"228012123477789\\\",\\n         \\\"originalNetwork\\\":{  \\n            \\\"networkPrefix\\\":\\\"79\\\",\\n            \\\"countryPrefix\\\":\\\"41\\\"\\n         },\\n         \\\"ported\\\":false,\\n         \\\"roaming\\\":false,\\n         \\\"status\\\":{  \\n            \\\"groupId\\\":3,\\n            \\\"groupName\\\":\\\"DELIVERED\\\",\\n            \\\"id\\\":5,\\n            \\\"name\\\":\\\"DELIVERED_TO_HANDSET\\\",\\n            \\\"description\\\":\\\"Message delivered to handset\\\"\\n         },\\n         \\\"error\\\":{  \\n            \\\"groupId\\\":0,\\n            \\\"groupName\\\":\\\"OK\\\",\\n            \\\"id\\\":0,\\n            \\\"name\\\":\\\"NO_ERROR\\\",\\n            \\\"description\\\":\\\"No Error\\\",\\n            \\\"permanent\\\":false\\n         }\\n      }\\n   ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nFrom the information you will receive in the Number Lookup response, you can learn whether a phone number is valid or not. Here is [the list of available Number Lookup parameters per package](doc:number-context) and also [the list of available statuses](doc:response-codes). \n\nFor example, 30 phone numbers are invalid and 70 are valid, so you decide to remove the 30 invalid ones from your database. This will save you up to 30% of SMS sending costs and you can invite more active subscribers with the same budget.\n\n-----------\n#### **Tip:** Learn about the difference between  [Sync and Async Number Lookup](doc:number-context-sync-vs-async).","excerpt":"Learn more about our Number Lookup solution.","slug":"clean-your-database","type":"basic","title":"Number Lookup: Database cleaning"}

Number Lookup: Database cleaning

Learn more about our Number Lookup solution.

You've sent promotional messages to your customers, then analyzed the delivery reports and found out that your phone number database has a lot of invalid numbers. You may consider cleaning it up with our Number Lookup solution. Number Lookup enables identifying unused and inactive numbers or the network your customer is currently using. We’re offering [three distinct packages](doc:number-context) tailor made for three types of enterprise clients. In order to clean up your database, you need to have our **Database Cleaning package** and perform Number Lookup with an HTTP POST request: [block:code] { "codes": [ { "code": "POST /number/1/query HTTP/1.1\nHost: api.infobip.com\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\nContent-Type: application/json\n\n{ \n \"to\":[\"41793026834\"]\n}", "language": "json" } ] } [/block] In this example we used only one phone number to make it easier to follow . Depending of the package, the response will be something like this: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nContent-Type: application/json\n\n{ \n \"results\":[ \n { \n \"to\":\"41793026834\",\n \"mccMnc\":\"22801\",\n \"imsi\":\"228012123477789\",\n \"originalNetwork\":{ \n \"networkPrefix\":\"79\",\n \"countryPrefix\":\"41\"\n },\n \"ported\":false,\n \"roaming\":false,\n \"status\":{ \n \"groupId\":3,\n \"groupName\":\"DELIVERED\",\n \"id\":5,\n \"name\":\"DELIVERED_TO_HANDSET\",\n \"description\":\"Message delivered to handset\"\n },\n \"error\":{ \n \"groupId\":0,\n \"groupName\":\"OK\",\n \"id\":0,\n \"name\":\"NO_ERROR\",\n \"description\":\"No Error\",\n \"permanent\":false\n }\n }\n ]\n}", "language": "json" } ] } [/block] From the information you will receive in the Number Lookup response, you can learn whether a phone number is valid or not. Here is [the list of available Number Lookup parameters per package](doc:number-context) and also [the list of available statuses](doc:response-codes). For example, 30 phone numbers are invalid and 70 are valid, so you decide to remove the 30 invalid ones from your database. This will save you up to 30% of SMS sending costs and you can invite more active subscribers with the same budget. ----------- #### **Tip:** Learn about the difference between [Sync and Async Number Lookup](doc:number-context-sync-vs-async).