CINXE.COM

Webinar Recap 🎤 Developer Experience, API Performance, and More with AWS

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>Webinar Recap 🎤 Developer Experience, API Performance, and More with AWS</title> <meta name="HandheldFriendly" content="True" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://blog.readme.com/assets/built/style.css?v=9af61c0f63" /> <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/highlightjs@9.16.2/styles/nord.css" /> <script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.0.1/build/highlight.min.js"></script> <script>hljs.initHighlightingOnLoad();</script> <script src="https://kit.fontawesome.com/59defd25ba.js" crossorigin="anonymous"></script> <link rel="icon" href="https://blog.readme.com/content/images/size/w256h256/2022/04/favicon-blue.png" type="image/png"> <link rel="canonical" href="https://blog.readme.com/webinar-recap-apis-aws/"> <meta name="referrer" content="no-referrer-when-downgrade"> <link rel="amphtml" href="https://blog.readme.com/webinar-recap-apis-aws/amp/"> <meta property="og:site_name" content="The ReadMe Blog"> <meta property="og:type" content="article"> <meta property="og:title" content="Webinar Recap 🎤 Developer Experience, API Performance, and More with AWS"> <meta property="og:description" content="Recently, we co-hosted an AMA (Ask Me Anything) webinar with Josh Nickerson, Senior Manager of Product Management for Amazon API Gateway, and our founder &amp; CEO, Greg Koberger. Over the course of the hour, Dave (the moderator and VP of Sales here at ReadMe) was able to ask them audience questions"> <meta property="og:url" content="https://blog.readme.com/webinar-recap-apis-aws/"> <meta property="og:image" content="https://blog.readme.com/content/images/size/w1200/2023/02/Radio-DJ.psd.full.png"> <meta property="article:published_time" content="2023-02-09T15:35:02.000Z"> <meta property="article:modified_time" content="2024-02-15T22:09:31.000Z"> <meta property="article:tag" content="API Tips"> <meta property="article:tag" content="Developer Experience"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="Webinar Recap 🎤 Developer Experience, API Performance, and More with AWS"> <meta name="twitter:description" content="Recently, we co-hosted an AMA (Ask Me Anything) webinar with Josh Nickerson, Senior Manager of Product Management for Amazon API Gateway, and our founder &amp; CEO, Greg Koberger. Over the course of the hour, Dave (the moderator and VP of Sales here at ReadMe) was able to ask them audience questions"> <meta name="twitter:url" content="https://blog.readme.com/webinar-recap-apis-aws/"> <meta name="twitter:image" content="https://blog.readme.com/content/images/size/w1200/2023/02/Radio-DJ.psd.full.png"> <meta name="twitter:label1" content="Written by"> <meta name="twitter:data1" content="Miche Nickolaisen"> <meta name="twitter:label2" content="Filed under"> <meta name="twitter:data2" content="API Tips, Developer Experience"> <meta name="twitter:site" content="@readme"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="379"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "publisher": { "@type": "Organization", "name": "The ReadMe Blog", "url": "https://blog.readme.com/", "logo": { "@type": "ImageObject", "url": "https://blog.readme.com/content/images/2016/06/blog-logo-1.png" } }, "author": { "@type": "Person", "name": "Miche Nickolaisen", "image": { "@type": "ImageObject", "url": "https://blog.readme.com/content/images/size/w1200/2022/06/IMG_5785-cropped.jpeg", "width": 1200, "height": 1129 }, "url": "https://blog.readme.com/author/miche/", "sameAs": [] }, "headline": "Webinar Recap 🎤 Developer Experience, API Performance, and More with AWS", "url": "https://blog.readme.com/webinar-recap-apis-aws/", "datePublished": "2023-02-09T15:35:02.000Z", "dateModified": "2024-02-15T22:09:31.000Z", "image": { "@type": "ImageObject", "url": "https://blog.readme.com/content/images/size/w1200/2023/02/Radio-DJ.psd.full.png", "width": 1200, "height": 379 }, "keywords": "API Tips, Developer Experience", "description": "Recently, we co-hosted an AMA (Ask Me Anything) webinar with Josh Nickerson, Senior Manager of Product Management for Amazon API Gateway, and our founder &amp; CEO, Greg Koberger. Over the course of the hour, Dave (the moderator and VP of Sales here at ReadMe) was able to ask them audience questions covering everything from the future of APIs to getting leadership buy-in on new API initiatives. Read on to find out what they said, and if you’re curious about our partnership with AWS, you can learn mo", "mainEntityOfPage": "https://blog.readme.com/webinar-recap-apis-aws/" } </script> <meta name="generator" content="Ghost 5.101"> <link rel="alternate" type="application/rss+xml" title="The ReadMe Blog" href="https://blog.readme.com/rss/"> <script defer src="https://cdn.jsdelivr.net/ghost/portal@~2.46/umd/portal.min.js" data-i18n="true" data-ghost="https://blog.readme.com/" data-key="3709944515385ba312508db797" data-api="https://readmeio.ghost.io/ghost/api/content/" data-locale="en" crossorigin="anonymous"></script><style id="gh-members-styles">.gh-post-upgrade-cta-content, .gh-post-upgrade-cta { display: flex; flex-direction: column; align-items: center; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; text-align: center; width: 100%; color: #ffffff; font-size: 16px; } .gh-post-upgrade-cta-content { border-radius: 8px; padding: 40px 4vw; } .gh-post-upgrade-cta h2 { color: #ffffff; font-size: 28px; letter-spacing: -0.2px; margin: 0; padding: 0; } .gh-post-upgrade-cta p { margin: 20px 0 0; padding: 0; } .gh-post-upgrade-cta small { font-size: 16px; letter-spacing: -0.2px; } .gh-post-upgrade-cta a { color: #ffffff; cursor: pointer; font-weight: 500; box-shadow: none; text-decoration: underline; } .gh-post-upgrade-cta a:hover { color: #ffffff; opacity: 0.8; box-shadow: none; text-decoration: underline; } .gh-post-upgrade-cta a.gh-btn { display: block; background: #ffffff; text-decoration: none; margin: 28px 0 0; padding: 8px 18px; border-radius: 4px; font-size: 16px; font-weight: 600; } .gh-post-upgrade-cta a.gh-btn:hover { opacity: 0.92; }</style> <script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/sodo-search.min.js" data-key="3709944515385ba312508db797" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/main.css" data-sodo-search="https://readmeio.ghost.io/" data-locale="en" crossorigin="anonymous"></script> <link href="https://blog.readme.com/webmentions/receive/" rel="webmention"> <script defer src="/public/cards.min.js?v=9af61c0f63"></script> <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=9af61c0f63"> <script defer src="/public/member-attribution.min.js?v=9af61c0f63"></script><style>:root {--ghost-accent-color: #15171A;}</style> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MLTXQ5D');</script> <!--<script>window.heap=window.heap||[],heap.load=function(e,t){window.heap.appid=e,window.heap.config=t=t||{};var r=t.forceSSL||"https:"===document.location.protocol,a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=(r?"https:":"http:")+"//cdn.heapanalytics.com/js/heap-"+e+".js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n);for(var o=function(e){return function(){heap.push([e].concat(Array.prototype.slice.call(arguments,0)))}},p=["addEventProperties","addUserProperties","clearEventProperties","identify","resetIdentity","removeEventProperty","setEventProperties","track","unsetEventProperty"],c=0;c<p.length;c++)heap[p[c]]=o(p[c])}; heap.load("1443743506");</script>--> <style> .post-body li code { background: #f4f8fb; font-size: 14px; padding: 2px 5px; color: #356e92; border: 1px solid #eaf2f7; border-radius: 3px; } .post-body :not(pre) code { background: #f4f8fb; padding: 2px 5px; color: #356e92; border: 1px solid #eaf2f7; border-radius: 3px; } </style> </head> <body class="post-template tag-api-tips tag-dx"> <header class="header"> <div class="width"> <div class="header-logo"> <a href="/"> <svg viewBox="0 0 211 28" width="210px" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M156.4 0a4 4 0 00-4 4v17a4 4 0 004 4h50a4 4 0 004-4V4a4 4 0 00-4-4h-50zm10.32 18h-5.136V7.328h5.008c1.904 0 3.008 1.168 3.008 2.72 0 1.344-.88 2.24-1.856 2.448 1.136.176 2.064 1.328 2.064 2.624 0 1.68-1.12 2.88-3.088 2.88zm-3.536-9.264v3.12h3.104c1.072 0 1.664-.672 1.664-1.552s-.592-1.568-1.664-1.568h-3.104zm0 4.528v3.328h3.184c1.12 0 1.792-.64 1.792-1.68 0-.88-.608-1.648-1.792-1.648h-3.184zM178.236 18h-6.448V7.328h1.6v9.264h4.848V18zm6.167.192c-3.184 0-5.376-2.352-5.376-5.52 0-3.168 2.192-5.52 5.376-5.52s5.376 2.352 5.376 5.52c0 3.168-2.192 5.52-5.376 5.52zm0-1.424c2.256 0 3.728-1.76 3.728-4.096 0-2.352-1.472-4.096-3.728-4.096-2.288 0-3.728 1.744-3.728 4.096 0 2.336 1.44 4.096 3.728 4.096zm12.394 1.44c-3.056 0-5.536-2.208-5.536-5.536 0-3.328 2.48-5.52 5.536-5.52 2 0 3.328.912 4.224 2.112l-1.296.752c-.608-.816-1.68-1.44-2.928-1.44-2.224 0-3.888 1.696-3.888 4.096 0 2.384 1.664 4.112 3.888 4.112 1.184 0 2.192-.576 2.704-1.056v-1.92h-3.424V12.4h5.024v3.92c-1.024 1.136-2.496 1.888-4.304 1.888z" fill="#12CA93" /> <path fill-rule="evenodd" clip-rule="evenodd" d="M100.493 1.44a.381.381 0 00-.433-.434h-4.585a.401.401 0 00-.468.434v2.433a.404.404 0 00.468.434h1.02v2.249c0 .654.06 1.278.06 1.278h-.06c-.28-.593-1.493-2.213-4.29-2.213-4.32 0-7.09 3.245-7.09 7.83 0 5.084 2.954 7.957 6.994 7.957 2.923 0 4.446-1.902 4.696-2.525h.061v1.533c0 .44.356.797.795.797h2.19a.628.628 0 00.627-.628v-2.683l.015-16.462zM52.801 6.017a.304.304 0 01-.072.291 8.904 8.904 0 00-2.494 3.11.333.333 0 01-.323.217c-2.766-.257-5.332 2.145-5.332 4.24v3.76h1.083c.24 0 .436.193.436.43v2.402a.433.433 0 01-.436.43h-6.364a.415.415 0 01-.316-.118.4.4 0 01-.12-.311v-2.403a.375.375 0 01.109-.322.388.388 0 01.327-.107h1.135V9.009h-1.54a.399.399 0 01-.323-.111.385.385 0 01-.113-.318V6.177c0-.237.195-.429.436-.429h4.67c.24 0 .436.192.436.43V9.6h.123s1.222-4.008 6.328-4.008a11.59 11.59 0 012.134.212.31.31 0 01.215.213zm26.695 13.735c-.055.395.079.793.36 1.075.283.282.68.416 1.05.34h3.285a.388.388 0 00.403-.434v-2.432a.363.363 0 00-.403-.435h-1.165V6.307a.409.409 0 00-.434-.434h-2.805a.393.393 0 00-.434.434v1.467h-.061c-.23-.562-1.635-2.182-4.597-2.182-4.05 0-7.013 2.902-7.013 7.956 0 4.615 2.65 7.86 6.982 7.86 3.055 0 4.306-1.901 4.74-2.964h.092v1.308zm56.251-1.848a4.069 4.069 0 01-2.909-1.013 3.965 3.965 0 01-1.334-2.706h10.413c.287 0 .521-.23.521-.514 0-5.135-2.479-8.08-7.436-8.08a7.868 7.868 0 00-5.604 2.303 7.634 7.634 0 00-2.237 5.562c0 5.007 3.718 7.952 8.232 7.952 4.514 0 6.706-2.745 7.024-3.258a.467.467 0 00.123-.357.467.467 0 00-.186-.33l-1.525-1.627a.42.42 0 00-.667.062 5.971 5.971 0 01-4.415 2.006zm-75.885.006a5.977 5.977 0 004.415-2.003.42.42 0 01.666-.062l1.526 1.624a.464.464 0 01.062.686c-.317.512-2.51 3.253-7.023 3.253-4.514 0-8.232-2.94-8.232-7.939a7.616 7.616 0 012.231-5.573 7.875 7.875 0 015.62-2.304c4.957 0 7.436 2.94 7.436 8.067a.516.516 0 01-.521.512H55.629c.12 2.169 2.012 3.849 4.233 3.739zm-.573-9.04c-1.843 0-3.244.906-3.592 2.878h6.83c-.057-1.44-.978-2.878-3.238-2.878zm79.113 2.878c-.062-1.442-.984-2.883-3.243-2.883-1.844 0-3.244.908-3.593 2.883h6.836zm-62.915-2.6c-2.212 0-3.709 1.748-3.709 4.462 0 2.713 1.589 4.333 3.709 4.333 1.895 0 3.575-1.467 3.575-4.37 0-2.927-1.588-4.425-3.575-4.425zm17.421-.026c-2.114 0-3.698 1.62-3.698 4.303s1.462 4.492 3.698 4.492c2.022 0 3.566-1.533 3.566-4.462 0-2.928-1.67-4.333-3.566-4.333zm33.798 8.524h-1.16v-6.658c0-3.16-1.825-5.396-5.222-5.396-3.123 0-4.281 1.787-4.668 2.384a5.95 5.95 0 01-.085.128c-.758-1.532-2.3-2.512-4.532-2.512-3.32 0-4.478 2.13-4.722 2.581l-.031.057h-.093V6.45a.55.55 0 00-.168-.502.583.583 0 00-.523-.14h-2.269c-.378 0-.685.299-.685.668v13.497c0 .245.1.48.278.654a.96.96 0 00.67.27h4.357a.446.446 0 00.31-.125.422.422 0 00.128-.302v-2.397a.37.37 0 00-.109-.32.393.393 0 00-.329-.107h-1.093V11.14c.34-1.21 1.482-2.038 2.768-2.01 2.016 0 2.578 1.287 2.578 3.16v8.231a.356.356 0 00.105.256.372.372 0 00.261.106h4.96a.418.418 0 00.318-.117.395.395 0 00.12-.31v-2.382a.373.373 0 00-.109-.32.394.394 0 00-.329-.107h-1.129v-6.165a3.832 3.832 0 00-.093-.583c.389-1.074 1.445-1.781 2.614-1.749 1.985 0 2.577 1.287 2.577 3.16v7.176c0 .78.649 1.412 1.449 1.412h3.867a.433.433 0 00.438-.427v-2.397a.372.372 0 00-.112-.325.394.394 0 00-.337-.102zM20.752 4.571h7.463a2.568 2.568 0 012.55 2.572v13.169a2.568 2.568 0 01-2.565 2.572h-4.79c-5.453 0-7.084 1.317-7.869 4.027a.144.144 0 01-.143.109h-.031a.144.144 0 01-.144-.108c-.78-2.711-2.41-4.028-7.868-4.028h-4.79A2.568 2.568 0 010 20.312V7.143a2.568 2.568 0 012.565-2.572h7.457a5.502 5.502 0 015.365 4.3 5.502 5.502 0 015.365-4.3zm-7.827 14.213a.185.185 0 01-.184.185H4.175a.184.184 0 01-.184-.185V17.56c0-.102.082-.185.184-.185h8.566c.102 0 .184.083.184.185v1.224zm-8.75-3.076h8.566a.185.185 0 00.184-.185v-1.224a.185.185 0 00-.184-.185H4.175a.185.185 0 00-.184.185v1.224a.185.185 0 00.184.185zm8.75-3.447a.185.185 0 01-.184.186H4.175a.185.185 0 01-.184-.185v-1.225c0-.102.082-.185.184-.185h8.566c.102 0 .184.083.184.185v1.224zM26.72 18.91a.185.185 0 00.054-.131v-1.224a.185.185 0 00-.185-.186h-8.565a.184.184 0 00-.185.186v1.224a.185.185 0 00.185.185h8.565c.05 0 .096-.02.13-.054zm-.13-3.207h-8.566a.184.184 0 01-.185-.185v-1.225a.185.185 0 01.185-.185h8.565c.102 0 .185.083.185.185v1.225a.185.185 0 01-.185.185zm0-3.261a.185.185 0 00.184-.186v-1.219a.185.185 0 00-.185-.185h-8.565a.185.185 0 00-.185.185v1.22c0 .102.083.184.185.184h8.565z" fill="#008DF5" /></svg> </a> </div> <div class="header-button"> <a class="button blue large-padding short-mobile" href="https://readme.com/?ref=blog"> Get Started </a> </div> </div> </header> <div class="post-page"> <div class="post-image"> <div class="width"> <img src="/content/images/2023/02/Radio-DJ.psd.full.png"> </div> </div> <div class="post-main"> <div class="width xsmall"> <header class="post-header"> <div class="post-header-tags-time"> <ul class="post-header-tags"> <li> <a href="https://blog.readme.com/tag/api-tips/"> API Tips </a> </li> <li> <a href="https://blog.readme.com/tag/dx/"> Developer Experience </a> </li> </ul> <time datetime="2023-02-09">9 Feb 2023</time> </div> <h1>Webinar Recap 🎤 Developer Experience, API Performance, and More with AWS</h1> <ul class="post-header-authors"> <li> <a href="https://blog.readme.com/author/miche/"> Miche Nickolaisen </a> </li> </ul> <div class="double-dash blue"></div> </header> <div class="post-body"> <p>Recently, we co-hosted an AMA (Ask Me Anything) webinar with Josh Nickerson, Senior Manager of Product Management for Amazon API Gateway, and our founder &amp; CEO, Greg Koberger. Over the course of the hour, Dave (the moderator and VP of Sales here at ReadMe) was able to ask them audience questions covering everything from the future of APIs to getting leadership buy-in on new API initiatives. Read on to find out what they said, and if you’re curious about our partnership with AWS, you can learn more about that <a href="https://blog.readme.com/announcing-our-amazon-partnership-developer-hubs-for-amazon-api-gateway/" rel="noreferrer nofollow noopener">here</a>. </p><p><em>Editor’s note: Answers have been lightly edited for brevity and clarity.</em></p><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_1Password.png" class="kg-image" alt="" loading="lazy" width="1515" height="858" srcset="https://blog.readme.com/content/images/size/w600/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_1Password.png 600w, https://blog.readme.com/content/images/size/w1000/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_1Password.png 1000w, https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_1Password.png 1515w" sizes="(min-width: 720px) 720px"></figure><h1 id="driving-api-adoption">Driving API Adoption</h1><h2 id="what-are-the-must-haves-if-you%E2%80%99re-launching-a-new-public-api-at-your-company">What are the must-haves if you’re launching a new public API at your company?</h2><p><strong>Josh: </strong>There's a lot to keep in mind, but availability and security are my top two concerns: </p><ul><li><strong>Availability: </strong>You should have an idea of how much traffic you’re expecting and be confident that you can handle it</li><li><strong>Security: </strong>You want to be confident that you’re not opening up your systems to a potential data breach</li></ul><p>Other potential concerns include: </p><ul><li><strong>What sort of authentication authorization setup do you have?</strong> Will this be an open API that anyone can use, or do you want to know the details of and set permissions for users?</li><li><strong>How are people going to find out about the API? </strong>As you launch multiple APIs and package them into products, what scalable tools are you using to document and share them?</li></ul><p><strong>Greg:</strong> My biggest concern before you start: have strong use cases for why someone would use your API. People launch APIs and then nobody uses them, because the endpoints don’t make sense for real-life use cases. </p><p><strong>Avoid the “build it and they will come” mentality — you’re asking people to dedicate resources, time, effort, and trust. </strong>Make sure there are very clear use cases that people are actually excited about and accommodate those use cases when building the API. Focus on knowing what it is that users want to build and designing your API to give them a head start on that.</p><p></p><h2 id="after-launching-your-api-how-do-you-gather-and-prioritize-developer-feedback">After launching your API, how do you gather and prioritize developer feedback?</h2><p><strong>Josh:</strong> There are a lot of key factors to take into account: </p><ul><li>What's the input? How are they going to give you this feedback? <a href="https://readme.com/community?ref=blog.readme.com" rel="noreferrer nofollow noopener">Built-in feedback options on documentation</a>, emails to your team, a support forum? Whatever they’ll be doing to share feedback, make it as easy as possible.</li><li>What are you going to do with that feedback when you get it? How will you prioritize issues, estimate the resources it will need to fix them, and incorporate those fixes into development sprints?</li></ul><p><strong>Greg:</strong> I notice that developers have a tendency to “just figure it out” and often don’t raise their hands to ask questions, which can result in developers:</p><ul><li>Assuming that the problem/issue is their fault</li><li>Getting frustrated and moving on, writing off the product/API as a result</li></ul><p>That self-sufficient DIY mentality is one reason docs are so important; it’s also important to actively solicit feedback to counteract it. Not just via thumbs up/down on docs, but also watching metrics for errors on specific endpoints and reaching out to users to help fix that problem. In watching for and then being proactive with with ReadMe errors, we’ve improved the documentation and fixed bugs, but also made customers happier and gathered valuable feedback. </p><p></p><h2 id="what-metrics-do-you-look-at-to-understand-api-health">What metrics do you look at to understand API health?</h2><p><strong>Josh: </strong>Depends on the targets you have for the API, but in general: </p><ul><li>Engagement and growth relative to the targets you have. How many people are using it? Is that number growing?</li><li>Operational metrics like error rates. Are you seeing fatal errors? What’s the error trend-line look like? Is latency relative to where you want it to be?</li></ul><p>Then, depending on what the API is, others can come into play from a security perspective or a monetization perspective, but those are common top ones.</p><p><strong>Greg: </strong>It's very important to look at not just big picture graphs/metrics, but that’s not enough — it tends to fall apart when it comes to early users. Things to consider: </p><ul><li>The sheer volume of API calls you get (in general and from heavy users) can easily skew success percentages</li><li>Looking at new customers and their usage metrics can help offset that and keep you from losing early users when they run into errors</li><li>People interact with APIs in two major ways: actual developers trying to get a response back, and in production with the API running behind the scenes</li><li>Separating those scenarios is important, something running like clockwork for a year+ is a different data set than the people making changes and trying to make something new happen (and potentially running into errors)</li></ul><p>I agree with everything Josh said, but I want to emphasize that it's important to realize every failed API request is a real person trying to do something for real, for their customers, for themselves, etc. Make sure it's easier to highlight those very few small amounts of errors, especially with new users.</p><h1 id="the-state-and-future-of-apis">The State (and Future) of APIs</h1><h2 id="how-do-you-see-the-api-landscape-changing-in-2023-based-on-the-startup-tech-market-right-now">How do you see the API landscape changing in 2023 based on the startup tech market right now?</h2><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_Signal.png" class="kg-image" alt="" loading="lazy" width="1513" height="857" srcset="https://blog.readme.com/content/images/size/w600/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_Signal.png 600w, https://blog.readme.com/content/images/size/w1000/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_Signal.png 1000w, https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_AMA_AWS_-_The_ReadMe_Blog_and_Signal.png 1513w" sizes="(min-width: 720px) 720px"></figure><p><strong>Josh: </strong>It’s important to recognize that cloud and serverless operation is still pretty new. The move to microservices and API-first is a newer trend — I expect that trend to continue and only get bigger from here. That trend will likely accelerate because companies get cost savings when they don’t have an in-house data center and they can decentralize things, make them more modular. That ability to move faster becomes important in times of economic shifts. </p><p>Security is big factor; the threat landscape and potential of bad actors isn’t getting any less scary. I expect emphasis on API security to continue with more scrutiny around data breaches and protection of sensitive data. </p><p>More emergence and refinement of industry-specific API standards. OpenAPI already exists, but we’re seeing open banking, open charge point protocol, fast healthcare interoperability requirements, etc. For example, there are government types of customers in public sectors where, if you're building an API in this kind of space, it needs to meet specific requirements and standards. Companies need to take compliance and regulations into account. It's important for API providers to think about how they can make it easier to manage those requirements. </p><p><strong>Greg:</strong> It's less about this year in specific, but I’ve always thought there will be a convergence (if not a complete one) between traditionally technical/non-technical people and roles. 10 years ago, if someone said they worked on APIs, it would be a near-guarantee they’re a developer, but that’s not necessarily the case now. </p><p>The line between technical and non-technical is getting more and more blurred; people are becoming more technical just due to growing up around technology, as well as tools becoming easier and easier to use. More and more people are able to take advantage of tools that have traditionally been locked up in this highly technical knowledge.</p><p>The last thing: I’m really intrigued by companies that are realizing that developer tools don't necessarily mean users have to build everything from scratch or go for the most complex solution. Seeing more and more “choose your own adventure” type options that let users set the level of complexity to match their comfort level and goals. The best tools can meet customers at every single level based on their needs; I expect to see that more and more over the next few years and I’m looking forward to it. </p><p></p><h2 id="how-do-you-think-the-emergence-of-ai-will-affect-the-api-landscape">How do you think the emergence of AI will affect the API landscape?</h2><p><strong>Greg:</strong> This is a good dovetail with last answer. An example: As an engineer, OpenAPI’s API can be frustrating, because it uses prompts, which can feel unpredictable when used to standard coding methods. At the same time, it’s fascinating and interesting, and a good showcase of changing how people think about interacting with the system. Before, we’ve always interacted with systems after letting computers do most of the decision-making about how we talk, since they need specific structure. </p><p>AI flipped that, so that we’re no longer communicating on the computer’s terms. I expect this to bring more and more people into the field and make it easier to do more and more complex things. I’m excited to see what it will look like to interact with computers in 5, 10, 15 years with some of these changes/evolutions. </p><p><strong>Josh:</strong> I've worked in Alexa AI for three years, owning internal machine learning platform that Alexa scientists and engineers used to build a different model. After that experience, I have two thoughts: </p><ul><li>Agree with what Greg said earlier — AI and the emergence of AI will make it easier for people to build APIs</li><li>What’s happening in machine learning parallels what happened in the previous software generation, where we’re seeing machine learning ops (similar to dev ops) emerge; people want to track the evolution and lineage of a model across lifecycle from raw data to model to in production</li></ul><p>APIs play into all of this and it’s something we need to start thinking about as we build APIs. Does this enable a machine-learning driven use-case? Does it plug into their data pipeline or machine learning ops? These are some new things to consider when thinking about business cases for an API. </p><p></p><h2 id="how-can-employees-make-an-effective-argument-for-getting-more-resources-for-api-efforts">How can employees make an effective argument for getting more resources for API efforts?</h2><p><strong>Josh: </strong>Two things come to mind from how Amazon operates: </p><ul><li><strong>Being data driven: </strong>You need to understand what the ROI is, whether that’s in terms of cost, time, productivity, etc., and be able to clearly communicate that</li><li><strong>Customer obsession: </strong>What’s the voice of the customer here? How does what you want to do with the API relate to what customers are asking for? Can you bring in direct quotes from customers to back this up?</li></ul><p>Potential third consideration: pattern recognition. Point to other successful examples of companies that did something similar and it worked out well for them.</p><p><strong>Greg: </strong>100% agreed. Make sure you’re tracking metrics from the jump, so you can showcase how many people are using it and how they’re using it.</p><p></p><h2 id="when-should-you-consider-switching-api-service-providers">When should you consider switching API service providers?</h2><p><strong>Greg: </strong>If you're thinking about switching to ReadMe, do it now. If you're trying to switch from ReadMe, maybe that's more of a 2024 thing? 🤔</p><p><strong>Josh: </strong>Ditto for Amazon API Gateway and AWS more generally. Aside from that, returning to availability and security: </p><ul><li><strong>Availability: </strong>Can they support the kind of scale you need for your API? Not just anecdotally, but do they have a published service level agreement where they specify exactly what you can expect? What’s your recourse as a customer if they don’t meet those expectations?</li><li><strong>Security: </strong>What’s their track record in terms of dealing with the threat landscape? What’s their reputation when it comes to security?</li></ul><p>Other things you may want to think about: </p><ul><li><strong>Features:</strong> Can include specific feature needs that you may not be getting at your current provider, but also making sure the feature set is well-rounded, that the roadmap includes updates that are relevant to your needs, etc.</li><li><strong>Cost: </strong>Obviously a factor in any business decision — consider pricing model as well as total cost, whether it’s easy to understand and independently estimate your cost, whether it’s actually based on your usage or not, etc.</li><li><strong>Support: </strong>What are the options for getting support? Is it capped at a specific number of requests per month? Do you have to pay more for extra support?</li></ul><p></p><h1 id="api-usage-and-accessibility">API Usage and Accessibility</h1><h2 id="how-can-api-documentation-best-serve-a-diverse-audience-of-both-technical-and-non-technical-consumers">How can API documentation best serve a diverse audience of both technical and non-technical consumers?</h2><p><strong>Greg:</strong> This is very important thing to think about — people want to build things and the coolest thing about the internet is that it enables anyone to be a creator. The more you can do to show that not every API call has to involve writing code, the better. Zapier is a good example, the word API is in their name, but they never talk about APIs outside of that. A lot of other companies have built out components where you don’t have to write the full thing, you can just copy and paste one line of code into your docs. </p><p>That’s also the downside: people will do that and think they’re done. APIs should be really easy, you send data out and you get data back, but they often aren’t that easy. The thing that’s exciting is remembering that you can really simplify it and the gradually build layers on top to create a bespoke experience. Every API is very bespoke and that’s why ReadMe as a product is so customizable. </p><p>There’s not a one-size-fits-all solution for any API, but it’s not enough to just do docs. You should be showing people clicking around, generating code snippets in their language, giving them API keys when and where they need them, etc. </p><p>I don't think there's a one size fits all solution for any API. People used to ask all the time, "Can you just magically have it all work? I don't want to write docs." And I think you really need to do everything, you can't do just docs. Showing people clicking around, generating code snippets in their language, giving them API keys where they need it, things like that are also incredibly important. But I do really think you need both. Maybe AI will come along in two years and that all is moot, but for the next few years, that's my answer.</p><p><strong>Josh:</strong> It’s worth thinking about if it’s equally easy (or at least equally accessible) for both non-tech and tech audiences in terms of documentation. For a developer using your API, it should feel familiar — it should be consistent with standard naming, formatting, etc. conventions and be consistent with the way similar APIs in your industry operate. This helps it stay intuitive. </p><p><strong>Greg:</strong> I both agree and disagree with that, although it’s more of a different perspective than actually disagreeing. I’m not necessarily creating the API, I’m creating a tool for APIs. Best practices is an interesting concept — you should follow them, in general. But the way big breakthroughs in developer experience happen is because of people questioning the best practices. Everyone can’t question <em>all </em>best practices <em>all</em> the time, but it’s good to take a few steps back and consider whether the big-picture way you’ve been approaching things is the best way. Don’t let familiarity keep you from thinking critically about your API.</p><p></p><h2 id="what-guidelines-do-you-use-for-deprecating-vs-maintaining-old-api-versions-what%E2%80%99s-the-best-way-to-smoothly-sunset-old-versions-and-get-users-to-upgrade">What guidelines do you use for deprecating vs. maintaining old API versions? What’s the best way to smoothly sunset old versions and get users to upgrade?</h2><figure class="kg-card kg-image-card"><img src="https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_Blog_post__AWS_AMA_recap_-_Dropbox_Paper_and_1Password-1.png" class="kg-image" alt="" loading="lazy" width="1514" height="856" srcset="https://blog.readme.com/content/images/size/w600/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_Blog_post__AWS_AMA_recap_-_Dropbox_Paper_and_1Password-1.png 600w, https://blog.readme.com/content/images/size/w1000/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_Blog_post__AWS_AMA_recap_-_Dropbox_Paper_and_1Password-1.png 1000w, https://blog.readme.com/content/images/2023/02/AMA_with_ReadMe___Amazon_API_Gateway__Q1_2023__mp4_and_Blog_post__AWS_AMA_recap_-_Dropbox_Paper_and_1Password-1.png 1514w" sizes="(min-width: 720px) 720px"></figure><p><strong>Greg:</strong> I think that's the wrong question — I don’t think you can smoothly sunset something. People have built on it, they’re relying on it (unless there’s a large security breach or something similar). Changing things puts a lot of effort and work on the people who have built on it already. </p><p>Instead, I’m in favor of proxying old APIs instead, where you only have one version of the code running, but keep old versions running by proxying and doing mapping behind the scenes to match new names, etc. That way, you never disrupt anything. We’re still using Stripe’s API and built on it initially in 2014, they’ve changed a lot of things since then and it’s never broken, and they’ve never asked us to upgrade or change or rewrite things. That would have been a frustrating user experience if they had. </p><p>The best way to do it is to find a way to keep the API (and its current users) running without being beholden to the past. Don’t make your users suffer and rewrite code. </p><p><strong>Josh: </strong>I agree — ideally, you don’t do this. Changing customer behavior is hard and asking them to do a lot of work to move to your API isn’t a great customer experience. It also creates churn risk; if they have to do the work to switch to your new version, they very well may investigate all of your competitors’ versions as well. </p><p>Ideally, when building API, you think through one-way and two-way doors and create the semantics of requests, responses, naming conventions, etc. in a stable, future-proof way. The entire value of an API is as an abstraction layer, where you can improve things and the customer doesn’t have to worry because the API stays the same. </p><p>If it’s something you absolutely <em>have</em> to do, you need to communicate transparently. Why are you doing this? When? What do your customers need to do? Give them a really easy way to do it and maybe an incentive for moving over, like plan credits or upgrades if they move by X date. Or do what Greg said and make the changes behind the scenes. Whatever you do, make sure the new version works and scales and have monitoring in place, so you can see when users have moved off and phase out slowly, instead of yanking the rug out from under the users. </p><p></p><h2 id="what-are-your-biggest-pet-peeves-when-it-comes-to-apis">What are your biggest pet peeves when it comes to APIs?</h2><p><strong>Josh: </strong>I just mentioned deprecating APIs out from under people, that’s a big pet peeve of mine, but aside from that:</p><ul><li>We’ve also touched on lack of documentation or unclear documentation and how that affects users — that's another one of my pet peeves</li><li>When it’s not clear how to use an API, get registered and set up with it, what a request or response looks like</li><li>No testing environment — it's important to have a sandbox where people can try it and (if monetized) try before they buy</li><li>Inconsistency in naming conventions and semantics</li></ul><p><strong>Greg:</strong> APIs are supposed to be really simple: you send data, you get data back, maybe an action happens during that time…but every API does things slightly differently. Everything else in tech is getting easier and nicer to use, but APIs still feel exactly the same as they did in the 90s. </p><p>People just believe that when they’re creating an API that the confusion and slight differences are the way it has to be, which makes something that should be simple be confusing. I’m really excited for people to care more about developer experience; people will say they do, but then do things because it makes sense for them as the API creator, without thinking about end users. </p><p>I’d love to see people take a step back and ask themselves how to simplify it, make it easier. People make their APIs super complex and forget that nobody cares about your API — they care about what cool things they can do with it.</p><p></p><h2 id="how-are-customer-stories-and-their-readme-usage-impacting-what-readme-is-building-next">How are customer stories and their ReadMe usage impacting what ReadMe is building next?</h2><p><strong>Greg: </strong>ReadMe is a very different product than it was five years ago, people care more about different things. Before, people just wanted to render an OAS file. Now, people are using their documentation as a marketing tool. We get different feature requests. People are really excited about things like layering realtime logs on top of docs and five years ago that wasn't the mentality.</p><p>Five years ago the mentality, and our tagline, was “really nice docs in five minutes.” Now, no one thinks that way. Implementations take months, because people put so much time and effort into it. People want to plan launches around their docs. Teams have gone from 1-2 users to 20-40 people using ReadMe. I’m really excited about current roadmap; it feels like now what we're building and what people want is converging.</p><p></p><h2 id="what-are-you-most-excited-about-in-your-2023-roadmap">What are you most excited about in your 2023 roadmap?</h2><p><strong>Josh:</strong> There's not a lot I can share in this setting, but I can say there are top customer asks for 2023: </p><ul><li>Returning to availability and security, they’re the number one priorities</li><li>Even under the face of rapid growth, constantly raising the bar for uptime and scalability</li><li>Security can be weird to talk about because it's measured by the negative case and the bad things that aren’t happening, but doing well on that front</li><li>Continuing to improve both of those things, along with delivering some new things customers are asking for</li></ul><p><strong>Greg: </strong>There are lots of exciting things coming up:</p><ul><li>Getting more into internal microservices — not just doing public APIs, but internal APIs as well, which can be just as (if not more) important</li><li>Our goal for this year is to make it so that all of our docs are backed by Git, so you can write and automate the process however you want</li><li>I'm excited about layering GPT-4 on top of the docs, so you can ask questions, which may be a little gimmicky, but is also really fascinating — being able to actually ask it to write code snippets for you, as opposed to having to write them yourself</li></ul><p>The last thing I'm really excited about is ReadMe is going to become more of a developer hub, like a developer dashboard. We want to bring it all together and have it all in one spot; lots of upcoming launches around that. Other than that, we're having a conference in San Francisco in May —not a roadmap thing, but watch out for that if you want to see more ReadMe stuff, especially if you're in San Francisco and want to do it in person! </p><h2 id="thats-all-folks">That's all, folks! </h2><p>We hope you enjoyed reading Greg and Josh’s thoughts — we certainly enjoyed hearing them! If you’d like to read the full transcript, you can <a href="https://blog.readme.com/ama-webinar-readme-aws-transcript/">do that here</a>. And if you want to learn more about what ReadMe can do for your team, <a href="https://readme.com/customers?ref=blog.readme.com" rel="noreferrer nofollow noopener">take a look at our customer stories</a>, or <a href="https://dash.readme.com/signup?ref=blog.readme.com" rel="noreferrer nofollow noopener">sign up for a free trial here</a>.</p> </div> <footer class="post-footer"> <div class="post-footer-share"> <h4>Share this article via</h4> <ul class="post-footer-social"> <li> <a href="https://twitter.com/intent/tweet?text=Check out this ReadMe post+https://blog.readme.com/author/miche/"> <svg viewBox="0 0 40 40" width="40px" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M20 0C8.954 0 0 8.954 0 20s8.954 20 20 20 20-8.954 20-20S31.046 0 20 0zm-.557 16.948l-.042-.692c-.126-1.793.98-3.432 2.728-4.067.643-.226 1.735-.255 2.448-.057.28.085.811.367 1.19.622l.685.466.755-.24c.42-.128.98-.34 1.231-.48.238-.128.448-.198.448-.156 0 .24-.518 1.06-.951 1.511-.588.636-.42.692.77.269.713-.24.727-.24.587.028-.084.141-.518.636-.98 1.087-.783.777-.825.862-.825 1.512 0 1.002-.476 3.093-.951 4.236-.882 2.147-2.77 4.365-4.659 5.48-2.658 1.568-6.197 1.963-9.177 1.046-.993-.311-2.7-1.102-2.7-1.243 0-.043.518-.1 1.147-.113a7.877 7.877 0 003.75-1.045l.755-.452-.868-.297c-1.23-.424-2.336-1.398-2.616-2.316-.084-.297-.056-.31.728-.31l.811-.015-.685-.325c-.812-.41-1.553-1.101-1.917-1.808-.266-.508-.601-1.793-.503-1.892.027-.043.321.042.657.155.965.353 1.091.268.532-.325-1.05-1.073-1.371-2.669-.868-4.18l.238-.678.923.918c1.889 1.85 4.113 2.952 6.66 3.276l.699.085z" fill="currentColor" /></svg> </a> </li> <li> <a href="https://www.facebook.com/sharer/sharer.php?u=https://blog.readme.com/author/miche/"> <svg viewBox="0 0 40 40" width="40px" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M40 20C40 8.953 31.047 0 20 0S0 8.953 0 20c0 9.984 7.313 18.258 16.875 19.758V25.78h-5.078V20h5.078v-4.406c0-5.012 2.984-7.781 7.555-7.781 2.187 0 4.476.39 4.476.39v4.922h-2.523c-2.485 0-3.258 1.543-3.258 3.125V20h5.547l-.887 5.781h-4.66v13.977C32.688 38.258 40 29.984 40 20z" fill="currentColor" /></svg> </a> </li> </ul> </div> <div class="post-footer-author"> <header class="post-footer-author-header"> <div class="image"> <img class="author-profile-image" src="/content/images/size/w100/2022/06/IMG_5785-cropped.jpeg" alt="Miche Nickolaisen" /> </div> <div> <h2>About the author</h2> <h3>Miche Nickolaisen</h3> </div> </header> <div class="post-footer-author-bio"> <p></p> <p class="post-footer-author-bio-readmore"><a href="/author/miche/">Read more posts by this author.</a></p> </div> </div> </footer> </div> </div> <div class="post-recommended"> <div class="width small"> <h2>Recommended next reads...</h2> <div class="post-index on-white"> <article class="post-index-item"> <a class="post-index-item-image" href="/tour-new-editor-sidebar/"> <img src="/content/images/2023/03/Blog-1.webp" /> </a> <ul class="post-tags"> <li> <a href="https://blog.readme.com/tag/product-updates/"> Product Updates </a> </li> </ul> <h2 class="post-index-item-title"><a href="/tour-new-editor-sidebar/">Take a Tour of the New Editor, Sidebar, and Page Controls 🗺️</a></h2> </article> <article class="post-index-item"> <a class="post-index-item-image" href="/helping-your-users-write-simpler-api-calls-with-api/"> <img src="/content/images/2022/12/Boarding-Plane.psd.full.png" /> </a> <ul class="post-tags"> <li> <a href="https://blog.readme.com/tag/dx/"> Developer Experience </a> </li> <li> <a href="https://blog.readme.com/tag/api-tips/"> API Tips </a> </li> </ul> <h2 class="post-index-item-title"><a href="/helping-your-users-write-simpler-api-calls-with-api/">Helping Your Users Write Succinct API Calls With &quot;api&quot; ✍️</a></h2> </article> </div> </div> </div> </div> <div class="page-bottom blue-bg"> <div class="width medium"> <div class="mailing"> <span class="icon"><svg viewBox="0 0 168 168" width="168px" fill="none" xmlns="http://www.w3.org/2000/svg"> <g filter="url(#filter0_d)"> <mask id="a" maskUnits="userSpaceOnUse" x="16" y="16" width="136" height="134"> <path d="M16 68.024a4 4 0 011.63-3.223l64-47.059a4 4 0 014.74 0l64 47.06a4 4 0 011.63 3.222V146a4 4 0 01-4 4H20a4 4 0 01-4-4V68.024z" fill="#fff" /> </mask> <g mask="url(#a)"> <path d="M16 66l68-50 68 50v84H16V66z" fill="#fff" /> <g filter="url(#filter1_i)"> <path d="M84 16L16 66l65.63 48.258a4.002 4.002 0 004.74 0L152 66 84 16z" fill="#008DF5" fill-opacity=".2" /> </g> <g filter="url(#filter2_d)"> <path d="M81.63 101.742L16 150h136l-65.63-48.258a4.002 4.002 0 00-4.74 0z" fill="#fff" /> </g> </g> </g> <g filter="url(#filter3_d)"> <circle cx="122" cy="36" r="20" fill="#E95F6A" /> </g> <defs> <filter id="filter0_d" x="0" y="2.965" width="168" height="165.035" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix" /> <feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" /> <feOffset dy="2" /> <feGaussianBlur stdDeviation="8" /> <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" /> <feBlend in2="BackgroundImageFix" result="effect1_dropShadow" /> <feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape" /> </filter> <filter id="filter1_i" x="16" y="14" width="136" height="101.035" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix" /> <feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape" /> <feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha" /> <feOffset dy="-2" /> <feGaussianBlur stdDeviation="2" /> <feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1" /> <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" /> <feBlend in2="shape" result="effect1_innerShadow" /> </filter> <filter id="filter2_d" x="8" y="92.965" width="152" height="65.035" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix" /> <feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" /> <feOffset /> <feGaussianBlur stdDeviation="4" /> <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" /> <feBlend in2="BackgroundImageFix" result="effect1_dropShadow" /> <feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape" /> </filter> <filter id="filter3_d" x="86" y="0" width="72" height="72" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix" /> <feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" /> <feOffset /> <feGaussianBlur stdDeviation="8" /> <feColorMatrix values="0 0 0 0 0.913725 0 0 0 0 0.372549 0 0 0 0 0.415686 0 0 0 0.4 0" /> <feBlend in2="BackgroundImageFix" result="effect1_dropShadow" /> <feBlend in="SourceGraphic" in2="effect1_dropShadow" result="shape" /> </filter> </defs> </svg></span> <span class="dashes"><svg viewBox="0 0 342 48" width="340px" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M111 4a4 4 0 00-4-4H36a4 4 0 000 8h71a4 4 0 004-4zm104.5 36.03a4.05 4.05 0 00-.5-.03h-1a4 4 0 000 8h1c.169 0 .336-.01.5-.03.164.02.331.03.5.03h48a4 4 0 000-8h-48c-.169 0-.336.01-.5.03zM157 20a4 4 0 010 8H88a4 4 0 010-8h69zm-80 4a4 4 0 00-4-4H4a4 4 0 000 8h69a4 4 0 004-4zm119 16a4 4 0 010 8H62a4 4 0 010-8h134zm125 4a4 4 0 00-4-4h-36a4 4 0 000 8h36a4 4 0 004-4zm-69-20a4 4 0 00-4-4h-52a4 4 0 000 8h52a4 4 0 004-4zm86-4a4 4 0 010 8h-75a4 4 0 010-8h75z" fill="#dcdee0" /></svg></span> <h2>Stay In-Touch</h2> <p>Want to hear from us about APIs, documentation, DX and what's new at ReadMe?</p> <!-- Begin Mailchimp Signup Form --> <form action="https://readme.us18.list-manage.com/subscribe/post?u=d09347bd216a28b79a8c389dd&amp;id=94603c66e0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> <div class="fields"> <input type="email" placeholder="Email address..." value="" name="EMAIL" class="required email mailing-input" id="mce-EMAIL"> <button type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"><svg width="14" height="12" viewBox="0 0 14 12" xmlns="http://www.w3.org/2000/svg"><path fill="#939EAE" fill-rule="nonzero" d="M9.586 4.707L6.293 1.414 7.707 0l5.707 5.707-5.707 5.707L6.293 10l3.293-3.293H0v-2z"/></svg></button> <div id="mce-responses" class="clear"> <div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div> </div> <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_d09347bd216a28b79a8c389dd_94603c66e0" tabindex="-1" value=""></div> </div> </form> <script src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script> <script>(function ($) { window.fnames = new Array(); window.ftypes = new Array(); fnames[0] = 'EMAIL'; ftypes[0] = 'email'; fnames[1] = 'FNAME'; ftypes[1] = 'text'; fnames[2] = 'LNAME'; ftypes[2] = 'text'; fnames[3] = 'ADDRESS'; ftypes[3] = 'address'; fnames[4] = 'PHONE'; ftypes[4] = 'phone'; fnames[5] = 'BIRTHDAY'; ftypes[5] = 'birthday'; fnames[6] = 'STOREURL'; ftypes[6] = 'url'; fnames[7] = 'STORENAME'; ftypes[7] = 'text'; }(jQuery)); var $mcj = jQuery.noConflict(true);</script> <!--End mc_embed_signup--> <div class="orb red orb-4"></div> <div class="orb green orb-5"></div> <div class="orb yellow orb-6"></div> </div> </div> <div class="footer-swirl"> <svg viewBox="0 0 1434 152" xmlns="http://www.w3.org/2000/svg"> <g fill="none" fill-rule="nonzero"> <path d="M0 19.805S312.914-45.927 720 62.11c407.09 108.038 720 13.416 720 13.416V677H0V19.804z" fill="#054373" /> <path d="M-6 67.433s314-115.434 720-.434 720 56.156 720 56.156v815.344H-6V67.432z" fill="#033052" /> </g> </svg> </div> <div class="blue-bg"> <div class="width medium"> <footer class="footer"> <div class="footer-logo"><svg viewBox="0 0 214 39" width="214px" fill=" none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M150.872.66a.575.575 0 00-.65-.651h-6.883a.604.604 0 00-.704.65v3.647a.605.605 0 00.704.651h1.529v3.37c0 .981.092 1.916.092 1.916h-.092c-.42-.889-2.24-3.317-6.439-3.317-6.485 0-10.645 4.864-10.645 11.735 0 7.622 4.436 11.927 10.5 11.927 4.39 0 6.676-2.85 7.051-3.784h.092v2.298c0 .66.534 1.195 1.193 1.195h3.288c.52 0 .941-.422.941-.942v-4.022L150.872.66zM79.27 7.52a.455.455 0 01-.107.437 13.35 13.35 0 00-3.744 4.66.5.5 0 01-.486.326c-4.152-.386-8.004 3.215-8.004 6.355v5.637h1.625c.362 0 .655.288.655.643v3.601a.65.65 0 01-.655.643h-9.553a.623.623 0 01-.476-.176.6.6 0 01-.179-.467v-3.601a.561.561 0 01.163-.483.584.584 0 01.492-.16h1.703v-12.93h-2.312a.6.6 0 01-.485-.168.577.577 0 01-.17-.476V7.76a.65.65 0 01.655-.643h7.011a.65.65 0 01.655.643v5.13h.185s1.834-6.008 9.5-6.008c1.076.007 2.149.114 3.204.318a.466.466 0 01.323.32zm10.602 17.825a8.98 8.98 0 006.628-3.002.631.631 0 011-.092l2.29 2.434a.69.69 0 01.094 1.029c-.476.767-3.767 4.874-10.544 4.874-6.777 0-12.358-4.406-12.358-11.899a11.405 11.405 0 013.35-8.353 11.832 11.832 0 018.438-3.453c7.44 0 11.162 4.406 11.162 12.09 0 .424-.35.768-.782.768H83.517c.18 3.251 3.02 5.77 6.355 5.604zm-.86-13.55c-2.767 0-4.87 1.36-5.394 4.315h10.256c-.086-2.157-1.47-4.315-4.862-4.315zm114.787 13.542a6.11 6.11 0 01-4.366-1.518c-1.194-1.056-1.912-2.535-2.004-4.057h15.633a.776.776 0 00.782-.77c0-7.696-3.721-12.11-11.163-12.11a11.824 11.824 0 00-8.414 3.451 11.439 11.439 0 00-3.358 8.337c0 7.505 5.582 11.918 12.359 11.918s10.068-4.114 10.545-4.882a.693.693 0 00-.094-1.03l-2.29-2.438a.632.632 0 00-1.001.092 8.975 8.975 0 01-6.629 3.007zm3.987-9.228c-.094-2.16-1.478-4.32-4.87-4.32-2.767 0-4.87 1.36-5.394 4.32h10.264zm-88.437 11.998c-.082.592.118 1.189.541 1.611.424.423 1.021.623 1.576.51h4.931a.584.584 0 00.606-.65V25.93a.546.546 0 00-.606-.65h-1.749V7.954a.614.614 0 00-.652-.651h-4.21a.59.59 0 00-.652.65v2.199h-.092c-.345-.843-2.454-3.27-6.901-3.27-6.082 0-10.53 4.35-10.53 11.925 0 6.916 3.981 11.78 10.484 11.78 4.586 0 6.464-2.85 7.116-4.442h.138v1.96zm-6.02-15.894c-3.32 0-5.567 2.62-5.567 6.687s2.385 6.495 5.567 6.495c2.845 0 5.368-2.198 5.368-6.549 0-4.388-2.385-6.633-5.368-6.633zm26.156-.04c-3.174 0-5.552 2.429-5.552 6.45 0 4.022 2.194 6.734 5.552 6.734 3.036 0 5.353-2.299 5.353-6.688 0-4.39-2.509-6.496-5.353-6.496zm50.742 12.778h-1.742v-9.98c0-4.737-2.74-8.089-7.84-8.089-4.689 0-6.428 2.68-7.009 3.574l-.001.002-.002.002c-.05.077-.091.14-.125.188-1.138-2.297-3.452-3.766-6.803-3.766-4.985 0-6.722 3.194-7.09 3.87a2.828 2.828 0 01-.047.084h-.139V8.17a.82.82 0 00-.252-.753.876.876 0 00-.785-.21h-3.406c-.568 0-1.029.448-1.029 1v20.23c0 .368.15.72.417.98s.629.406 1.007.406h6.54a.67.67 0 00.466-.187.632.632 0 00.192-.453v-3.592a.552.552 0 00-.164-.48.59.59 0 00-.494-.16h-1.641v-9.754c.511-1.813 2.225-3.055 4.157-3.012 3.026 0 3.87 1.928 3.87 4.737v12.337a.528.528 0 00.158.383c.103.102.244.159.391.159h7.446a.629.629 0 00.478-.175.592.592 0 00.18-.465v-3.57a.552.552 0 00-.164-.48.59.59 0 00-.494-.16h-1.695v-9.242a5.614 5.614 0 00-.139-.873c.584-1.61 2.17-2.67 3.924-2.621 2.98 0 3.87 1.928 3.87 4.737v10.755c0 1.169.974 2.116 2.175 2.116h5.805a.649.649 0 00.658-.64v-3.592a.556.556 0 00-.168-.488.593.593 0 00-.505-.152zM31.156 5.353H42.36a3.853 3.853 0 013.827 3.855v19.738a3.853 3.853 0 01-3.85 3.855h-7.192c-8.186 0-10.635 1.974-11.813 6.037a.216.216 0 01-.215.162h-.047a.216.216 0 01-.215-.162c-1.17-4.063-3.62-6.037-11.813-6.037H3.85A3.853 3.853 0 010 28.946V9.208a3.853 3.853 0 013.85-3.855h11.197a8.257 8.257 0 018.054 6.446 8.257 8.257 0 018.055-6.446zm-11.75 21.303a.277.277 0 01-.278.278H6.268a.277.277 0 01-.277-.278v-1.835c0-.153.124-.277.277-.277h12.86c.153 0 .277.124.277.277v1.835zm-.278-4.61a.277.277 0 00.277-.278v-1.835a.277.277 0 00-.277-.278H6.268a.277.277 0 00-.277.278v1.835a.278.278 0 00.277.277h12.86zm.277-5.166a.277.277 0 01-.277.277H6.268a.277.277 0 01-.277-.277v-1.835c0-.154.124-.278.277-.278h12.86c.153 0 .277.124.277.278v1.835zm20.71 9.965a.278.278 0 00.081-.197v-1.835a.277.277 0 00-.277-.277h-12.86a.277.277 0 00-.277.277v1.835a.278.278 0 00.277.278h12.86c.073 0 .144-.03.196-.081zm-.196-4.807h-12.86a.277.277 0 01-.277-.278v-1.835a.277.277 0 01.277-.277h12.86c.153 0 .277.124.277.277v1.835a.277.277 0 01-.277.278zm0-4.889a.277.277 0 00.277-.277v-1.827a.277.277 0 00-.277-.278h-12.86a.277.277 0 00-.277.278v1.827c0 .153.124.277.277.277h12.86z" fill="#008DF5" /></svg></div> <div class="footer-top-flex"> <svg width="215px" class="footer-dashes-1" viewBox="0 0 215 108" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M111 4a4 4 0 00-4-4H36a4 4 0 000 8h71a4 4 0 004-4zm50 20a4 4 0 00-4-4H88a4 4 0 000 8h69a4 4 0 004-4zm-88-4a4 4 0 010 8H4a4 4 0 010-8h69zm127 24a4 4 0 00-4-4H62a4 4 0 000 8h134a4 4 0 004-4zm11-4a4 4 0 010 8h-1a4 4 0 010-8h1zm-50 64a4 4 0 00-4-4h-36a4 4 0 000 8h36a4 4 0 004-4zm-57-4a4 4 0 010 8H56a4 4 0 010-8h48zM92 84a4 4 0 00-4-4H36a4 4 0 000 8h52a4 4 0 004-4zm86-4a4 4 0 010 8h-75a4 4 0 010-8h75z" fill="#054373" /></svg> <h2> Need Awesome API <br>Documentation? </h2> <div class="footer-top-flex-buttons"> <a class="button blue full" href="https://readme.com">Get Started</a> <!--<a class="button blue-line full">Upload Swagger</a>--> <svg class="footer-dashes-2" width="193px" viewBox="0 0 193 28" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M193 24a4 4 0 00-4-4H89a4 4 0 000 8h100a4 4 0 004-4z" fill="#054373" /> <path fill-rule="evenodd" clip-rule="evenodd" d="M76 24a4 4 0 00-4-4H24a4 4 0 000 8h48a4 4 0 004-4z" fill="#054373" /> <path fill-rule="evenodd" clip-rule="evenodd" d="M60 4a4 4 0 00-4-4H4a4 4 0 100 8h52a4 4 0 004-4z" fill="#054373" /> <path fill-rule="evenodd" clip-rule="evenodd" d="M150 4a4 4 0 00-4-4H71a4 4 0 000 8h75a4 4 0 004-4z" fill="#054373" /> </svg> <svg class="footer-dashes-3" width="265px" viewBox="0 0 264 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M175 4a4 4 0 00-4-4h-49a4 4 0 000 8h49a4 4 0 004-4zm50 20a4 4 0 00-4-4h-69a4 4 0 000 8h69a4 4 0 004-4zm-88-4a4 4 0 010 8H4a4 4 0 010-8h133zm127 24a4 4 0 00-4-4H126a4 4 0 000 8h134a4 4 0 004-4zm-161-4a4 4 0 010 8h-3a4 4 0 010-8h3z" fill="#054373" /></svg> </div> </div> <div class="footer-bottom"> <div class="footer-bottom-col"> <h3>Products</h3> <ul> <li><a href="https://readme.com/documentation">Documentation</a></li> <li><a href="https://readme.com/metrics">Developer Metrics</a></li> <li><a href="https://readme.com/enterprise">Enterprise</a></li> <li><a href="https://readme.com/pricing">Pricing</a></li> </ul> </div> <div class="footer-bottom-col"> <h3>Company</h3> <ul> <li><a href="https://blog.readme.com">ReadMe Blog</a></li> <li><a href="https://readme.com/about">About</a></li> <li><a href="https://docs.readme.com">Knowledge Base</a></li> <li><a href="https://readme.com/careers">We're Hiring!</a></li> </ul> </div> <div class="footer-bottom-col"> <ul class="footer-bottom-nav"> <li><a href="https://readme.com/tos">Terms of Service</a></li> <li><a href="https://readme.com/privacy">Privacy Policy</a></li> <li><a href="https://readme.com/msa">MSA</a></li> <li><a href="https://docs.readme.com/help/contact">Contact Us</a></li> --> </ul> </div> </div> </footer> </div> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="https://unpkg.com/@tryghost/content-api@1.0.0/umd/content-api.min.js"></script> <script src="https://blog.readme.com/assets/scripts/ghost-finder.js?v=9af61c0f63"></script> <script src="https://blog.readme.com/assets/scripts/scripts.js?v=9af61c0f63"></script> <script> var icons = { // Find icons here: https://fontawesome.com/icons?d=listing 'how-to-use-openapi-and-swagger-spec-for-documentation': 'fad fa-map-signs', 'introducing-readme-free': 'fad fa-credit-card-front', 'new-search-design-and-improved-relevance': 'fad fa-search', 'jamstack-static-sites-dynamic-apis-killer-dx': 'fad fa-layer-group', 'http-api-faux-pas': 'fad fa-bomb', '4-key-questions': 'fad fa-question-circle', 'types-of-documentation': 'fad fa-file-certificate', 'making-better-use-of-herokus-logging-firehose': 'fad fa-sensor-alert', 'how-to-make-your-api-more-enjoyable-to-use': 'fad fa-alicorn', }; $('.post-index-item-image, .featured-posts-item-image').each(function() { var icon = icons[$(this).attr('href').replace(/\//g, '')]; if (icon) { $('svg', this).replaceWith($('<i>', { class: icon })); } }); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10