{"id":2310,"date":"2022-12-21T20:09:31","date_gmt":"2022-12-21T20:09:31","guid":{"rendered":"https:\/\/readmeprd.wpenginepowered.com\/?p=2310"},"modified":"2025-12-16T19:30:20","modified_gmt":"2025-12-17T01:30:20","slug":"helping-your-users-write-simpler-api-calls-with-api","status":"publish","type":"post","link":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api","title":{"rendered":"Helping Your Users Write Succinct API Calls With &#8220;api&#8221; \u270d\ufe0f"},"content":{"rendered":"\n<p>When it comes to <a href=\"https:\/\/readme.com\/resources\/why-dx-matters-driving-api-success-with-a-user-first-approach\/\">developer experience (DX) at ReadMe<\/a>, two mantras often come to mind:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Awesome by default<\/strong> \ud83c\udd92 While developers often benefit from having a slew of configuration options and flags available in their tooling, <em>too<\/em> many options can feel overwhelming, particularly for first-time users. Having a sensible default experience will help your developers get to that first successful API call even faster.<\/li>\n\n\n\n<li><strong>Meet users where they are<\/strong> \ud83e\udd1d No two developers are alike, so your API (<a href=\"https:\/\/readme.com\/resources\/customize-dx-developer-dashboard\/\">and your docs!<\/a>) should reflect that. Your developers will often have different use cases, different technical stacks, and different levels of experience with APIs. The more your API can accommodate your developers and their diverse needs, the higher your API adoption.<\/li>\n<\/ol>\n\n\n\n<p>With these in mind, we\u2019re always looking for new ways to make APIs more accessible and lower the on-ramp to getting started. Today, we\u2019re sharing more about <a href=\"https:\/\/github.com\/readmeio\/api\"><code>api<\/code>, our open-source SDK generator<\/a>.<\/p>\n\n\n\n<p><code>api<\/code> takes your OpenAPI definition and generates a powerful SDK that\u2019s custom-tailored to your API. With the world-class developer experience that an <code>api<\/code> SDK provides, making API calls has never felt easier or more magical \ud83e\ude84<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"the-api-origin-story-%F0%9F%92%AD\">The <code>api<\/code> origin story \ud83d\udcad<\/h1>\n\n\n\n<p>You\u2019ve probably heard a lot about APIs, but what exactly is <code>api<\/code> and why does it matter?<\/p>\n\n\n\n<p>Let\u2019s start by looking at a typical code sample for an API call. In this example, the sample is written in JavaScript, and it uses <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Fetch_API\">the Fetch API<\/a> to <a href=\"https:\/\/docs.readme.com\/main\/reference\/getopenroles\">fetch our current job openings from the ReadMe API<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"JavaScript\" class=\"language-JavaScript\">fetch('https:\/\/dash.readme.com\/api\/v1\/apply', {\n  method: 'GET',\n  headers: { accept: 'application\/json' },\n})\n  .then(res =&gt; res.json())\n  .then(json =&gt; console.log(json))\n  .catch(err =&gt; console.error('error:' + err));<\/code><\/pre>\n\n\n\n<p>ReadMe\u2019s API reference automatically generates code samples for your endpoints in dozens of languages and libraries, including <code>fetch<\/code>. And for good reason too \u2014 <code>fetch<\/code> is popular, versatile, and it\u2019s available everywhere!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It\u2019s baked into every modern web browser (including the one you\u2019re likely reading this on!) \ud83c\udf10<\/li>\n\n\n\n<li>It can run on the server out-of-the-box (thanks to runtimes like <a href=\"https:\/\/deno.com\/deploy\/docs\/runtime-fetch\">deno<\/a> and <a href=\"https:\/\/nodejs.org\/en\/blog\/announcements\/v18-release-announce\/#fetch-experimental\">Node.js 18<\/a>) \ud83d\udce6<\/li>\n\n\n\n<li>It offers a tremendous amount of flexibility to handle a wide variety of API use cases \ud83d\udcaa<\/li>\n<\/ul>\n\n\n\n<p><strong>But this approach isn&#8217;t for everybody. <\/strong>Since <code>fetch<\/code> and other generic HTTP clients are designed to make calls to nearly every API under the sun, there\u2019s inherently going to be verbosity, boilerplate code, and a whole lot of configuration options. This makes your typical, off-the-shelf HTTP client pretty confusing for many API users.<\/p>\n\n\n\n<p>At ReadMe, we\u2019re constantly keeping an eye on the best DX out there, and we\u2019ve come to notice a trend. Many of the top <a href=\"https:\/\/techcrunch.com\/2022\/06\/18\/the-rise-of-api-first-companies-in-fintech-and-beyond\/\">API-first companies<\/a> out there offer their own custom <a href=\"https:\/\/en.wikipedia.org\/wiki\/Software_development_kit\">SDKs<\/a>, such as <a href=\"https:\/\/stripe.com\/docs\/js\">Stripe<\/a>, <a href=\"https:\/\/www.twilio.com\/docs\/libraries\/js-libraries\">Twilio<\/a>, and <a href=\"https:\/\/github.com\/plaid\/plaid-node\">Plaid<\/a> (and I\u2019m only linking to their JavaScript SDKs!).<\/p>\n\n\n\n<p>Those companies and their respective SDKs are the tip of the iceberg. <strong>API-first companies are continually investing in SDKs for a variety of programming languages, and for good reason. <\/strong>With an SDK that\u2019s custom-tailored to a single API, their users have much less boilerplate code and confusing configuration options to deal with, so they can get to that first successful API call even faster.<\/p>\n\n\n\n<p>Thousands of great APIs run their developer hubs on ReadMe, where our customers are already documenting every little detail about their API using <a href=\"https:\/\/docs.readme.com\/docs\/openapi\">the OpenAPI Specification<\/a>. This got us thinking: \u201cthe OpenAPI Specification already provides a ton of valuable information about an API, what if we use this to generate an SDK that\u2019s as good as <a href=\"https:\/\/github.com\/makenotion\/notion-sdk-js\">Notion\u2019s JavaScript SDK<\/a>\u201d?<\/p>\n\n\n\n<p>And that, my friends, is how <code>api<\/code> came to fruition. \ud83c\udf31<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"making-fetch-api-happen-%F0%9F%92%84\">Making <s>fetch<\/s> <code>api<\/code> happen \ud83d\udc84<\/h1>\n\n\n\n<p>Let\u2019s revisit our previous example: fetching current job openings from the ReadMe API. The <code>fetch<\/code> sample we looked at works perfectly fine, but what would an API call look like if the ReadMe API had a custom-tailored SDK? That\u2019s where <code>api<\/code> comes in.<\/p>\n\n\n\n<p>Here\u2019s what <a href=\"https:\/\/docs.readme.com\/main\/reference\/getopenroles\">the same API call<\/a> looks like with a code snippet using the <code>api<\/code>-generated SDK:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"JavaScript\" class=\"language-JavaScript\">readme.getOpenRoles()\n  .then(({ data }) =&gt; console.log(data))\n  .catch(err =&gt; console.error(err));<\/code><\/pre>\n\n\n\n<p>Notice how there is far less boilerplate code than the <code>fetch<\/code> example, and much of the complexity is abstracted away. But the code sample does the exact same thing!<\/p>\n\n\n\n<p><strong>Let\u2019s break down the process of SDK generation, end to end:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>The ReadMe API is documented using an OpenAPI definition. Within that definition, there is an <a href=\"https:\/\/github.com\/OAI\/OpenAPI-Specification\/blob\/main\/versions\/3.1.0.md#operationObject\">operation<\/a> with an ID (i.e., <code>operationId<\/code>) called <code>getOpenRoles<\/code>.<\/li>\n\n\n\n<li>Anytime an API user (in this case, someone that wishes to <a href=\"https:\/\/readme.com\/careers\">apply for a job at ReadMe<\/a>) runs the installation command to set up the SDK, <code>api<\/code> takes the OpenAPI definition and generates an SDK that\u2019s completely customized to the ReadMe API. It contains methods for every operation available in the API definition, as well as detailed descriptions of every request and response parameter.<\/li>\n\n\n\n<li>Once the installation is complete, the user imports the SDK into their code and starts writing. Thanks to the comprehensive TypeScript definitions produced by <code>api<\/code>, code completion platforms like <a href=\"https:\/\/code.visualstudio.com\/docs\/editor\/intellisense\">IntelliSense<\/a> can guide them along as they write their snippet. They\u2019re able to successfully hit the ReadMe API with a code snippet that\u2019s a fraction of the length and complexity of the corresponding <code>fetch<\/code> snippet.<\/li>\n<\/ol>\n\n\n\n<p><strong>That\u2019s the developer experience ethos we\u2019re going for with <code>api<\/code>: a readable, succinct code snippet that will get you to that first successful call in a jiffy. <\/strong>\ud83e\udd5c<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"elevate-your-openapi-powered-dx-with-api-%F0%9F%93%88\">Elevate your OpenAPI-powered DX with <code>api<\/code> \ud83d\udcc8<\/h1>\n\n\n\n<p>One important design consideration as we built <code>api<\/code> is that we wanted the SDK generation to be completely agnostic of your documentation platform, much like OpenAPI itself. Because <code>api<\/code> is built on top of the OpenAPI specification, anybody that describes their API using OpenAPI can step up their DX with a custom SDK generated by <code>api<\/code>.<\/p>\n\n\n\n<p>There are a few requirements to get started:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/nodejs.org\">Node.js<\/a> and <code>npm<\/code> installed<\/li>\n\n\n\n<li>A local directory with a <code>package.json<\/code> file created<\/li>\n\n\n\n<li>An OpenAPI definition, either located in your directory or served from a URL<\/li>\n<\/ul>\n\n\n\n<p>Once you have everything in order, you can generate a custom-tailored SDK by running the following command from the root of your directory and following the prompts:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"JavaScript\" class=\"language-JavaScript\">npx api install [path-to-api-definition]<\/code><\/pre>\n\n\n\n<p>Once the SDK is generated, you\u2019ll be writing succinct code snippets and getting to that successful first API call in no time \ud83d\ude80<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"two-birds-%F0%9F%90%A6-one-incredible-dx-%F0%9F%8C%9F\">Two birds \ud83d\udc26, one incredible DX \ud83c\udf1f<\/h1>\n\n\n\n<p>If there\u2019s one thing that developers, technical writers, and pretty much <strong><strong><strong>anyone<\/strong><\/strong><\/strong> enjoys, it\u2019s being able to stretch your work so it goes further and saves you time. And that\u2019s another reason why we\u2019re so excited about <code>api<\/code> and how it leverages the existing OpenAPI ecosystem to supercharge your users\u2019 developer experience in ReadMe.<\/p>\n\n\n\n<p><strong>Before <code>api<\/code> came around, there were already many great ways that a comprehensive OpenAPI definition could set your API reference apart and further set your users up for success:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Comprehensive security scheme definitions can help your users navigate one of the trickiest parts of getting started with an API: authentication!<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.readme.com\/content\/images\/2022\/12\/GS-A-Pages-in-Hub.gif\" alt=\"Gif of getting started and authentication pages in ReadMe\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Detailed request parameter descriptions and definitions (with default values, enums, and examples!) eliminate ambiguity and help your users understand exactly what data to send to your API:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.readme.com\/content\/images\/2022\/12\/CleanShot-2022-12-14-at-13.33.10.gif\" alt=\"Selecting parameter details\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>By capturing exhaustive response schemas and plenty of examples for every edge case, your users will know exactly what to expect from your API\u2019s responses:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.readme.com\/content\/images\/2022\/12\/CleanShot-2022-12-14-at-13.38.12.gif\" alt=\"Detail view of a 200 response code\"\/><\/figure>\n\n\n\n<p>But who said that a great developer experience should start and end with your docs? By investing in the above aspects of your OpenAPI definition, your users\u2019 experience with your <code>api<\/code>-generated SDK becomes even more magical:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Thanks to that security scheme definition, passing in authentication credentials into your SDK is a one-liner:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"JavaScript\" class=\"language-JavaScript\">sdk.auth('API_KEY');<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Because of those detailed request parameter definitions, passing in request parameters is a much more straightforward exercise that uses a fraction of the boilerplate code. And thanks to the power of TypeScript, users will get helpful cues about the parameters as they write in their editor:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.readme.com\/content\/images\/2022\/12\/CleanShot-2022-12-14-at-13.16.15.gif\" alt=\"Gif of code editor with cues about specific parameters showing up as the user is typing\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>And because of those exhaustive response schemas, users will also be able to leverage TypeScript hints to parse out response bodies:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.readme.com\/content\/images\/2022\/12\/CleanShot-2022-12-14-at-13.28.15.gif\" alt=\"Gif of code editor with TypeScript hints\"\/><\/figure>\n\n\n\n<p>There\u2019s already a tremendous amount of value in putting together a rock-solid OpenAPI definition. With <code>api<\/code>, you get even more developer experience bang for your OpenAPI buck \ud83d\udcb8<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"available-now-in-your-readme-api-reference-%F0%9F%A6%89\">Available now in your ReadMe API reference \ud83e\udd89<\/h1>\n\n\n\n<p>If you have an API reference section that\u2019s powered by ReadMe, your users can start writing better API calls with <code>api<\/code> today. They can select <strong><strong><strong><strong>Node<\/strong><\/strong><\/strong><\/strong> in the language selector and select the <strong>api<\/strong> library to get started.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.readme.com\/content\/images\/2022\/12\/CleanShot-2022-12-14-at-13.30.09@2x.png\" alt=\"Screenshot of language selection part of interface in ReadMe\"\/><\/figure>\n\n\n\n<p>If you run into any issues, check out <a href=\"https:\/\/api.readme.dev\/docs\">our docs<\/a> and feel free to contact us at <a href=\"https:\/\/www.notion.so\/Plan-for-bin-readme-com-2ad33cb9b9aa431abdb2b1bc80028b9c\">support@readme.io<\/a>. <code>api<\/code> is proudly open-source (shoutout to <a href=\"https:\/\/twitter.com\/sharpfarts\">Jon<\/a> for your all your hard work on this!) so feel free to open up an issue in <a href=\"https:\/\/github.com\/readmeio\/api\">the <code>api<\/code> GitHub repository<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When it comes to developer experience (DX) at ReadMe, two mantras often come to mind: With these in mind, we\u2019re always looking for new ways to make APIs more accessible and lower the on-ramp to getting started. Today, we\u2019re sharing more about api, our open-source SDK generator. api takes your OpenAPI definition and generates a [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":2930,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[23,33],"tags":[42],"ppma_author":[49],"class_list":["post-2310","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developer-experience","category-improving-dx","tag-api-tips"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Helping Your Users Write Succinct API Calls With &quot;api&quot; \u270d\ufe0f - ReadMe: Resource Library<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Helping Your Users Write Succinct API Calls With &quot;api&quot; \u270d\ufe0f - ReadMe: Resource Library\" \/>\n<meta property=\"og:description\" content=\"When it comes to developer experience (DX) at ReadMe, two mantras often come to mind: With these in mind, we\u2019re always looking for new ways to make APIs more accessible and lower the on-ramp to getting started. Today, we\u2019re sharing more about api, our open-source SDK generator. api takes your OpenAPI definition and generates a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api\" \/>\n<meta property=\"og:site_name\" content=\"ReadMe: Resource Library\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-21T20:09:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-17T01:30:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/readme.com\/resources\/wp-content\/uploads\/2022\/12\/Helping-Your-Users-Write-Succinct-API-Calls.png\" \/>\n\t<meta property=\"og:image:width\" content=\"200\" \/>\n\t<meta property=\"og:image:height\" content=\"200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kanad Gupta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kanad Gupta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api\",\"url\":\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api\",\"name\":\"Helping Your Users Write Succinct API Calls With \\\"api\\\" \u270d\ufe0f - ReadMe: Resource Library\",\"isPartOf\":{\"@id\":\"https:\/\/readme.com\/resources\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#primaryimage\"},\"image\":{\"@id\":\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#primaryimage\"},\"thumbnailUrl\":\"https:\/\/readme.com\/resources\/wp-content\/uploads\/2022\/12\/Helping-Your-Users-Write-Succinct-API-Calls.png\",\"datePublished\":\"2022-12-21T20:09:31+00:00\",\"dateModified\":\"2025-12-17T01:30:20+00:00\",\"author\":{\"@id\":\"https:\/\/readme.com\/resources\/#\/schema\/person\/5ff0ec37fac9e314594c7a5564ee24ad\"},\"breadcrumb\":{\"@id\":\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#primaryimage\",\"url\":\"https:\/\/readme.com\/resources\/wp-content\/uploads\/2022\/12\/Helping-Your-Users-Write-Succinct-API-Calls.png\",\"contentUrl\":\"https:\/\/readme.com\/resources\/wp-content\/uploads\/2022\/12\/Helping-Your-Users-Write-Succinct-API-Calls.png\",\"width\":200,\"height\":200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/readme.com\/resources\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Helping Your Users Write Succinct API Calls With &#8220;api&#8221; \u270d\ufe0f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/readme.com\/resources\/#website\",\"url\":\"https:\/\/readme.com\/resources\/\",\"name\":\"ReadMe: Resource Library\",\"description\":\"Making API documentation better for everyone\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/readme.com\/resources\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/readme.com\/resources\/#\/schema\/person\/5ff0ec37fac9e314594c7a5564ee24ad\",\"name\":\"Kanad Gupta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/readme.com\/resources\/#\/schema\/person\/image\/f411bab14c6f25f8d94c6658c39badd3\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e1918540f557e223e19f33cf4db88f78bee3594cbcc066d92c4b609b68123058?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e1918540f557e223e19f33cf4db88f78bee3594cbcc066d92c4b609b68123058?s=96&d=mm&r=g\",\"caption\":\"Kanad Gupta\"},\"description\":\"Joining us remotely from Minneapolis, Kanad forms the newly-minted Minnesota branch of the ReadMe team! We love Minnesota. Kanad just bought a bike and is loving riding around Minneapolis, but he\u2019s less enthused by the whole peddling aspect of it. While biking around MPLS, Kanad is probably listening to Janelle Mon\u00e1e\u2014his Spotify artist of the decade.\",\"url\":\"https:\/\/readme.com\/resources\/author\/kanad\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Helping Your Users Write Succinct API Calls With \"api\" \u270d\ufe0f - ReadMe: Resource Library","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api","og_locale":"en_US","og_type":"article","og_title":"Helping Your Users Write Succinct API Calls With \"api\" \u270d\ufe0f - ReadMe: Resource Library","og_description":"When it comes to developer experience (DX) at ReadMe, two mantras often come to mind: With these in mind, we\u2019re always looking for new ways to make APIs more accessible and lower the on-ramp to getting started. Today, we\u2019re sharing more about api, our open-source SDK generator. api takes your OpenAPI definition and generates a [&hellip;]","og_url":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api","og_site_name":"ReadMe: Resource Library","article_published_time":"2022-12-21T20:09:31+00:00","article_modified_time":"2025-12-17T01:30:20+00:00","og_image":[{"width":200,"height":200,"url":"https:\/\/readme.com\/resources\/wp-content\/uploads\/2022\/12\/Helping-Your-Users-Write-Succinct-API-Calls.png","type":"image\/png"}],"author":"Kanad Gupta","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kanad Gupta","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api","url":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api","name":"Helping Your Users Write Succinct API Calls With \"api\" \u270d\ufe0f - ReadMe: Resource Library","isPartOf":{"@id":"https:\/\/readme.com\/resources\/#website"},"primaryImageOfPage":{"@id":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#primaryimage"},"image":{"@id":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#primaryimage"},"thumbnailUrl":"https:\/\/readme.com\/resources\/wp-content\/uploads\/2022\/12\/Helping-Your-Users-Write-Succinct-API-Calls.png","datePublished":"2022-12-21T20:09:31+00:00","dateModified":"2025-12-17T01:30:20+00:00","author":{"@id":"https:\/\/readme.com\/resources\/#\/schema\/person\/5ff0ec37fac9e314594c7a5564ee24ad"},"breadcrumb":{"@id":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#primaryimage","url":"https:\/\/readme.com\/resources\/wp-content\/uploads\/2022\/12\/Helping-Your-Users-Write-Succinct-API-Calls.png","contentUrl":"https:\/\/readme.com\/resources\/wp-content\/uploads\/2022\/12\/Helping-Your-Users-Write-Succinct-API-Calls.png","width":200,"height":200},{"@type":"BreadcrumbList","@id":"https:\/\/readme.com\/resources\/helping-your-users-write-simpler-api-calls-with-api#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/readme.com\/resources\/"},{"@type":"ListItem","position":2,"name":"Helping Your Users Write Succinct API Calls With &#8220;api&#8221; \u270d\ufe0f"}]},{"@type":"WebSite","@id":"https:\/\/readme.com\/resources\/#website","url":"https:\/\/readme.com\/resources\/","name":"ReadMe: Resource Library","description":"Making API documentation better for everyone","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/readme.com\/resources\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/readme.com\/resources\/#\/schema\/person\/5ff0ec37fac9e314594c7a5564ee24ad","name":"Kanad Gupta","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/readme.com\/resources\/#\/schema\/person\/image\/f411bab14c6f25f8d94c6658c39badd3","url":"https:\/\/secure.gravatar.com\/avatar\/e1918540f557e223e19f33cf4db88f78bee3594cbcc066d92c4b609b68123058?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e1918540f557e223e19f33cf4db88f78bee3594cbcc066d92c4b609b68123058?s=96&d=mm&r=g","caption":"Kanad Gupta"},"description":"Joining us remotely from Minneapolis, Kanad forms the newly-minted Minnesota branch of the ReadMe team! We love Minnesota. Kanad just bought a bike and is loving riding around Minneapolis, but he\u2019s less enthused by the whole peddling aspect of it. While biking around MPLS, Kanad is probably listening to Janelle Mon\u00e1e\u2014his Spotify artist of the decade.","url":"https:\/\/readme.com\/resources\/author\/kanad"}]}},"authors":[{"term_id":49,"user_id":6,"is_guest":0,"slug":"kanad","display_name":"Kanad Gupta","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/e1918540f557e223e19f33cf4db88f78bee3594cbcc066d92c4b609b68123058?s=96&d=mm&r=g","first_name":"Kanad","last_name":"Gupta","position":"Developer Advocate & API Engineer","slogan":"Developer Advocate &amp; API Engineer (he\/him)","description":"Joining us remotely from Minneapolis, Kanad forms the newly-minted Minnesota branch of the ReadMe team! We love Minnesota.\r\n\r\nKanad just bought a bike and is loving riding around Minneapolis, but he\u2019s less enthused by the whole peddling aspect of it. While biking around MPLS, Kanad is probably listening to Janelle Mon\u00e1e\u2014his Spotify artist of the decade."}],"_links":{"self":[{"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/posts\/2310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/comments?post=2310"}],"version-history":[{"count":0,"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/posts\/2310\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/media\/2930"}],"wp:attachment":[{"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/media?parent=2310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/categories?post=2310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/tags?post=2310"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/readme.com\/resources\/wp-json\/wp\/v2\/ppma_author?post=2310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}