{"openapi":"3.1.0","info":{"title":"DEV (dev.to) API","version":"1.0.0","description":"The DEV Community (dev.to) as an API, powered by the official open-source Forem platform API. DEV is one of the largest communities of software developers writing and sharing articles, tutorials and discussions. This API gives clean, read-only access to that content. /v1/articles browses and filters published articles — by tag (tag=javascript), by author (username=ben), by most-reacted over a period (top=7 for the best of the last week), or by feed state (fresh, rising) — with pagination; each result carries the title, description, canonical URL, tag list, positive-reaction and comment counts, estimated reading time, cover image and author summary. /v1/article?id=5 returns a single article with its complete Markdown body, canonical URL and author social links — everything needed to render or syndicate the full post. /v1/user?username=ben returns a member's public profile: display name, bio/summary, location, join date, linked Twitter/GitHub/website and avatar. /v1/tags lists the platform's popular tags for discovery. Article ids are numeric and stable, so links don't rot. Ideal for developer-content aggregators and newsletters, reading-list and bookmarking apps, community dashboards, \"trending in tech\" widgets and Discord/Slack bots. Data from the public DEV Forem API, free to use. Content is authored by the DEV community.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/devto-api","description":"oanor gateway"}],"tags":[{"name":"Articles"},{"name":"Users"},{"name":"Tags"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/article":{"get":{"operationId":"get_v1_article","tags":["Articles"],"summary":"A single article with full body","description":"","parameters":[{"name":"id","in":"query","required":true,"description":"Numeric article id, e.g. 5","schema":{"type":"string"},"example":"5"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"article":{"id":5,"url":"https://dev.to/ben/dhh-on-the-future-of-rails","tags":"ruby, rails","user":{"name":"Ben Halpern","github":"benhalpern","twitter":"bendhalpern","username":"ben"},"title":"David Heinemeier Hansson on the Future of Rails","author":{"name":"Ben Halpern","username":"ben"},"comments":2,"reactions":26,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/http%3A%2F%2Fi.imgur.com%2FQb20fNn.jpg","description":"\n\nThe Ruby on Rails framework has had an incredible impact since its creation a d...","published_at":"2016-01-05T15:41:22Z","body_markdown":"<p>The Ruby on Rails framework has had an incredible impact since its creation a decade ago, becoming the choice for some of today's mightiest tech companies. Patterns and concepts popularized by the framework have also had an indelible effect on the application architecture discussion. Rails is an open-source project which depends on innovation and good software design from its core team in order to maintain its direction and status. New paradigms are constantly emerging&nbsp;and Rails has done well to evolve and remain the go-to for many developers.&nbsp;</p>\r\n<p>Rails is an open-source project which depends on innovation and good software design from its core team in order to maintain its direction and status. So much of Rails' direction depends on the views of its opinionated&nbsp;creator&nbsp;and&nbsp;Basecamp CTO&nbsp;<a href=\"https://twitter.com/dhh\">David Heinemeier Hansson</a>. I contacted David in order to glean some insight into the direction of Rails. David shared his vision of the future with Practical Developer.&nbsp;</p>\r\n<h2>A lot has happened since Rails 4.0 was released in summer of 2013, particularly in the Node community. Where does Rails fit in now compared to the past?&nbsp;</h2>\r\n<p>Ruby on Rails has its eyes on the same prize its always had: Be the full-stack framework that makes building applications like Basecamp, Github, Shopify, Kickstarter, Airbnb, Zendesk and others possible and enjoyable for small teams. Programming never stands still, of course. We've seen Node, Elixir, Go, Rust, and all sorts of other languages and frameworks come, and that's wonderful. The more the merrier! The web is an amazing platform exactly because it puts all these approaches on a level playing field when it comes to generating HTML, JavaScript, CSS. On the web nobody knows whether your web server is running Ruby or Go or Node. For me, the projects I make, and the examples I listed above, though, I have yet to see anything that really gives Rails a serious run for its money.</p>\r\n<h2>Turbolinks and API mode make for two very different approaches to developing the view. Are you and your team at Basecamp planning to make use of both of these design patterns? How has your personal position on client-side rendered apps changed over the last few years?</h2>\r\n<p><a href=\"https://github.com/rails/turbolinks\" target=\"_blank\">Turbolinks</a> has really been picking up steam. The early knee-jerk reaction has subsided and lots of people are giving it a second look and really liking what they see. We have a ground-up rewrite in Turbolinks 5 that takes this even further by focusing on integration with native iOS and Android wrappers. It's a big leap forward and its the technology that's enabled us to ship Basecamp 3 with amazing native clients without building huge native teams. I'm really excited to share all this progress and enable more teams to go native where it counts (mainly navigation and some peak UI fidelity areas) and then rely on their Rails app as the integrated system. The beautiful monolith.<br />&nbsp;<br />At the same time, API mode broadens the appeal of Rails to everyone who's rocking the client-side MVC approach as well as 100% native mobile apps. There's no reason that we shouldn't be collaborating on improving Active Record, Action Pack, Action Mailer, Active Job, Action Cable, and all the other frameworks that Rails provides which aren't tied to HTML-view generation. The vast majority of Rails is as relevant to API-only apps as it is to full-stack apps. So making the size of our tent explicit is exciting.</p>\r\n<h2>Could you sum up what you think \"The Rails Way\" represents in 2016?</h2>\r\n<p>I'm actually working on a new mini-book called <em>The Rails Doctrine</em> at the moment that goes over all this in deep detail. But the short story is that the Rails mission is to equip small teams to tackle big projects. We're not here to make things slightly more efficient for the 500-person company, that's just a side effect. The allegiance for Rails is to make it possible for one, two, or a few programmers to create amazing apps that span web, email, mobile, native, API, and all the other platforms we need to cover in 2016. Delivering for the web is getting more complicated every day. There are a thousand vendors and peddlers of complexity who benefit when things get hard and compartmentalized. Rails is here to serve as a counter to that. To retain the beauty and simplicity of building for the web without needing an army of experts.</p>\r\n<h2>How do you think your \"Reconsider\" article affected the general perception of Rails?</h2>\r\n<p>Rails has been counter cultural from day one. Many of the basic tenets, from Convention&nbsp;over Configuration to The menu is Omakase remain deeply controversial. Rails stands for something, which means it's bound to alienate some people who are offended by that. <a href=\"https://signalvnoise.com/posts/3972-reconsider\" target=\"_blank\">RECONSIDER</a>, the blog post I wrote lambasting the San Franciscan economic model, Venture Capital, and wet dreams of <em>total market domination</em>&nbsp;is just a natural continuation of believing in something. I doubt it's going to have much of an impact, really. As far as I can tell, much of the current crop of VC funded tech startups are already flocking to the latest tech buzz. For mostly better, and for scarcely worse, Rails is no longer the latest tech buzz. It's mainstream now, at least in terms of reach (despite the many tenets that continue to be counter cultural). I consider that a very good thing.</p>\r\n<h2>Which other programming&nbsp;trends are piquing your interest?</h2>\r\n<p>The rise of functional programming is wonderful. I've let my programming style inspire heavily by key concepts, without the need to throw out Ruby. Ruby is such a wonderful sponge for the best ideas in programming. It's explicitly not a single-paradigm language, just like Rails isn't a single-paradigm framework. We get to adopt and be inspired by the best ideas from functional programming without the need to give up the best ideas of procedural or objective oriented programming either. May we continue to be influenced in just such ways. The rich history of programming languages from decades past still has much to teach us.</p>","canonical_url":"https://dev.to/ben/dhh-on-the-future-of-rails","reading_minutes":5}},"meta":{"timestamp":"2026-06-01T16:23:46.920Z","request_id":"4b08891f-7b2e-4029-ad89-04ff88175e6d"},"status":"ok","message":"Article retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/articles":{"get":{"operationId":"get_v1_articles","tags":["Articles"],"summary":"Browse & filter articles","description":"","parameters":[{"name":"tag","in":"query","required":false,"description":"Filter by tag, e.g. javascript","schema":{"type":"string"},"example":"javascript"},{"name":"username","in":"query","required":false,"description":"Filter by author","schema":{"type":"string"}},{"name":"top","in":"query","required":false,"description":"Most-reacted over last N days","schema":{"type":"string"}},{"name":"per_page","in":"query","required":false,"description":"Results per page (1-100)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"page":1,"count":20,"articles":[{"id":3793088,"url":"https://dev.to/nandan_das_369/orinide-v107-the-ai-finally-understands-your-whole-project-2nd4","tags":["webdev","javascript","ai","opensource"],"title":"OrinIDE v1.0.7 — The AI Finally Understands Your Whole Project","author":{"name":"Nandan Das","username":"nandan_das_369"},"comments":4,"reactions":11,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcapsule-render.vercel.app%2Fapi%3Ftype%3Dwaving%26color%3D0%3A0B0614%2C50%3A6C2BD9%2C100%3AB45CFF%26height%3D220%26section%3Dheader%26text%3DOrinIDE%2520v1.0.7%26fontSize%3D60%26fontColor%3Dffffff%26fontAlignY%3D40%26fontAlign%3D50%26desc%3DThe%2520AI%2520finally%2520understands%2520your%2520whole%2520project%26descAlignY%3D62%26descSize%3D16%26descColor%3DD6A6FF%26descAlign%3D50","description":"New in OrinIDE: project-wide AI context, surgical edits that don't rewrite your whole file, a skills system, HTML preview in chat, and a free image API. Built on Android with Termux.","published_at":"2026-06-01T06:13:17Z","reading_minutes":5},{"id":3710004,"url":"https://dev.to/accreditly/why-we-replaced-pdf-invoice-attachments-with-inline-png-receipts-1fga","tags":["webdev","php","javascript","tutorial"],"title":"Why we replaced PDF invoice attachments with inline PNG receipts","author":{"name":"Accreditly","username":"accreditly"},"comments":0,"reactions":3,"description":"We used to attach a PDF to every order confirmation email. The PDF was the invoice, generated...","published_at":"2026-06-01T14:04:00Z","reading_minutes":6},{"id":3796293,"url":"https://dev.to/martinhavel/i-built-a-free-browser-only-european-payment-qr-generator-and-an-mcp-server-11k","tags":["showdev","mcp","javascript","opensource"],"title":"I built a free, browser-only European payment QR generator (and an MCP server)","author":{"name":"Martin Havel","username":"martinhavel"},"comments":0,"reactions":0,"description":"Every time I get an invoice or a broker deposit instruction, I do the same dumb, error-prone thing:...","published_at":"2026-06-01T13:41:27Z","reading_minutes":3},{"id":3796814,"url":"https://dev.to/olehvolos/what-is-an-ai-frontend-engineer-49a4","tags":["ai","webdev","programming","javascript"],"title":"What Is an AI Frontend Engineer?","author":{"name":"Oleh Volostnykh","username":"olehvolos"},"comments":0,"reactions":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhpeoxzbomdl2lq2vlhp.png","description":"I changed my LinkedIn title to \"AI Frontend Engineer\".  Then people started asking what it meant....","published_at":"2026-06-01T15:40:35Z","reading_minutes":3},{"id":3796810,"url":"https://dev.to/devlinduldulao/daloyjs-is-the-latest-modern-enterprise-typescript-framework-and-it-has-your-back-on-security-1603","tags":["typescript","javascript","node","express"],"title":"DaloyJS Is the Latest Modern Enterprise TypeScript Framework, and It Has Your Back on Security","author":{"name":"Devlin Duldulao","username":"devlinduldulao"},"comments":0,"reactions":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0w5twhm0mdr58b2bvhw.png","description":"I want to tell you something that took me years to learn, so you can learn it on a Tuesday afternoon...","published_at":"2026-06-01T15:40:01Z","reading_minutes":6},{"id":3796809,"url":"https://dev.to/devlinduldulao/daloyjs-is-the-latest-modern-enterprise-typescript-framework-and-it-has-your-back-on-security-53c2","tags":["typescript","javascript","node","express"],"title":"DaloyJS Is the Latest Modern Enterprise TypeScript Framework, and It Has Your Back on Security","author":{"name":"Devlin Duldulao","username":"devlinduldulao"},"comments":0,"reactions":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0w5twhm0mdr58b2bvhw.png","description":"I want to tell you something that took me years to learn, so you can learn it on a Tuesday afternoon...","published_at":"2026-06-01T15:40:01Z","reading_minutes":6},{"id":3796661,"url":"https://dev.to/devlinduldulao/the-best-nodejs-express-alternative-for-beginners-in-2026-meet-daloyjs-4j1","tags":["typescript","javascript","node","express"],"title":"The Best Node.js Express Alternative for Beginners in 2026: Meet DaloyJS","author":{"name":"Devlin Duldulao","username":"devlinduldulao"},"comments":0,"reactions":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faljpk11q4pvuu2m8vdet.png","description":"If you have searched \"Node.js Express alternative\" recently, you have probably seen the same three...","published_at":"2026-06-01T15:04:08Z","reading_minutes":4},{"id":3796277,"url":"https://dev.to/kushalmeghani1644/running-npm-packages-in-a-sandbox-to-see-what-they-really-do-4ghk","tags":["go","npm","javascript","opensource"],"title":"Running npm Packages in a Sandbox to See What They Really Do","author":{"name":"Kushal_Meghani1644","username":"kushalmeghani1644"},"comments":0,"reactions":0,"description":"In the last few months, npm supply chain attacks have increased a lot, and the only suggestion I kept...","published_at":"2026-06-01T13:34:59Z","reading_minutes":2},{"id":3795925,"url":"https://dev.to/besufikad_hosiso_64c9a77a/i-built-a-developer-learning-app-to-kill-the-restart-loop-2foi","tags":["react","javascript","productivity","webdev"],"title":"I built a developer learning app to kill the restart loop","author":{"name":"Besufikad Hosiso","username":"besufikad_hosiso_64c9a77a"},"comments":0,"reactions":0,"description":"The problem I kept having   I started learning React for the third time last year.  Week one...","published_at":"2026-06-01T12:30:27Z","reading_minutes":2},{"id":3795640,"url":"https://dev.to/keepknow/i-built-a-tool-that-races-you-against-the-marathon-world-record-4n0k","tags":["javascript","showdev","webdev","css"],"title":"I built a tool that races you against the marathon world record","author":{"name":"Dor","username":"keepknow"},"comments":0,"reactions":0,"description":"A small client-side toy: enter one race result and watch your runner race the world-record holder, with the VDOT math and the CSS-variable animation behind it.","published_at":"2026-06-01T11:53:50Z","reading_minutes":2},{"id":3795477,"url":"https://dev.to/soumyadip_maity_2025/i-was-tired-of-sending-my-users-data-to-google-so-i-built-my-own-analytics-2okg","tags":["webdev","opensource","showdev","javascript"],"title":"I Was Tired of Sending My Users' Data to Google — So I Built My Own Analytics","author":{"name":"Soumyadip Maity","username":"soumyadip_maity_2025"},"comments":0,"reactions":0,"description":"I'm a final year CS student. I build things in production.  Last year, I was working on...","published_at":"2026-06-01T11:26:23Z","reading_minutes":4},{"id":3796735,"url":"https://dev.to/memestudio/shippo-lite-a-5-kb-zero-dependency-shippo-client-for-node-the-edge-216h","tags":["javascript","typescript","node","webdev"],"title":"shippo-lite: a 5 KB, zero-dependency Shippo client for Node & the edge","author":{"name":"考岱斯","username":"memestudio"},"comments":0,"reactions":0,"description":"If you've ever wired up shipping in a side project, you know the drill: you just want to quote a...","published_at":"2026-06-01T15:21:16Z","reading_minutes":1},{"id":3795234,"url":"https://dev.to/keepknow/how-race-time-predictors-actually-work-daniels-vdot-vs-riegel-with-the-javascript-55k1","tags":["javascript","math","webdev","running"],"title":"How race time predictors actually work: Daniels VDOT vs Riegel, with the JavaScript","author":{"name":"Dor","username":"keepknow"},"comments":0,"reactions":0,"description":"Two ways to predict a race time from one result, implemented in plain JS: Riegel's power law and the Daniels-Gilbert VDOT physiology model, and why both miss on the marathon.","published_at":"2026-06-01T10:52:20Z","reading_minutes":3},{"id":3786405,"url":"https://dev.to/smirk9581/vue-transition-component-to-react-how-does-vureact-handle-it-3bed","tags":["webdev","javascript","vue","react"],"title":"Vue Transition component to React: How does VuReact handle it?","author":{"name":"Ryan John","username":"smirk9581"},"comments":0,"reactions":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1kny1cq86t78qi4sdxfz.png","description":"VuReact is a compiler toolchain for migrating from Vue to React — and for writing React with Vue 3...","published_at":"2026-06-01T14:30:00Z","reading_minutes":4},{"id":3796565,"url":"https://dev.to/gtausa197svg/we-built-a-fully-client-side-3d-animation-studio-on-nextjs-threejs-wasm-physics-4j19","tags":["ai","webdev","programming","javascript"],"title":"We built a fully client-side 3D Animation Studio on Next.js (Three.js + WASM Physics).","author":{"name":"zerdovzad","username":"gtausa197svg"},"comments":0,"reactions":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4k9hrm8apldskfzidys.jpg","description":"Hey everyone,  My friend and I built AnimaStage because we wanted MMD staging to feel zero-friction...","published_at":"2026-06-01T14:42:43Z","reading_minutes":1},{"id":3775174,"url":"https://dev.to/workflowbuilder/i-built-a-react-circuit-editor-in-a-day-with-workflow-builder-12a0","tags":["javascript","react","webdev","tutorial"],"title":"I built a React circuit editor in a day with Workflow Builder","author":{"name":"Kacper Cierzniewski","username":"peleek"},"comments":0,"reactions":0,"description":"In short   Workflow Builder is generic enough to build non-workflow tools. In one day I...","published_at":"2026-06-01T14:00:00Z","reading_minutes":11},{"id":3796311,"url":"https://dev.to/canghun13/i-built-a-free-insurance-calculator-site-to-rank-on-google-heres-what-3-months-of-data-looks-like-2ld","tags":["webdev","seo","javascript","showdev"],"title":"I built a free insurance calculator site to rank on Google — here's what 3 months of data looks like","author":{"name":"피곤하다","username":"canghun13"},"comments":0,"reactions":0,"description":"I got frustrated with insurance sites that make you hand over your phone number before showing any...","published_at":"2026-06-01T13:43:14Z","reading_minutes":1},{"id":3796294,"url":"https://dev.to/canghun13/i-built-a-free-wellness-calculator-site-with-19-tools-and-33-articles-heres-the-tech-stack-and-1iec","tags":["webdev","javascript","github","beginners"],"title":"I built a free wellness calculator site with 19 tools and 33 articles — here's the tech stack and what I learned","author":{"name":"피곤하다","username":"canghun13"},"comments":0,"reactions":0,"description":"I've been building MyWellnessCalc — a free wellness tool site — for the past few months. No...","published_at":"2026-06-01T13:39:59Z","reading_minutes":2},{"id":3796317,"url":"https://dev.to/canghun13/i-built-a-free-gpa-student-loan-calculator-site-with-pure-htmlcssjs-heres-what-i-learned-eab","tags":["webdev","javascript","seo","showdev"],"title":"I built a free GPA & student loan calculator site with pure HTML/CSS/JS — here's what I learned","author":{"name":"피곤하다","username":"canghun13"},"comments":0,"reactions":0,"description":"I recently launched GPA Vault — a free tool site for US college students with 15 calculators and 16...","published_at":"2026-06-01T13:45:43Z","reading_minutes":2},{"id":3796105,"url":"https://dev.to/zhihu_wu_dea1d82af01a04d7/5-regex-patterns-that-will-save-you-hours-of-debugging-1o1p","tags":["regex","javascript","webdev","tutorial"],"title":"5 Regex Patterns That Will Save You Hours of Debugging","author":{"name":"zhihu wu","username":"zhihu_wu_dea1d82af01a04d7"},"comments":0,"reactions":0,"description":"If you write code, you've been there — staring at a regex that should work but doesn't. Meanwhile,...","published_at":"2026-06-01T13:03:24Z","reading_minutes":2}]},"meta":{"timestamp":"2026-06-01T16:23:47.293Z","request_id":"0b9bfe76-957e-4dcc-a4f2-83b4cf722b91"},"status":"ok","message":"Articles retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/user":{"get":{"operationId":"get_v1_user","tags":["Users"],"summary":"A user public profile","description":"","parameters":[{"name":"username","in":"query","required":true,"description":"DEV username, e.g. ben","schema":{"type":"string"},"example":"ben"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"user":{"name":"Ben Halpern","github":"benhalpern","summary":"A Canadian software developer who thinks he’s funny.","twitter":"bendhalpern","website":"http://benhalpern.com","location":"NY","username":"ben","joined_at":"Dec 27, 2015","profile_image":"https://media2.dev.to/dynamic/image/width=320,height=320,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1%2Fbabb96d0-9cd2-49bc-a412-2dc4caf94c2a.png"}},"meta":{"timestamp":"2026-06-01T16:23:47.822Z","request_id":"453342a4-137f-400b-a4cc-b1e6f51eab8b"},"status":"ok","message":"User retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/tags":{"get":{"operationId":"get_v1_tags","tags":["Tags"],"summary":"Popular tags","description":"","parameters":[{"name":"per_page","in":"query","required":false,"description":"Results (1-100)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"tags":[{"id":8,"name":"webdev"},{"id":33,"name":"programming"},{"id":307,"name":"ai"},{"id":6,"name":"javascript"},{"id":555,"name":"beginners"},{"id":112,"name":"productivity"},{"id":297,"name":"tutorial"},{"id":25,"name":"python"},{"id":125,"name":"react"},{"id":168,"name":"devops"},{"id":228,"name":"opensource"},{"id":630,"name":"career"},{"id":3371,"name":"archlinux"},{"id":715,"name":"discuss"},{"id":650,"name":"blockchain"},{"id":56,"name":"security"},{"id":24,"name":"java"},{"id":397,"name":"aws"},{"id":44,"name":"news"},{"id":15,"name":"node"}],"count":20},"meta":{"timestamp":"2026-06-01T16:23:47.890Z","request_id":"179639ab-904e-4130-8e2e-842ce1357bfc"},"status":"ok","message":"Tags retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Usage notes","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"DEV (dev.to) is one of the largest developer-writing communities, built on the open-source Forem platform. /v1/articles = browse published articles, filter by tag (tag=javascript), by author (username=ben), by most-reacted over a period (top=7 for the last 7 days), or by state (fresh/rising), with pagination — each result carries title, description, canonical url, tags, reaction and comment counts, reading time, cover image and author; /v1/article?id=5 = a single article with its full markdown body and author links; /v1/user?username=ben = a user's public profile (name, bio, location, joined date, social links, avatar); /v1/tags = popular tags on the platform. Article ids are numeric and stable. Data from the DEV Forem API (public, free). Ideal for developer-content aggregators, reading lists, dashboards, newsletters and bots.","source":"DEV (dev.to) — Forem API (dev.to/api)","endpoints":["/v1/articles","/v1/article","/v1/user","/v1/tags","/v1/meta"]},"meta":{"timestamp":"2026-06-01T16:23:47.971Z","request_id":"f69d520c-0986-4f44-8efd-b48e8f02a115"},"status":"ok","message":"Meta retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":2500,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":600,"monthly_call_quota":50000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2000,"monthly_call_quota":220000,"rps_limit":12,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5500,"monthly_call_quota":800000,"rps_limit":35,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/devto-api"}