{"id":22910,"date":"2020-02-04T15:26:32","date_gmt":"2020-02-04T15:26:32","guid":{"rendered":"https:\/\/www.intercom.com\/blog\/?p=22910"},"modified":"2020-09-17T11:10:34","modified_gmt":"2020-09-17T10:10:34","slug":"building-api-2","status":"publish","type":"post","link":"https:\/\/www.intercom.com\/blog\/building-api-2\/","title":{"rendered":"Building an API for powerful customer data analysis"},"content":{"rendered":"<p>Today we\u2019re delighted to launch our <a href=\"https:\/\/www.intercom.com\/blog\/changes\/en\/transform-customer-and-conversation-data-into-valuable-reports-and-insights-with-api-v-\" target=\"_blank\" rel=\"noopener noreferrer\">brand new API version 2.0<\/a>, which makes it easier for our customers to pull, analyze, and update Intercom contact and conversation data. This will more easily allow our customers to transform their data into valuable performance reports and business insights.<\/p>\n<p>It consists of an overhauled Conversations API, as well as brand new Contacts and Data Attributes APIs. Now you can filter contacts and conversations using any combination of fields, like contact location or conversation tag, to pull the exact data you want. Once you&#8217;ve <a href=\"https:\/\/developers.intercom.com\/building-apps\/docs\/update-your-api-version\" target=\"_blank\" rel=\"noopener noreferrer\">updated your API version<\/a>, you can systematically tag conversations, as well as leverage newly exposed contact attributes, more granular conversation timestamps, and out-of-the-box conversation metrics.<\/p>\n<blockquote class=\"pullquote-style-two\"><p>&#8220;We rebuilt our search capability in the new API to be more robust, intuitive and powerful in this release&#8221;<\/p><\/blockquote>\n<p>The benefits of this release are immense and enable you to improve your team\u2019s performance with custom reports, drive decision-making by leveraging your customer data in business intelligence tools, and deliver deeper context for more personalized customer conversations using your Intercom data.<\/p>\n<p>The area of search, in particular, has been transformed by this release, and I\u2019d like to dive into how we rebuilt our search capability in the new API to be more robust, intuitive and powerful.<\/p>\n<h2 id=\"finding-the-personal-in-the-data\">Finding the personal in the data<\/h2>\n<p>We often talk about our mission of making internet business personal \u2013 how we want to help companies foster better relationships with their customers through powerful, thoughtful technology.<\/p>\n<p>Online businesses might not get to meet their customers face to face in the way a coffee shop owner or corner store retailer do, but internet businesses can forge a sense of connection in other ways by leveraging data to offer more personalized, useful interactions. In order to support your customers effectively, you need to know who their customers are, and how they make their decisions.<\/p>\n<blockquote class=\"pullquote-style-one\"><p>&#8220;If the data isn\u2019t easily searchable and usable, it can effectively come between a business and its customers, obscuring the real people we\u2019re trying to connect with&#8221;<\/p><\/blockquote>\n<p>However, key to this is having appropriate context \u2013 and at a large enough scale and with enough data, it\u2019s possible to lose the person in the numbers, so to speak. If the data isn\u2019t easily searchable and usable, it can effectively come between a business and its customers, obscuring the real people we\u2019re trying to connect with. Having the right tools in place to manage, access, and analyze that data is critical to getting the right context on your customers, and without that context, relationships are incredibly hard to build.<\/p>\n<p>We\u2019ve seen this ourselves at Intercom \u2013 as we deal with more and more data, search becomes an increasingly fundamental problem. Accurate, robust, usable search is what makes all that data an asset rather than a hindrance.<\/p>\n<p>For our customers, it was increasingly vital that we supplied them with the tools to quickly and intuitively search their customer data. Our existing API was showing its age, limiting how our customers could search details about their own customers and conversations. It was also clear that, as the number and variety of our customers has grown dramatically over the years, we needed to devise a search capability that was flexible enough for any imaginable use case, while retaining intuitive discoverability.<\/p>\n<h2 id=\"searching-for-the-right-answers\">Searching for the right answers<\/h2>\n<p>Given the scale of the overhaul we were planning, we knew there was significant room to improve. For instance, our previous user filtering was limited to email address, and our User and Conversation list APIs only allowed ordering by a small number of attributes.<\/p>\n<p>Our APIs were not <a href=\"https:\/\/en.wikipedia.org\/wiki\/Representational_state_transfer\" target=\"_blank\" rel=\"noopener noreferrer\">RESTful<\/a> or industry standard, and paging through lists of users was subpar.<\/p>\n<p>As we looked to develop our APIs we considered the huge number of <a href=\"https:\/\/www.intercom.com\/blog\/resources\/books\/intercom-jobs-to-be-done\" target=\"_blank\" rel=\"noopener noreferrer\">jobs that people use Intercom for<\/a>, including jobs we might not yet be able to predict, and concluded that we should build a very versatile and intuitive search function into the API.<\/p>\n<p>We developed a set of principles for our APIs, and how we want them to behave. They should be:<\/p>\n<ul>\n<li><strong>Simple:<\/strong> Easy to grasp<\/li>\n<li><strong>Usable:<\/strong> Easy to use<\/li>\n<li><strong>Adaptable:<\/strong> Flexible enough for a variety of use cases<\/li>\n<li><strong>Discoverable:<\/strong> Easy to perceive<\/li>\n<\/ul>\n<h2 id=\"building-a-boring-but-innovative-solution\">Building a boring but innovative solution<\/h2>\n<p>As we adhere to the \u201c<a href=\"https:\/\/www.intercom.com\/blog\/videos\/build-boring-software\/\" target=\"_blank\" rel=\"noopener noreferrer\">build boring software<\/a>\u201d mantra, we looked at tried and trusted technology to help us achieve this. Intercom has <a href=\"https:\/\/www.intercom.com\/blog\/upgrading-elasticsearch\/\" target=\"_blank\" rel=\"noopener noreferrer\">long relied on Elasticsearch<\/a> as our primary way of searching data for internal use, as well as using it to power some of our product features (such as Inbox Search). We have also grown an increasingly sophisticated team and infrastructure to help manage our numerous Elasticsearch deployments. Our growing expertise in the area made it the right choice to power our search in the new API.<\/p>\n<p>Our challenge was to make the interface powerful yet intuitive, so we explored a number of options:<\/p>\n<h3>1: SQL-like language<\/h3>\n<p>One of our early explorations was on an SQL-like language, such as that used in Salesforce and Jira APIs. In practice, it would have looked something like this:<br \/>\n<span style=\"background-color: #fdf1db;\"><br \/>\n<code>SELECT Id, Name<br \/>\nFROM Contact<br \/>\nWHERE Name = 'Sandy'<\/code><\/span><\/p>\n<p>While this would have been extremely powerful, we quickly realized it would certainly not have been simple or usable. It would also have required a user to learn all the different syntax and language features to be able to use it effectively. Also, it was not clear how to deliver the SQL query in a Restful request.<\/p>\n<h3>2: Query string-based search language<\/h3>\n<p>Another option that seemed quite promising was a query string-based approach, such as that used by Zendesk\u2019s API until recently. It would have looked like: <span style=\"background-color: #fdf1db;\"><code>query=updated_at:1579273187 state:open<\/code><\/span>, where the number refers to the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Unix_time\" target=\"_blank\" rel=\"noopener noreferrer\">epoch or Unix date<\/a>.<\/p>\n<p>The most obvious drawback is that such a language would not have allowed full Boolean AND\/OR queries, so would not have been powerful enough. Also, it would have required the customer to URL encode their queries, making it less readable and therefore not as usable.<\/p>\n<h3>3: JSON-based query language<\/h3>\n<p>After much experimentation, we landed on a JSON-based query language, made up of discrete composable blocks. This seemed to fulfill all the principles we established at the outset.<\/p>\n<ul>\n<li><strong>Adaptable:<\/strong> it allows for very powerful full Boolean search queries that are easy to construct.<\/li>\n<li><strong>Usable:<\/strong> It consists of straightforward composable blocks.<\/li>\n<li><strong>Simple:<\/strong> Once you know the operators and basic building blocks, you can construct any query you like, with minimal effort.<\/li>\n<li><strong>Discoverable:<\/strong> It uses JSON payloads, which are easy for humans to read, machines to parse, and are widely used.<\/li>\n<\/ul>\n<h2 id=\"devising-the-building-blocks\">Devising the building blocks<\/h2>\n<p>Once we had decided on this direction, we came up with a simple yet composable query language. The main building blocks are query objects containing a field, operator and value:<\/p>\n<p><span style=\"background-color: #fdf1db;\"><code>{<br \/>\nfield: \"The field on the Contact object that you wish to target\",<br \/>\noperator: \"The comparison operator\",<br \/>\nvalue: \"The value to compare to. Can be one of the supported Data Types\"<br \/>\n}<\/code><\/span><\/p>\n<p>The accepted operators are:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-2-Syntax.jpg\" \/><\/p>\n<p>In the case of logical composite operators (AND and OR), the field is omitted, and the value is an array of query objects:<br \/>\n<span style=\"background-color: #fdf1db;\"><br \/>\n<code>{<br \/>\noperator: \"AND\",<br \/>\nvalue: [\"Array of query objects\"]<br \/>\n}<\/code><\/span><\/p>\n<p>This allows you to construct queries such as: &#8220;Get me all conversations that have been updated last week, are currently closed, and were assigned to Tier 1, Tier 2, or VIP inboxes.&#8221; This looks like the following:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-JSON-Code1.jpg\" \/><\/p>\n<p>Another example might be a search for: &#8220;Get me all contacts created this month who have lead_score over 80, located in United States, with phone number not empty.&#8217; Such a search would look like this:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-JSON-Code2.jpg\" \/><\/p>\n<h2 id=\"achieving-impact-with-context\">Achieving impact with context<\/h2>\n<p>As you can see, this language allows for complex, Boolean searches while adhering to our initial principles \u2013 crucially, it is robust and powerful enough for the infinite variety of jobs that you want to do with your data inside Intercom.<\/p>\n<p>By focusing on making the API highly usable, adaptable and discoverable, we believe we provide that context with more impact than ever before. After all, it is that critical context that makes all the difference between knowing your customer, and obscuring them behind the data.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Accurate, robust, usable search is what makes all your customer data an asset rather than a hindrance \u2013 here&#8217;s how we have improved search in our brand new API v2.0<\/p>\n","protected":false},"author":435,"featured_media":22920,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"category":[12898,4],"tags":[242,14178,529,263],"coauthors":[20845],"class_list":["post-22910","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","category-news","tag-apis","tag-elasticsearch","tag-product-launch","tag-search"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Building an API for powerful customer data analysis - The Intercom Blog<\/title>\n<meta name=\"description\" content=\"Accurate, usable search is what makes all your customer data an asset rather than a hindrance \u2013 here&#039;s how we have improved search in our brand new API v2.0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.intercom.com\/blog\/building-api-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building an API for powerful customer data analysis\" \/>\n<meta property=\"og:description\" content=\"Accurate, usable search is what makes all your customer data an asset rather than a hindrance \u2013 here&#039;s how we have improved search in our brand new API v2.0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.intercom.com\/blog\/building-api-2\/\" \/>\n<meta property=\"og:site_name\" content=\"The Intercom Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/intercominc\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-04T15:26:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-17T10:10:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-V2-hero.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1968\" \/>\n\t<meta property=\"og:image:height\" content=\"921\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Colin Kennedy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@intercom\" \/>\n<meta name=\"twitter:site\" content=\"@intercom\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Colin Kennedy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/\"},\"author\":{\"name\":\"Colin Kennedy\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/person\\\/ed96ffc0c45c5975b688d8d50d09dd9c\"},\"headline\":\"Building an API for powerful customer data analysis\",\"datePublished\":\"2020-02-04T15:26:32+00:00\",\"dateModified\":\"2020-09-17T10:10:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/\"},\"wordCount\":1310,\"publisher\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/API-V2-hero.jpg\",\"keywords\":[\"APIs\",\"elasticsearch\",\"Product Launch\",\"search\"],\"articleSection\":[\"Engineering\",\"News &amp; Updates\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/\",\"name\":\"Building an API for powerful customer data analysis - The Intercom Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/API-V2-hero.jpg\",\"datePublished\":\"2020-02-04T15:26:32+00:00\",\"dateModified\":\"2020-09-17T10:10:34+00:00\",\"description\":\"Accurate, usable search is what makes all your customer data an asset rather than a hindrance \u2013 here's how we have improved search in our brand new API v2.0\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-api-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/API-V2-hero.jpg\",\"contentUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/API-V2-hero.jpg\",\"width\":1968,\"height\":921},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/\",\"name\":\"The Intercom Blog\",\"description\":\"Articles and Podcasts on Customer Service, AI and Automation, Product, and more\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\",\"name\":\"The Intercom Blog\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Intercom-logo-sq-black-trans.png\",\"contentUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Intercom-logo-sq-black-trans.png\",\"width\":1000,\"height\":1000,\"caption\":\"The Intercom Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/intercominc\",\"https:\\\/\\\/x.com\\\/intercom\",\"https:\\\/\\\/www.instagram.com\\\/intercom\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/2491343\",\"https:\\\/\\\/www.pinterest.ie\\\/intercom\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCJG0MvLP03kyzzAkD-w98aQ\",\"https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/Intercom_(company)\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/person\\\/ed96ffc0c45c5975b688d8d50d09dd9c\",\"name\":\"Colin Kennedy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/704f9ec44be339968af874883ebb32b07ceb4c5d4e80121e48f70b58fffa962d?s=96&d=mm&r=pg773050251346a2b74293d3c2a1b63c38\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/704f9ec44be339968af874883ebb32b07ceb4c5d4e80121e48f70b58fffa962d?s=96&d=mm&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/704f9ec44be339968af874883ebb32b07ceb4c5d4e80121e48f70b58fffa962d?s=96&d=mm&r=pg\",\"caption\":\"Colin Kennedy\"},\"description\":\"Colin Kennedy is a Senior Product Engineer at Intercom. He previously worked at AOL Platforms and IBM.\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/author\\\/colinkennedy\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building an API for powerful customer data analysis - The Intercom Blog","description":"Accurate, usable search is what makes all your customer data an asset rather than a hindrance \u2013 here's how we have improved search in our brand new API v2.0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.intercom.com\/blog\/building-api-2\/","og_locale":"en_US","og_type":"article","og_title":"Building an API for powerful customer data analysis","og_description":"Accurate, usable search is what makes all your customer data an asset rather than a hindrance \u2013 here's how we have improved search in our brand new API v2.0","og_url":"https:\/\/www.intercom.com\/blog\/building-api-2\/","og_site_name":"The Intercom Blog","article_publisher":"https:\/\/www.facebook.com\/intercominc","article_published_time":"2020-02-04T15:26:32+00:00","article_modified_time":"2020-09-17T10:10:34+00:00","og_image":[{"width":1968,"height":921,"url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-V2-hero.jpg","type":"image\/jpeg"}],"author":"Colin Kennedy","twitter_card":"summary_large_image","twitter_creator":"@intercom","twitter_site":"@intercom","twitter_misc":{"Written by":"Colin Kennedy","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.intercom.com\/blog\/building-api-2\/#article","isPartOf":{"@id":"https:\/\/www.intercom.com\/blog\/building-api-2\/"},"author":{"name":"Colin Kennedy","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/person\/ed96ffc0c45c5975b688d8d50d09dd9c"},"headline":"Building an API for powerful customer data analysis","datePublished":"2020-02-04T15:26:32+00:00","dateModified":"2020-09-17T10:10:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.intercom.com\/blog\/building-api-2\/"},"wordCount":1310,"publisher":{"@id":"https:\/\/www.intercom.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.intercom.com\/blog\/building-api-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-V2-hero.jpg","keywords":["APIs","elasticsearch","Product Launch","search"],"articleSection":["Engineering","News &amp; Updates"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.intercom.com\/blog\/building-api-2\/","url":"https:\/\/www.intercom.com\/blog\/building-api-2\/","name":"Building an API for powerful customer data analysis - The Intercom Blog","isPartOf":{"@id":"https:\/\/www.intercom.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.intercom.com\/blog\/building-api-2\/#primaryimage"},"image":{"@id":"https:\/\/www.intercom.com\/blog\/building-api-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-V2-hero.jpg","datePublished":"2020-02-04T15:26:32+00:00","dateModified":"2020-09-17T10:10:34+00:00","description":"Accurate, usable search is what makes all your customer data an asset rather than a hindrance \u2013 here's how we have improved search in our brand new API v2.0","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.intercom.com\/blog\/building-api-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.intercom.com\/blog\/building-api-2\/#primaryimage","url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-V2-hero.jpg","contentUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-V2-hero.jpg","width":1968,"height":921},{"@type":"WebSite","@id":"https:\/\/www.intercom.com\/blog\/#website","url":"https:\/\/www.intercom.com\/blog\/","name":"The Intercom Blog","description":"Articles and Podcasts on Customer Service, AI and Automation, Product, and more","publisher":{"@id":"https:\/\/www.intercom.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.intercom.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.intercom.com\/blog\/#organization","name":"The Intercom Blog","url":"https:\/\/www.intercom.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2019\/08\/Intercom-logo-sq-black-trans.png","contentUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2019\/08\/Intercom-logo-sq-black-trans.png","width":1000,"height":1000,"caption":"The Intercom Blog"},"image":{"@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/intercominc","https:\/\/x.com\/intercom","https:\/\/www.instagram.com\/intercom\/","https:\/\/www.linkedin.com\/company\/2491343","https:\/\/www.pinterest.ie\/intercom\/","https:\/\/www.youtube.com\/channel\/UCJG0MvLP03kyzzAkD-w98aQ","https:\/\/en.wikipedia.org\/wiki\/Intercom_(company)"]},{"@type":"Person","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/person\/ed96ffc0c45c5975b688d8d50d09dd9c","name":"Colin Kennedy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/704f9ec44be339968af874883ebb32b07ceb4c5d4e80121e48f70b58fffa962d?s=96&d=mm&r=pg773050251346a2b74293d3c2a1b63c38","url":"https:\/\/secure.gravatar.com\/avatar\/704f9ec44be339968af874883ebb32b07ceb4c5d4e80121e48f70b58fffa962d?s=96&d=mm&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/704f9ec44be339968af874883ebb32b07ceb4c5d4e80121e48f70b58fffa962d?s=96&d=mm&r=pg","caption":"Colin Kennedy"},"description":"Colin Kennedy is a Senior Product Engineer at Intercom. He previously worked at AOL Platforms and IBM.","url":"https:\/\/www.intercom.com\/blog\/author\/colinkennedy\/"}]}},"jetpack_featured_media_url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2020\/02\/API-V2-hero.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts\/22910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/users\/435"}],"replies":[{"embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/comments?post=22910"}],"version-history":[{"count":0,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts\/22910\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/media\/22920"}],"wp:attachment":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/media?parent=22910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/category?post=22910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/tags?post=22910"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/coauthors?post=22910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}