{"_id":"551552e7c859ac2f0001b494","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"},"__v":13,"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"},"parentDoc":null,"project":"54eb50e5615ffc1900305a16","user":"54eb4fdedf7add210007b29b","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-03-27T12:53:59.307Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":25,"body":"Number Lookup provides information about phone numbers in your database. There are two ways of getting that information: \n\n - **Sync**\n - **Async** \n\nIf an API call is **synchronous**, it means that Number Lookup will be done before your application receives a response from an API call. In turn, this means the application code should properly handle waiting for the HTTP response so users don't perceive waiting for NC lookup response as latency or performance lag inside your app.\n\nMaking a synchronous API call can be beneficial if there is a code in your app that will only execute properly once the API response is received.\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\\\":[  \\n      \\\"41793026727\\\",\\n      \\\"41793026728\\\",\\n      \\\"41793026729\\\"\\n   ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nThe Number Lookup result will be received directly in the response:\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\\\":\\\"41793026727\\\",\\n         \\\"mccMnc\\\":\\\"22801\\\",\\n         \\\"originalNetwork\\\":{  \\n            \\\"networkPrefix\\\":\\\"79\\\",\\n            \\\"countryPrefix\\\":\\\"41\\\"\\n         },\\n         \\\"ported\\\":false,\\n         \\\"roaming\\\":false,\\n         \\\"status\\\":{  \\n            \\\"groupId\\\":2,\\n            \\\"groupName\\\":\\\"UNDELIVERABLE\\\",\\n            \\\"id\\\":9,\\n            \\\"name\\\":\\\"UNDELIVERABLE_NOT_DELIVERED\\\",\\n            \\\"description\\\":\\\"Message sent not delivered\\\"\\n         },\\n         \\\"error\\\":{  \\n            \\\"groupId\\\":1,\\n            \\\"groupName\\\":\\\"HANDSET_ERRORS\\\",\\n            \\\"id\\\":27,\\n            \\\"name\\\":\\\"EC_ABSENT_SUBSCRIBER\\\",\\n            \\\"description\\\":\\\"Absent Subscriber\\\",\\n            \\\"permanent\\\":false\\n         }\\n      }\\n   ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n**Asynchronous** calls do not wait for Number Lookup to be done before the API call response is returned. When Number Lookup is done, a \"callback\" function is executed and Number Lookup information is sent to the `notifyUrl` you specified in the request.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"POST /number/1/notify HTTP/1.1\\nHost: api.infobip.com\\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\\nContent-Type: application/json\\n\\n{  \\n   \\\"to\\\":[  \\n      \\\"41793026727\\\",\\n      \\\"41793026728\\\",\\n      \\\"41793026729\\\"\\n   ],\\n   \\\"notifyUrl\\\":\\\"http://example.com/notifyUrl\\\",\\n   \\\"notifyContentType\\\":\\\"application/json\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n-----------\n#### **Tip:** For detailed information about Number Lookup history, check out the [Sent lookups logs](doc:sent-lookup-logs) .","excerpt":"Learn about the difference between synchronous and asynchronous Number Lookup.","slug":"number-context-sync-vs-async","type":"basic","title":"Number Lookup: Sync vs. Async"}

Number Lookup: Sync vs. Async

Learn about the difference between synchronous and asynchronous Number Lookup.

Number Lookup provides information about phone numbers in your database. There are two ways of getting that information: - **Sync** - **Async** If an API call is **synchronous**, it means that Number Lookup will be done before your application receives a response from an API call. In turn, this means the application code should properly handle waiting for the HTTP response so users don't perceive waiting for NC lookup response as latency or performance lag inside your app. Making a synchronous API call can be beneficial if there is a code in your app that will only execute properly once the API response is received. [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\":[ \n \"41793026727\",\n \"41793026728\",\n \"41793026729\"\n ]\n}", "language": "json" } ] } [/block] The Number Lookup result will be received directly in the response: [block:code] { "codes": [ { "code": "HTTP/1.1 200 OK\nContent-Type: application/json\n\n{ \n \"results\":[ \n { \n \"to\":\"41793026727\",\n \"mccMnc\":\"22801\",\n \"originalNetwork\":{ \n \"networkPrefix\":\"79\",\n \"countryPrefix\":\"41\"\n },\n \"ported\":false,\n \"roaming\":false,\n \"status\":{ \n \"groupId\":2,\n \"groupName\":\"UNDELIVERABLE\",\n \"id\":9,\n \"name\":\"UNDELIVERABLE_NOT_DELIVERED\",\n \"description\":\"Message sent not delivered\"\n },\n \"error\":{ \n \"groupId\":1,\n \"groupName\":\"HANDSET_ERRORS\",\n \"id\":27,\n \"name\":\"EC_ABSENT_SUBSCRIBER\",\n \"description\":\"Absent Subscriber\",\n \"permanent\":false\n }\n }\n ]\n}", "language": "json" } ] } [/block] **Asynchronous** calls do not wait for Number Lookup to be done before the API call response is returned. When Number Lookup is done, a "callback" function is executed and Number Lookup information is sent to the `notifyUrl` you specified in the request. [block:code] { "codes": [ { "code": "POST /number/1/notify HTTP/1.1\nHost: api.infobip.com\nAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\nContent-Type: application/json\n\n{ \n \"to\":[ \n \"41793026727\",\n \"41793026728\",\n \"41793026729\"\n ],\n \"notifyUrl\":\"http://example.com/notifyUrl\",\n \"notifyContentType\":\"application/json\"\n}", "language": "json" } ] } [/block] ----------- #### **Tip:** For detailed information about Number Lookup history, check out the [Sent lookups logs](doc:sent-lookup-logs) .