{"_id":"564e01de8980c32b009e8bca","__v":7,"category":{"_id":"564df3217c8f372b00b934df","project":"564de2dbfe07a81700b5c3a5","__v":12,"pages":["564e01de8980c32b009e8bca","564e031f5eab6e0d0069ca38","564e057a873c362d005172b2","564e05a15eab6e0d0069ca40","564e07b01494cc2b00acb618","56941291d8c04d1700e5adc2","5696aca1cb14e11700f8aa01","56d46a4f73dcd20b00fb8647","56d46a5b8001e30b00896ebb","56f00bd1d58ed32400df6092","56f01568d58ed32400df60c1","56f0194911415c2900969c10"],"version":"564de2dbfe07a81700b5c3a8","sync":{"url":"","isSync":false},"reference":true,"createdAt":"2015-11-19T16:04:49.459Z","from_sync":false,"order":1,"slug":"api","title":"API"},"editedParams2":true,"project":"564de2dbfe07a81700b5c3a5","user":"564de2b4fe07a81700b5c3a4","githubsync":"","parentDoc":null,"editedParams":true,"version":{"_id":"564de2dbfe07a81700b5c3a8","project":"564de2dbfe07a81700b5c3a5","__v":10,"createdAt":"2015-11-19T14:55:23.838Z","releaseDate":"2015-11-19T14:55:23.837Z","categories":["564de2ddfe07a81700b5c3a9","564df317826645210097a890","564df3217c8f372b00b934df","564e5227c3553e0d003e53ba","5666dac5d784a70d00397bcb","56cd08ddd98d851d00c0c3bd","56e9a50946bfd60e008840a7","5718e37bf8f7de1900683fad","58c3308dfedf070f0043b72c","58ce99c75457d02300560c0a"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"updates":["5ae78acfed77fb0003b01a92","5bd6f1a58f8b97002378b505"],"next":{"pages":[],"description":""},"createdAt":"2015-11-19T17:07:42.454Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[{"code":"$.embedly.oembed('url', {});","language":"javascript"}]},"method":"get","results":{"codes":[{"code":"{\n\"provider_url\": \"https://techcrunch.com\",\n\"description\": \"Chris Sacca, a former Google lawyer who rose to fame by betting heavily on Twitter and Uber, says he's \\\"hanging up his spurs,\\\" and getting out of the investing game.\",\n\"embeds\": [],\n\"safe\": true,\n\"provider_display\": \"techcrunch.com\",\n\"related\": [],\n\"favicon_url\": \"https://s0.wp.com/wp-content/themes/vip/techcrunch-2013/assets/images/favicon.ico\",\n\"authors\": [\n{\n\"url\": \"https://techcrunch.com/author/connie-loizos/\",\n\"name\": \"Connie Loizos\"\n}\n],\n\"images\": [\n{\n\"caption\": null,\n\"url\": \"https://tctechcrunch2011.files.wordpress.com/2015/12/chris-sacca.jpg?w=764&h=400&crop=1\",\n\"height\": 400,\n\"width\": 764,\n\"colors\": [\n{\n\"color\": [\n18,\n19,\n17\n],\n\"weight\": 0.7021484375\n},\n{\n\"color\": [\n97,\n84,\n70\n],\n\"weight\": 0.1240234375\n},\n{\n\"color\": [\n151,\n115,\n91\n],\n\"weight\": 0.0517578125\n},\n{\n\"color\": [\n223,\n158,\n123\n],\n\"weight\": 0.0446777344\n},\n{\n\"color\": [\n233,\n202,\n174\n],\n\"weight\": 0.0263671875\n}\n],\n\"entropy\": 4.7803223993,\n\"size\": 88810\n},\n{\n\"caption\": null,\n\"url\": \"https://tctechcrunch2011.files.wordpress.com/2015/12/chris-sacca.jpg?w=738\",\n\"height\": 488,\n\"width\": 738,\n\"colors\": [\n{\n\"color\": [\n18,\n20,\n20\n],\n\"weight\": 0.7199707031\n},\n{\n\"color\": [\n93,\n85,\n73\n],\n\"weight\": 0.1225585938\n},\n{\n\"color\": [\n223,\n160,\n124\n],\n\"weight\": 0.048095703100000005\n},\n{\n\"color\": [\n148,\n113,\n87\n],\n\"weight\": 0.044921875\n},\n{\n\"color\": [\n235,\n231,\n218\n],\n\"weight\": 0.0329589844\n}\n],\n\"entropy\": 4.6758304806,\n\"size\": 101948\n},\n{\n\"caption\": null,\n\"url\": \"https://img.vidible.tv/prod/2017-04/25/58ffc1f48c08e052e1644070/58ffc3f9e6604d71fb7cdb54_o_U_v1.jpg?w=300&h=170\",\n\"height\": 170,\n\"width\": 300,\n\"colors\": [\n{\n\"color\": [\n85,\n67,\n59\n],\n\"weight\": 0.4489746094\n},\n{\n\"color\": [\n153,\n149,\n143\n],\n\"weight\": 0.1459960938\n},\n{\n\"color\": [\n126,\n119,\n104\n],\n\"weight\": 0.1435546875\n},\n{\n\"color\": [\n14,\n14,\n14\n],\n\"weight\": 0.1369628906\n},\n{\n\"color\": [\n200,\n196,\n183\n],\n\"weight\": 0.1245117188\n}\n],\n\"entropy\": 6.2522511555,\n\"size\": 8629\n},\n{\n\"caption\": null,\n\"url\": \"https://tctechcrunch2011.files.wordpress.com/2016/12/waggle_4_dog_party_hat.jpg?w=150\",\n\"height\": 79,\n\"width\": 150,\n\"colors\": [\n{\n\"color\": [\n238,\n216,\n185\n],\n\"weight\": 0.4328613281\n},\n{\n\"color\": [\n214,\n170,\n131\n],\n\"weight\": 0.271484375\n},\n{\n\"color\": [\n199,\n114,\n59\n],\n\"weight\": 0.0993652344\n},\n{\n\"color\": [\n112,\n61,\n23\n],\n\"weight\": 0.0729980469\n},\n{\n\"color\": [\n152,\n93,\n48\n],\n\"weight\": 0.059814453100000005\n}\n],\n\"entropy\": 6.1035896517,\n\"size\": 8647\n},\n{\n\"caption\": null,\n\"url\": \"https://tctechcrunch2011.files.wordpress.com/2017/04/founding-team-v3.jpeg?w=150\",\n\"height\": 101,\n\"width\": 150,\n\"colors\": [\n{\n\"color\": [\n150,\n135,\n120\n],\n\"weight\": 0.2763671875\n},\n{\n\"color\": [\n98,\n90,\n85\n],\n\"weight\": 0.259765625\n},\n{\n\"color\": [\n174,\n182,\n176\n],\n\"weight\": 0.2321777344\n},\n{\n\"color\": [\n48,\n49,\n52\n],\n\"weight\": 0.2316894531\n}\n],\n\"entropy\": 6.4027591671,\n\"size\": 22655\n}\n],\n\"cache_age\": 86400,\n\"language\": \"en\",\n\"app_links\": [\n{\n\"path\": \"http/https://techcrunch.com/2017/04/26/investor-chris-sacca-is-retiring-from-venture-capital/\",\n\"package\": \"com.aol.mobile.techcrunch\",\n\"namespace\": \"google\",\n\"type\": \"android\"\n}\n],\n\"original_url\": \"https://techcrunch.com/2017/04/26/investor-chris-sacca-is-retiring-from-venture-capital/\",\n\"url\": \"https://techcrunch.com/2017/04/26/investor-chris-sacca-is-retiring-from-venture-capital/\",\n\"media\": {},\n\"title\": \"Investor Chris Sacca is retiring from venture capital\",\n\"offset\": null,\n\"lead\": null,\n\"content\": \"<div>\\n<img src=\\\"https://tctechcrunch2011.files.wordpress.com/2015/12/chris-sacca.jpg?w=738\\\"><p>Chris Sacca, a former Google lawyer who rose to fame by betting heavily on Twitter and Uber, says he's \\\"hanging up his spurs,\\\" and getting out of the investing game.</p>\\n<p>In a <a href=\\\"https://lowercasecapital.com/2017/04/26/hanging-up-my-spurs/\\\">new post</a>, Sacca explains that he achieved what he set out to do when he created his venture firm, <a href=\\\"https://lowercasecapital.com/\\\">Lowercase Capital</a>, in 2009, an outfit that was helped along by early checks from Industry Ventures, Yahoo CEO Marissa Mayer, and Sacca's former Google boss, Eric Schmidt.</p>\\n<p>Sacca had made one early bet in Instagram, as highlighted in a <a href=\\\"https://www.forbes.com/sites/alexkonrad/2015/03/25/how-venture-cowboy-chris-sacca-made-billions/#562b2d716597\\\"><em>Forbes</em> profile</a> about him in 2015. He quickly moved on to Twitter, however, creating four separate funds to buy up as many shares in the company, including from employees, as he could get his hands on.</p>\\n<p>\\\"I wasted months trying to get others to believe it could be a real business, not just a toy,\\\" he told Forbes. \\\"And I decided to just buy it all myself.\\\" By the time of the article's publication, those various Twitter deals had reportedly returned $5 billion to investors.</p>\\n<p>Sacca later tried repeating the move, gobbling up as many early Uber shares as he could. Yet at some point, his aggressive buying spree created a rift between himself and Uber CEO Travis Kalanick, who reportedly wasn't keen on him approaching employees about selling their stakes.</p>\\n<p>That Sacca - who reportedly owned at least <a href=\\\"http://www.businessinsider.com/investor-chris-sacca-owns-4-of-uber-but-barely-speaks-to-ceo-travis-kalanick-2015-3\\\">4 percent</a> of the company at once point (and may still) - has \\\"zero say\\\" in how Uber is run has been \\\"frustrating,\\\" he <a href=\\\"https://twitter.com/sacca/status/833464144271597568\\\">tweeted</a> in February.</p>\\n<p>In recent years, Sacca has also <a href=\\\"http://www.cnbc.com/2017/03/15/chris-sacca-twitter-investor-hates-stock-calls-bot-issue-embarrassing.html\\\">distanced himself</a> from Twitter, posting to his active Twitter account in March that, \\\"I haven't owned TWTR for almost a couple of years. When they failed to get Ev involved again, I lost hope. Love the service, hate the stock.\\\"</p>\\n<p>In announcing his retirement from venture investing today, Sacca writes that it's \\\"hard to leave all this behind right when things are going so well. I'm good at what I do and still getting improving as I learn from mentors, founders, partners, friends, family, strangers, my own investors, and the experience itself. The better I get at investing in and helping companies, the result is more founders who are excited to work with me and more of my wonderful limited partners insisting I take piles of their loot to keep it all going.\\\"</p>\\n<p>Still, says Sacca, with three children under age six, homes in Big Sky, Montana; Truckee, Ca.; and L.A., he's been trying to invest part-time and realized that it \\\"doesn't work when I've just got toes dangling in the water.\\\" He's opting not to raise more money for Lowercase, as a result. (He hints that his investing partner at the firm, Matt Mazzeo, will have a fund of his own soon.)</p>\\n<p>So what comes next for Sacca? To head off any other questions about what comes next, he answers them pre-emptively in a rhetorical question format. Politics? No. More \\\"Shark Tank,\\\" the hit TV show where he has appeared as a judge in past seasons? No.</p>\\n<p>What he will be doing, he says, is potentially more (other) TV, along with a podcast that Sacca describes as \\\"different from anything else I've seen out there,\\\" with subject matter that is \\\"hopefully boundless, eye-opening, and a little cathartic.\\\"</p>\\n<p>Matt Mazzeo, a former CAA business development exec who joined Sacca at Lowercase in 2012, had told Forbes a couple of years back: \\\"I don't think Chris is one of those guys who makes a ton of money and drops the mic and leaves the room. He loves the people in the room so much that he'll stay.\\\"</p>\\n<p>Times change, however. For Sacca, it's now \\\"time to walk away.\\\"</p>\\n</div>\",\n\"entities\": [],\n\"favicon_colors\": [\n{\n\"color\": [\n0,\n148,\n1\n],\n\"weight\": 0.2082519531\n},\n{\n\"color\": [\n252,\n252,\n252\n],\n\"weight\": 0.0417480469\n}\n],\n\"keywords\": [],\n\"published\": 1491987613000,\n\"provider_name\": \"TechCrunch\",\n\"type\": \"html\"\n}","language":"json","status":200,"name":""}]},"settings":"","auth":"required","params":[{"_id":"564de4a9fe07a81700b5c3b2","ref":"","in":"query","required":false,"desc":"The URL is to retrieve embedding information. This URL must be escaped to ensure that Embedly retrieves the correct link. For example, this Embedly URL.","default":"","type":"string","name":"url"},{"_id":"564df12e7441dc350097531b","ref":"","in":"query","required":false,"desc":"A comma separated list of urls for Embedly to process. Each URL must be escaped, but commas separating URLS must NOT be URL encoded. urls accepts a maximum of 10 urls at a time. Embedly processes these urls in parallel, therefore, it’s quicker to use urls for batched processing.","default":"","type":"string","name":"urls"},{"_id":"564de4a9fe07a81700b5c3b1","ref":"","in":"query","required":false,"desc":"This is the maximum width of the embed in pixels. maxwidth is used for scaling down embeds so they fit into a certain width. If the container for an embed is 500px you should pass maxwidth=500 in the query parameters.","default":"","type":"int","name":"maxwidth"},{"_id":"564df12e7441dc350097531a","ref":"","in":"query","required":false,"desc":"This is the maximum height of the embed in pixels. Functions the same as maxwidth, but for the height of the embed instead. It’s noteworthy that maxwidth is preferred over maxheight.","default":"","type":"int","name":"maxheight"},{"_id":"564df2897441dc350097531f","ref":"","in":"query","required":false,"desc":"Will scale embeds type rich and video to the exact width that a developer specifies in pixels. Embeds smaller than this width will be scaled up and embeds larger than this width will be scaled down. Note that using this may cause distortion when scaling up embeds.","default":"","type":"int","name":"width"},{"_id":"56c5dedb89048b17000ef675","ref":"","in":"query","required":false,"desc":"Will scale embeds type rich and video to the exact height that a developer specifies in pixels. Embeds smaller than this height will be scaled up and embeds larger than this height will be scaled down. Note that using this may cause distortion when scaling up embeds.","default":"","type":"int","name":"height"},{"_id":"564df2897441dc350097531e","ref":"","in":"query","required":false,"desc":"The response format – Accepted values: (xml, json)","default":"","type":"string","name":"format"},{"_id":"564df2897441dc350097531d","ref":"","in":"query","required":false,"desc":"Will append the wmode value to the flash object. Possible values include window, opaque and transparent.","default":"","type":"string","name":"wmode"},{"_id":"564dfad332e48b0d005f9db0","ref":"","in":"query","required":false,"desc":"Returns a (jsonp) response format. The callback is the name of the javascript function to execute.","default":"","type":"string","name":"callback"},{"_id":"564dfad332e48b0d005f9daf","ref":"","in":"query","required":false,"desc":"By default Embedly does not return script embeds for jsonp requests. They just don’t work and cause lots of issues. In some cases, you may need the script tag for saving and displaying later. In order for Embedly to send the script embeds over jsonp add allowscripts=true. Use with care, and this option is only valid when a callback is supplied, otherwise, it is ignored.","default":"","type":"boolean","name":"allowscripts"},{"_id":"564dfad332e48b0d005f9dae","ref":"","in":"query","required":false,"desc":"This will tell the video/rich media to automatically play when the media is loaded. Accepted values: (true, false) Default: false","default":"","type":"boolean","name":"autoplay"},{"_id":"564dfad332e48b0d005f9dad","ref":"","in":"query","required":false,"desc":"The words parameter works by trying to split the description at the closest sentence to that word count","default":"50","type":"string","name":"words"},{"_id":"564dfad332e48b0d005f9dac","ref":"","in":"query","required":false,"desc":"chars is much simpler than words. Embedly will blindly truncate a description to the number of characters you specify adding ... at the end when needed.","default":"","type":"string","name":"chars"},{"_id":"564dfad332e48b0d005f9dab","ref":"","in":"query","required":false,"desc":"With luxe Embedly’s iframe is initially loaded with poster image and play button rather than loading the whole embed. When the user clicks play the embed is loaded and starts playing.","default":"0","type":"boolean","name":"luxe"},{"_id":"564dfad332e48b0d005f9daa","ref":"","in":"query","required":false,"desc":"secure allows you to serve embeds with a SSL connection. You can also serve images over SSL with our Display product. You can enable this by adding secure=true.","default":"","type":"boolean","name":"secure"},{"_id":"564dfad332e48b0d005f9da9","ref":"","in":"query","required":false,"desc":"scheme allows to set the protocol scheme explicity to http or https. By default embeds are sent back protocol-less so that they will work in any page. You can explicity set a protocol by adding scheme=https.","default":"","type":"string","name":"scheme"},{"_id":"569fbbe9650e1d1900f96bba","ref":"","in":"query","required":false,"desc":"With title Embedly will set the title response attribute to the open_graph, meta, or twitter title if available in the page. Accepted values: (og, twitter, meta)","default":"","type":"string","name":"title"},{"_id":"569fbbe9650e1d1900f96bb9","ref":"","in":"query","required":false,"desc":"With description Embedly will set the description response attribute to the open_graph, meta, or twitter description if available in the page. Accepted values: (og, twitter, meta)","default":"","type":"string","name":"description"},{"_id":"56f1a1c2da0c573400baccfd","ref":"","in":"query","required":false,"desc":"Will return only images found in meta tags or an API response if set.","default":"0","type":"boolean","name":"meta_images"},{"_id":"58c19b349c331e0f00daf59a","ref":"","in":"query","required":false,"desc":"Turns on/off player analytics","default":"1","type":"boolean","name":"a"},{"_id":"598cb36ea3747d0019ea08d2","ref":"","in":"query","required":false,"desc":"Turns on/off Do Not Track support within embed","default":"0","type":"boolean","name":"dnt"}],"url":"/1/extract"},"isReference":true,"order":1,"body":"[block:api-header]\n{\n \"type\": \"basic\",\n \"title\": \"Response Attributes\"\n}\n[/block]\n\n**``original_url``**\nThe url that was passed into Embedly. This will be something like a bit.ly shortened link or if there is no redirect it will be the same as the ``url`` attribute.\n\n**``url``**\nThe effective url of the request. Whatever Embedly found at the end of any\nredirects.\n\n**``type``**\nReturns the type of the document at this URL, they can be one of the following:\n\n * ``html``: The most common response. The resource is an ``html`` document.\n * ``text``: The response is a plain ``text`` document.\n * ``image``: This is a static viewable ``image``.\n * ``video``: This is a playable ``video``.\n * ``audio``: This is a playable ``audio``.\n * ``rss``: The resource is an ``rss`` feed.\n * ``xml``: The resource is an ``xml`` document.\n * ``atom``: The resource is an ``atom`` feed.\n * ``json``: The resource is a ``json`` document.\n * ``ppt``: The resource is a PowerPoint document.\n * ``link``: This is a general embed that may not contain HTML.\n * ``error``: When accessing multiple urls at once Embedly will not throw HTTP errors as normal. Instead, it will return an ``error`` type response that includes the ``url``, ``error_message`` and ``error_code``.\n\n**``cache_age``**\nHow long Embedly is going to cache the response for? Generally, this is for a day, unless some external factor tells us to reevaluate the resource.\n\n**``safe``**\nSafe is an attribute that tells you if the url is on a phishing or malware list. Embedly uses Google's\n[Safe Browsing API](http://code.google.com/apis/safebrowsing/) to obtain a list of malicious urls. By using this API through our service, you agree to its[terms of service](https://developers.google.com/safe-browsing/terms).\n\n**``provider_name``**\nThe name of the resource provider.\n\n**``provider_url``**\nThe url of the resource provider.\n\n**``provider_display``**\nFor display purposes we ``include provider_display``, it's the subdomain, hostname, and public suffix of the provider.\n\n**``favicon_url``**\nThe url of the favicon.\n\n**``favicon_colors``**\nList of dominant colors extracted from ``favicon_url``.\n\n**``title``**\nThe title of the resource. It's picked in the following order:\n\n * The rss entry's title\n * The oEmbed title\n * The open graph title\n * The ``meta`` title tag\n * The ``title`` attribute in the ``head`` element\n\n**``authors``**\nA list of all the authors that are associated with this article. Each author has a ``url`` and ``name``. Here is an example response:\n\n [{\n \"name\": \"Sean Creeley\"\n \"url\": \"http://blog.embed.ly/screeley\"\n }]\n\nMost articles have only one author, but ``authors`` makes it flexible enough to add more if necessary.\n\n**``published``**\nA representation of the date which the article was published in milliseconds. If an ``offset`` is present, then there was timezone data present, otherwise we assume the Date is in UTC. Like all dates, this is a little confusing, so we will explain. Say the Embedly parser came across the following HTML:\n\n <span class=\"pubdate\">Aug 24, 2012</span>\n\nBecause there is no timezone information, Embedly will not return an ``offset`` and the ``published`` attribute will be in UTC. We will return the following response:\n\n \"published\": 1345766400000\n\n\n**``offset``**\nThe UTC offset of the date in milliseconds. See the above section for more information about ``offset`` and how to use it with the ``published`` time.\n\n**``description``**\nThe description of the resource. It's picked in the following order:\n\n* The oEmbed description\n* The open graph description\n* The ``meta`` description tag\n* An excerpt pulled programmaticly by Embedly\n\n**``lead``**\nOften there is a lead paragraph that is a brief summary of the rest of the\narticle. Embedly tries to pull this lead paragraph out for a better reading\nexperience. It is always a ``p`` tag, i.e.::\n\n \"lead\": \"<p>This is a summary of the below article</p>\"\n\n**``content``**\nThis is the html that we pulled from the URL. It's been sanitized, so it will only contain the following tags::\n\n 'a', 'abbr', 'acronym', 'b', 'big', 'blockquote', 'br', 'cite', 'code',\n 'del', 'dfn', 'em', 'i', 'ins', 'kbd', 'mark', 'pre', 'q', 's', 'samp',\n 'small', 'span', 'strike', 'strong', 'sub', 'sup', 'time', 'tt', 'u',\n 'var', 'p', 'div', 'a', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'ol', 'ul',\n 'li'\n\nAll tag attributes have been removed as well. The only effective attributes are:\n\n * ``href`` on an ``a`` tag\n * ``src`` on an ``img`` tag\n\n**``keywords``**\n\nReturns the meta keywords from the page.\n\nThe ``keywords`` object gives you a list of ranked keywords extracted from the article or blog text of a URL. This is different from the meta keywords defined by the page. Embedly uses its own ranking system to determine which keywords are the most relevant. Each keyword has two values:\n\n ``name``\n Name of the keyword.\n\n ``score`` (DEPRECATED)\n Returns 0 for no specific relevance.\n Score of the keyword from the article, larger numbers infer more relevance.\n\n\n**``language``**\n\nReturns the language code for the page. Typically ISO639-1 standard, i.e. en, fr, etc.\n\n\n**``entities``** (DEPRECATED)\n\nReturns an empty list.\n\nThe ``entities`` object gives you a list of proper nouns (persons, places, and things) extracted from the article or blog text of a URL. Along with each entity name, Embedly counts the number of times it appears in the text. Each entity has two values:\n\n ``name``\n Name of the entity (person, place, or thing).\n\n ``count``\n Number of times an entity appears in the text.\n\n\n**``images``**\nThe ``images`` object is a list of, at most, 5 images that Embedly found while processing the URL. Along with the list of images we pull various pieces of information about each image including dimensions, dominant colors, entropy, captions, and size. Each image contains:\n\n ``width``: The width of the image in pixels (required)\n ``height``: The height of the image in pixels (required)\n ``size``: The size in bytes of the image.\n ``caption``: An image caption is the short description or sentence that many sites provide below each image. This text usually describes what the image is depicting.\n ``entropy``: Image entropy can be roughly thought of as how \"busy\" an image is. Image entropy can be useful in programmatically choosing the type of image to display. For instance, if an API user wants to display photographic type images, but not logos, they can ignore images with lower entropy.\n ``colors``: The dominant colors of an image are those colors that make up the majority of\n an image. The ``color`` attribute is the RGB representation of the color and and the ``wight`` is how prevalent that color is in the image.\n\n**``app_links``**\nThere are few different specs for deep linking, they include [App Links](http://applinks.org/), Twitter's [App Card](https://dev.twitter.com/cards/types/app) and Google's [App Indexing](http://developer.android.com/training/app-indexing/enabling-app-indexing.html). Embedly parses and returns all three in a list of objects. Each is dependent on the spec, but two attributes are the same for each:\n\n ``namespace``: The type of the deep link. ``ai``, ``twitter`` or ``google \n ``type``: The type of the device the deep link targets ``ipad``, ``iphone``, ``andriod``, ``ios`` etc.\n\n \n**``media``**\nThe media is primary type of content (video, photo, etc.) that is associated with a ``url``. It follows the general pattern of the [/1/oembed](doc:oembed) Response, but with only a limited set of attributes. Note: It is optional and only available if we can classify it as such type.\n\n**``type``**\nThe resource type. Valid values, along with value-specific parameters, are described below.\n\n\n###The photo type\nThis type is used for representing static photos. The following parameters are\ndefined:\n\n``url``\n The source URL of the image. Consumers should be able to insert this URL\n into an``<img>``element. Only HTTP and HTTPS URLs are valid.\n\n``width``\n The width in pixels of the image specified in the ``url`` parameter.\n\n``height``\n The height in pixels of the image specified in the ``url`` parameter.\n\n\n### The video type\nThis type is used for representing playable videos. The following parameters\nare defined:\n\n``html``\n The HTML required to embed a video player. The HTML should have no padding\n or margins. Consumers may wish to load the HTML in an off-domain iframe to\n avoid XSS vulnerabilities.\n\n``width``\n The width in pixels required to display the HTML. If not supplied\n the HTML returned will expand horizontally to the size of its parent\n container.\n\n``height``\n The height in pixels required to display the HTML. If not supplied\n the HTML returned will expand vertically to the size of its parent\n container.\n\n\n###The rich type\nThis type is used for rich HTML content that does not fall under one of the\nother categories. The following parameters are defined:\n\n``html`` (required)\n The HTML required to display the resource. The HTML should have no padding\n or margins. Consumers may wish to load the HTML in an off-domain iframe to\n avoid XSS vulnerabilities. The markup should be valid XHTML 1.0 Basic.\n\n``width``\nThe width in pixels required to display the HTML. If not supplied\nthe HTML returned will expand horizontally to the size of its parent\ncontainer.\n\n``height``\nThe height in pixels required to display the HTML. If not supplied the HTML returned will expand vertically to the size of its parent container.\n\n\n###Optional media fields\n\n**``age_restriction``**\nA string value for age restrictions; valid values include variations of 18+, 13+, R, PG. Only present if populated.\n\n**``duration``**\nA float value for duration of video, audio segment in seconds. Only present if populated.\n[block:api-header]\n{\n \"type\": \"basic\",\n \"title\": \"Error Codes\"\n}\n[/block]\n###JSON Requests\n\n400 Bad Request\n\n * Required \"url\" parameter is missing.\n * Either \"url\" or \"urls\" parameter is reqiured.\n * Invalid URL format.\n * Invalid \"maxheight\" parameter.\n * Invalid \"maxwidth\" parameter.\n * Invalid \"urls\" parameter, exceeded max count of 20.\n\n401 Unauthorized\n\n * Invalid key or oauth_consumer_key provided: <key>, contact: support:::at:::embed.ly.\n * The provided key does not support this endpoint: <key>, contact: support@embed.ly.\n * URL is private or restricted.\n\n403 Forbidden\n\n * This service requires an embedly key parameter, contact: support@embed.ly or sign up: http://embed.ly/signup.\n * Invalid IP provided: <ip>, contact: support@embed.ly.\n * Invalid referrer provided: <referrer>, contact: support@embed.ly.\n\n404 Not Found\n URL Not Found or unable to be accessed by Embedly servers.\n \n ``Note``: Error message will contain Upstream server response.\n\n500 Server issues\nEmbed.ly is having trouble with this url. Please try again or contact us, support@embed.ly.\n\n501 Not Implemented\nNot implemented for format: acceptable values are ``{json}``.\n\n503 Service Unavailable\n``Note``: This happens if our service is down, please contact us immediately: support@embed.ly.\n\n### JSONP Requests\nFormat\n\n ``callbackFunction({\"url\": \"url with error\", \"error_code\": \"error code\",\n \"error_message\": \"error message\", \"type\": \"error\"})``\n\nError Response\n \n ``jsonp1273162787542({\"url\": \"http://flickr.com/embedly\", \"error_code\": 404, \"error_message\":\n \"HTTP 404: Not Found\", \"type\": \"error\"})``\n[block:callout]\n{\n \"type\": \"success\",\n \"body\": \"Try out our handy [Extract API Explorer](http://embed.ly/docs/explore/extract). It's awesome and will allow you to preview the response of any URL.\\n\\nGo to the [Extract API Explorer](http://embed.ly/docs/explore/extract)\",\n \"title\": \"Want to try out the Extract API?\"\n}\n[/block]","excerpt":"Extract allows users to dive into specifics on a site and beyond. With this API we allow developers to extract article text, topics, and retrieve more meta-data about articles, blog posts, and stories.","slug":"extract","type":"endpoint","title":"/1/extract"}

Video

Integrations

get/1/extract

Extract allows users to dive into specifics on a site and beyond. With this API we allow developers to extract article text, topics, and retrieve more meta-data about articles, blog posts, and stories.

Definition

{{ api_url }}{{ page_api_url }}

Parameters

Query Params

url:

string

The URL is to retrieve embedding information. This URL must be escaped to ensure that Embedly retrieves the correct link. For example, this Embedly URL.

urls:

string

A comma separated list of urls for Embedly to process. Each URL must be escaped, but commas separating URLS must NOT be URL encoded. urls accepts a maximum of 10 urls at a time. Embedly processes these urls in parallel, therefore, it’s quicker to use urls for batched processing.

maxwidth:

integer

This is the maximum width of the embed in pixels. maxwidth is used for scaling down embeds so they fit into a certain width. If the container for an embed is 500px you should pass maxwidth=500 in the query parameters.

maxheight:

integer

This is the maximum height of the embed in pixels. Functions the same as maxwidth, but for the height of the embed instead. It’s noteworthy that maxwidth is preferred over maxheight.

width:

integer

Will scale embeds type rich and video to the exact width that a developer specifies in pixels. Embeds smaller than this width will be scaled up and embeds larger than this width will be scaled down. Note that using this may cause distortion when scaling up embeds.

height:

integer

Will scale embeds type rich and video to the exact height that a developer specifies in pixels. Embeds smaller than this height will be scaled up and embeds larger than this height will be scaled down. Note that using this may cause distortion when scaling up embeds.

format:

string

The response format – Accepted values: (xml, json)

wmode:

string

Will append the wmode value to the flash object. Possible values include window, opaque and transparent.

callback:

string

Returns a (jsonp) response format. The callback is the name of the javascript function to execute.

allowscripts:

boolean

By default Embedly does not return script embeds for jsonp requests. They just don’t work and cause lots of issues. In some cases, you may need the script tag for saving and displaying later. In order for Embedly to send the script embeds over jsonp add allowscripts=true. Use with care, and this option is only valid when a callback is supplied, otherwise, it is ignored.

autoplay:

boolean

This will tell the video/rich media to automatically play when the media is loaded. Accepted values: (true, false) Default: false

words:

string50

The words parameter works by trying to split the description at the closest sentence to that word count

chars:

string

chars is much simpler than words. Embedly will blindly truncate a description to the number of characters you specify adding ... at the end when needed.

luxe:

boolean0

With luxe Embedly’s iframe is initially loaded with poster image and play button rather than loading the whole embed. When the user clicks play the embed is loaded and starts playing.

secure:

boolean

secure allows you to serve embeds with a SSL connection. You can also serve images over SSL with our Display product. You can enable this by adding secure=true.

scheme:

string

scheme allows to set the protocol scheme explicity to http or https. By default embeds are sent back protocol-less so that they will work in any page. You can explicity set a protocol by adding scheme=https.

title:

string

With title Embedly will set the title response attribute to the open_graph, meta, or twitter title if available in the page. Accepted values: (og, twitter, meta)

description:

string

With description Embedly will set the description response attribute to the open_graph, meta, or twitter description if available in the page. Accepted values: (og, twitter, meta)

meta_images:

boolean0

Will return only images found in meta tags or an API response if set.

a:

boolean1

Turns on/off player analytics

dnt:

boolean0

Turns on/off Do Not Track support within embed

Examples

Result Format

Documentation

[block:api-header]
{
"type": "basic",
"title": "Response Attributes"
}
[/block]
**``original_url``**
The url that was passed into Embedly. This will be something like a bit.ly shortened link or if there is no redirect it will be the same as the ``url`` attribute.
**``url``**
The effective url of the request. Whatever Embedly found at the end of any
redirects.
**``type``**
Returns the type of the document at this URL, they can be one of the following:
* ``html``: The most common response. The resource is an ``html`` document.
* ``text``: The response is a plain ``text`` document.
* ``image``: This is a static viewable ``image``.
* ``video``: This is a playable ``video``.
* ``audio``: This is a playable ``audio``.
* ``rss``: The resource is an ``rss`` feed.
* ``xml``: The resource is an ``xml`` document.
* ``atom``: The resource is an ``atom`` feed.
* ``json``: The resource is a ``json`` document.
* ``ppt``: The resource is a PowerPoint document.
* ``link``: This is a general embed that may not contain HTML.
* ``error``: When accessing multiple urls at once Embedly will not throw HTTP errors as normal. Instead, it will return an ``error`` type response that includes the ``url``, ``error_message`` and ``error_code``.
**``cache_age``**
How long Embedly is going to cache the response for? Generally, this is for a day, unless some external factor tells us to reevaluate the resource.
**``safe``**
Safe is an attribute that tells you if the url is on a phishing or malware list. Embedly uses Google's
[Safe Browsing API](http://code.google.com/apis/safebrowsing/) to obtain a list of malicious urls. By using this API through our service, you agree to its[terms of service](https://developers.google.com/safe-browsing/terms).
**``provider_name``**
The name of the resource provider.
**``provider_url``**
The url of the resource provider.
**``provider_display``**
For display purposes we ``include provider_display``, it's the subdomain, hostname, and public suffix of the provider.
**``favicon_url``**
The url of the favicon.
**``favicon_colors``**
List of dominant colors extracted from ``favicon_url``.
**``title``**
The title of the resource. It's picked in the following order:
* The rss entry's title
* The oEmbed title
* The open graph title
* The ``meta`` title tag
* The ``title`` attribute in the ``head`` element
**``authors``**
A list of all the authors that are associated with this article. Each author has a ``url`` and ``name``. Here is an example response:
[{
"name": "Sean Creeley"
"url": "http://blog.embed.ly/screeley"
}]
Most articles have only one author, but ``authors`` makes it flexible enough to add more if necessary.
**``published``**
A representation of the date which the article was published in milliseconds. If an ``offset`` is present, then there was timezone data present, otherwise we assume the Date is in UTC. Like all dates, this is a little confusing, so we will explain. Say the Embedly parser came across the following HTML:
<span class="pubdate">Aug 24, 2012</span>
Because there is no timezone information, Embedly will not return an ``offset`` and the ``published`` attribute will be in UTC. We will return the following response:
"published": 1345766400000
**``offset``**
The UTC offset of the date in milliseconds. See the above section for more information about ``offset`` and how to use it with the ``published`` time.
**``description``**
The description of the resource. It's picked in the following order:
* The oEmbed description
* The open graph description
* The ``meta`` description tag
* An excerpt pulled programmaticly by Embedly
**``lead``**
Often there is a lead paragraph that is a brief summary of the rest of the
article. Embedly tries to pull this lead paragraph out for a better reading
experience. It is always a ``p`` tag, i.e.::
"lead": "<p>This is a summary of the below article</p>"
**``content``**
This is the html that we pulled from the URL. It's been sanitized, so it will only contain the following tags::
'a', 'abbr', 'acronym', 'b', 'big', 'blockquote', 'br', 'cite', 'code',
'del', 'dfn', 'em', 'i', 'ins', 'kbd', 'mark', 'pre', 'q', 's', 'samp',
'small', 'span', 'strike', 'strong', 'sub', 'sup', 'time', 'tt', 'u',
'var', 'p', 'div', 'a', 'h2', 'h3', 'h4', 'h5', 'h6', 'img', 'ol', 'ul',
'li'
All tag attributes have been removed as well. The only effective attributes are:
* ``href`` on an ``a`` tag
* ``src`` on an ``img`` tag
**``keywords``**
Returns the meta keywords from the page.
The ``keywords`` object gives you a list of ranked keywords extracted from the article or blog text of a URL. This is different from the meta keywords defined by the page. Embedly uses its own ranking system to determine which keywords are the most relevant. Each keyword has two values:
``name``
Name of the keyword.
``score`` (DEPRECATED)
Returns 0 for no specific relevance.
Score of the keyword from the article, larger numbers infer more relevance.
**``language``**
Returns the language code for the page. Typically ISO639-1 standard, i.e. en, fr, etc.
**``entities``** (DEPRECATED)
Returns an empty list.
The ``entities`` object gives you a list of proper nouns (persons, places, and things) extracted from the article or blog text of a URL. Along with each entity name, Embedly counts the number of times it appears in the text. Each entity has two values:
``name``
Name of the entity (person, place, or thing).
``count``
Number of times an entity appears in the text.
**``images``**
The ``images`` object is a list of, at most, 5 images that Embedly found while processing the URL. Along with the list of images we pull various pieces of information about each image including dimensions, dominant colors, entropy, captions, and size. Each image contains:
``width``: The width of the image in pixels (required)
``height``: The height of the image in pixels (required)
``size``: The size in bytes of the image.
``caption``: An image caption is the short description or sentence that many sites provide below each image. This text usually describes what the image is depicting.
``entropy``: Image entropy can be roughly thought of as how "busy" an image is. Image entropy can be useful in programmatically choosing the type of image to display. For instance, if an API user wants to display photographic type images, but not logos, they can ignore images with lower entropy.
``colors``: The dominant colors of an image are those colors that make up the majority of
an image. The ``color`` attribute is the RGB representation of the color and and the ``wight`` is how prevalent that color is in the image.
**``app_links``**
There are few different specs for deep linking, they include [App Links](http://applinks.org/), Twitter's [App Card](https://dev.twitter.com/cards/types/app) and Google's [App Indexing](http://developer.android.com/training/app-indexing/enabling-app-indexing.html). Embedly parses and returns all three in a list of objects. Each is dependent on the spec, but two attributes are the same for each:
``namespace``: The type of the deep link. ``ai``, ``twitter`` or ``google
``type``: The type of the device the deep link targets ``ipad``, ``iphone``, ``andriod``, ``ios`` etc.
**``media``**
The media is primary type of content (video, photo, etc.) that is associated with a ``url``. It follows the general pattern of the [/1/oembed](doc:oembed) Response, but with only a limited set of attributes. Note: It is optional and only available if we can classify it as such type.
**``type``**
The resource type. Valid values, along with value-specific parameters, are described below.
###The photo type
This type is used for representing static photos. The following parameters are
defined:
``url``
The source URL of the image. Consumers should be able to insert this URL
into an``<img>``element. Only HTTP and HTTPS URLs are valid.
``width``
The width in pixels of the image specified in the ``url`` parameter.
``height``
The height in pixels of the image specified in the ``url`` parameter.
### The video type
This type is used for representing playable videos. The following parameters
are defined:
``html``
The HTML required to embed a video player. The HTML should have no padding
or margins. Consumers may wish to load the HTML in an off-domain iframe to
avoid XSS vulnerabilities.
``width``
The width in pixels required to display the HTML. If not supplied
the HTML returned will expand horizontally to the size of its parent
container.
``height``
The height in pixels required to display the HTML. If not supplied
the HTML returned will expand vertically to the size of its parent
container.
###The rich type
This type is used for rich HTML content that does not fall under one of the
other categories. The following parameters are defined:
``html`` (required)
The HTML required to display the resource. The HTML should have no padding
or margins. Consumers may wish to load the HTML in an off-domain iframe to
avoid XSS vulnerabilities. The markup should be valid XHTML 1.0 Basic.
``width``
The width in pixels required to display the HTML. If not supplied
the HTML returned will expand horizontally to the size of its parent
container.
``height``
The height in pixels required to display the HTML. If not supplied the HTML returned will expand vertically to the size of its parent container.
###Optional media fields
**``age_restriction``**
A string value for age restrictions; valid values include variations of 18+, 13+, R, PG. Only present if populated.
**``duration``**
A float value for duration of video, audio segment in seconds. Only present if populated.
[block:api-header]
{
"type": "basic",
"title": "Error Codes"
}
[/block]
###JSON Requests
400 Bad Request
* Required "url" parameter is missing.
* Either "url" or "urls" parameter is reqiured.
* Invalid URL format.
* Invalid "maxheight" parameter.
* Invalid "maxwidth" parameter.
* Invalid "urls" parameter, exceeded max count of 20.
401 Unauthorized
* Invalid key or oauth_consumer_key provided: <key>, contact: support@embed.ly.
* The provided key does not support this endpoint: <key>, contact: support@embed.ly.
* URL is private or restricted.
403 Forbidden
* This service requires an embedly key parameter, contact: support@embed.ly or sign up: http://embed.ly/signup.
* Invalid IP provided: <ip>, contact: support@embed.ly.
* Invalid referrer provided: <referrer>, contact: support@embed.ly.
404 Not Found
URL Not Found or unable to be accessed by Embedly servers.
``Note``: Error message will contain Upstream server response.
500 Server issues
Embed.ly is having trouble with this url. Please try again or contact us, support@embed.ly.
501 Not Implemented
Not implemented for format: acceptable values are ``{json}``.
503 Service Unavailable
``Note``: This happens if our service is down, please contact us immediately: support@embed.ly.
### JSONP Requests
Format
``callbackFunction({"url": "url with error", "error_code": "error code",
"error_message": "error message", "type": "error"})``
Error Response
``jsonp1273162787542({"url": "http://flickr.com/embedly", "error_code": 404, "error_message":
"HTTP 404: Not Found", "type": "error"})``
[block:callout]
{
"type": "success",
"body": "Try out our handy [Extract API Explorer](http://embed.ly/docs/explore/extract). It's awesome and will allow you to preview the response of any URL.\n\nGo to the [Extract API Explorer](http://embed.ly/docs/explore/extract)",
"title": "Want to try out the Extract API?"
}
[/block]