CINXE.COM
Adrian Machado - DEV Community
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Adrian Machado - DEV Community</title> <meta name="last-updated" content="2025-04-08 00:19:09 UTC"> <meta name="user-signed-in" content="false"> <meta name="head-cached-at" content="1744071549"> <meta name="environment" content="production"> <link rel="stylesheet" href="https://assets.dev.to/assets/minimal-6f5c5ed9c571b36ab9c316526d7032b5a4c789f3a4c35503492eb03376615fca.css" media="all" id="main-minimal-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/views-1c703342dce6eac414f19ca7fd07bcf83cbe44088659758144e52e7fa1e92dd3.css" media="all" id="main-views-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/crayons-0f2fc85bc159498f8ae6fba58c460e6deba863d02d59dfa994c1954976ddb6cc.css" media="all" id="main-crayons-stylesheet" /> <script src="https://assets.dev.to/assets/base-b8bdff515245fe895f3035d77697afb35d5d7e114bdf68291667479d4b289751.js" defer="defer"></script> <script src="https://assets.dev.to/assets/application-7258612fccf5d56314a6e4ad1898b4f818f474c4bb3485e302428d489a769a17.js" defer="defer"></script> <script src="https://assets.dev.to/assets/baseInitializers-b74902d56433062a87f5f1ce74769baf2a1a698772f46952b0ac72bc95c4abfd.js" defer="defer"></script> <script src="https://assets.dev.to/assets/baseTracking-b6bf73e5ee66633e151e7d5b7c6bbccedfa4c59e3615be97b98c4c0f543ddae7.js" defer="defer"></script> <meta name="search-script" content="https://assets.dev.to/assets/Search-7dcdad3172ab4501a4598fe8b716c7a88146e79fd42256d36fb1b83e27bf77cf.js"> <link rel="canonical" href="https://dev.to/adrian_zuplo" /> <meta name="description" content="Staff Eng at Zuplo"> <meta name="keywords" content="software development, engineering, rails, javascript, ruby"> <meta property="og:type" content="website" /> <meta property="og:url" content="https://dev.to/adrian_zuplo" /> <meta property="og:title" content="Adrian Machado — DEV Community Profile" /> <meta property="og:image" content="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg" /> <meta property="og:description" content="Staff Eng at Zuplo" /> <meta property="og:site_name" content="DEV Community" /> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@thepracticaldev"> <meta name="twitter:creator" content="@"> <meta name="twitter:title" content="Adrian Machado — DEV Community Profile"> <meta name="twitter:description" content="Staff Eng at Zuplo"> <meta name="twitter:image:src" content="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg" /> <link rel="alternate" type="application/rss+xml" title="DEV Community RSS Feed" href="https://dev.to/feed/adrian_zuplo" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <link rel="icon" type="image/x-icon" href="https://media2.dev.to/dynamic/image/width=32,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" /> <link rel="apple-touch-icon" href="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="152x152" href="https://media2.dev.to/dynamic/image/width=152,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="180x180" href="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="167x167" href="https://media2.dev.to/dynamic/image/width=167,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link href="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" rel="icon" sizes="192x192" /> <link href="https://media2.dev.to/dynamic/image/width=128,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" rel="icon" sizes="128x128" /> <meta name="apple-mobile-web-app-title" content="dev.to"> <meta name="application-name" content="dev.to"> <meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"> <meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)"> <link rel="search" href="https://dev.to/open-search.xml" type="application/opensearchdescription+xml" title="DEV Community" /> <meta property="forem:name" content="DEV Community" /> <meta property="forem:logo" content="https://media2.dev.to/dynamic/image/width=512,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" /> <meta property="forem:domain" content="dev.to" /> </head> <body class="sans-serif-article-body default-header" data-user-status="logged-out" data-community-name="DEV Community" data-subscription-icon="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" data-locale="en" data-honeybadger-key="hbp_nqu4Y66HuEKlD6YRGssZuRQnPOjDm50J8Zkr" data-deployed-at="2025-04-07T20:36:49Z" data-latest-commit-id="64b51b416494e2398dbb49482c2354f1ebbbd896" data-ga-tracking="UA-71991109-1" data-cookie-banner-user-context="logged_out_only" data-cookie-banner-platform-context="off" data-algolia-id="PRSOBFP46H" data-algolia-search-key="9aa7d31610cba78851c9b1f63776a9dd" data-algolia-display="true" data-dynamic-url-component="bmar11" data-ga4-tracking-id="G-TYEM8Y3JN3"> <script> if (navigator.userAgent === 'ForemWebView/1' || window.frameElement) { document.body.classList.add("hidden-shell"); } </script> <link rel="stylesheet" href="https://assets.dev.to/assets/minimal-6f5c5ed9c571b36ab9c316526d7032b5a4c789f3a4c35503492eb03376615fca.css" media="all" id="secondary-minimal-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/views-1c703342dce6eac414f19ca7fd07bcf83cbe44088659758144e52e7fa1e92dd3.css" media="all" id="secondary-views-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/crayons-0f2fc85bc159498f8ae6fba58c460e6deba863d02d59dfa994c1954976ddb6cc.css" media="all" id="secondary-crayons-stylesheet" /> <div id="body-styles"> <style> :root { --accent-brand-lighter-rgb: 80, 99, 301; --accent-brand-rgb: 59, 73, 223; --accent-brand-darker-rgb: 47, 58, 178; } </style> </div> <div id="audiocontent" data-podcast=""> </div> <div class="navigation-progress" id="navigation-progress"></div> <header id="topbar" class="crayons-header topbar print-hidden"> <span id="route-change-target" tabindex="-1"></span> <a href="#main-content" class="skip-content-link">Skip to content</a> <div class="crayons-header__container"> <span class="inline-block m:hidden "> <button class="c-btn c-btn--icon-alone js-hamburger-trigger mx-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="arfenfol6e21jv732164lau6n8uv20j8" class="crayons-icon"><title id="arfenfol6e21jv732164lau6n8uv20j8">Navigation menu</title> <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"></path> </svg> </button> </span> <a href="/" class="site-logo" aria-label="DEV Community Home"> <img class="site-logo__img" src="https://media2.dev.to/dynamic/image/quality=100/https://dev-to-uploads.s3.amazonaws.com/uploads/logos/resized_logo_UQww2soKuUsjaOGNB38o.png" style="aspect-ratio: 10 / 8" alt="DEV Community"> </a> <div class="crayons-header--search js-search-form" id="header-search"> <form accept-charset="UTF-8" method="get" action="/search" role="search"> <div class="crayons-fields crayons-fields--horizontal"> <div class="crayons-field flex-1 relative"> <input id="search-input" class="crayons-header--search-input crayons-textfield js-search-input" type="text" id="nav-search" name="q" placeholder="Search..." autocomplete="off" /> <button type="submit" aria-label="Search" class="c-btn c-btn--icon-alone absolute inset-px right-auto mt-0 py-0"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="aj6qojpb3kzkibsvn3nji982vot19xyz" aria-hidden="true" class="crayons-icon"><title id="aj6qojpb3kzkibsvn3nji982vot19xyz">Search</title> <path d="M18.031 16.617l4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0111 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 01-1.969 5.617zm-2.006-.742A6.977 6.977 0 0018 11c0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7a6.977 6.977 0 004.875-1.975l.15-.15z"></path> </svg> </button> <a class="crayons-header--search-brand-indicator" href="https://www.algolia.com/developers/?utm_source=devto&utm_medium=referral" target="_blank" rel="noopener noreferrer"> Powered by <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" width="24" height="24" viewBox="0 0 500 500.34" role="img" aria-labelledby="ad1781675svj6zqmki7omxfq5xl2mycx" aria-hidden="true" class="crayons-icon"><title id="ad1781675svj6zqmki7omxfq5xl2mycx">Search</title> <defs></defs><path class="cls-1" d="M250,0C113.38,0,2,110.16,.03,246.32c-2,138.29,110.19,252.87,248.49,253.67,42.71,.25,83.85-10.2,120.38-30.05,3.56-1.93,4.11-6.83,1.08-9.52l-23.39-20.74c-4.75-4.22-11.52-5.41-17.37-2.92-25.5,10.85-53.21,16.39-81.76,16.04-111.75-1.37-202.04-94.35-200.26-206.1,1.76-110.33,92.06-199.55,202.8-199.55h202.83V407.68l-115.08-102.25c-3.72-3.31-9.43-2.66-12.43,1.31-18.47,24.46-48.56,39.67-81.98,37.36-46.36-3.2-83.92-40.52-87.4-86.86-4.15-55.28,39.65-101.58,94.07-101.58,49.21,0,89.74,37.88,93.97,86.01,.38,4.28,2.31,8.28,5.53,11.13l29.97,26.57c3.4,3.01,8.8,1.17,9.63-3.3,2.16-11.55,2.92-23.6,2.07-35.95-4.83-70.39-61.84-127.01-132.26-131.35-80.73-4.98-148.23,58.18-150.37,137.35-2.09,77.15,61.12,143.66,138.28,145.36,32.21,.71,62.07-9.42,86.2-26.97l150.36,133.29c6.45,5.71,16.62,1.14,16.62-7.48V9.49C500,4.25,495.75,0,490.51,0H250Z"></path> </svg> Algolia </a> </div> </div> </form> </div> <div class="flex items-center h-100 ml-auto"> <div class="flex" id="authentication-top-nav-actions"> <span class="hidden m:block"> <a href="https://dev.to/enter" class="c-link c-link--block mr-2 whitespace-nowrap ml-auto" data-no-instant> Log in </a> </span> <a href="https://dev.to/enter?state=new-user" data-tracking-id="ca_top_nav" data-tracking-source="top_navbar" class="c-cta c-cta--branded whitespace-nowrap mr-2" data-no-instant> Create account </a> </div> </div> </div> </header> <div class="hamburger"> <div class="hamburger__content"> <header class="hamburger__content__header"> <h2 class="fs-l fw-bold flex-1 break-word lh-tight">DEV Community</h2> <button class="c-btn c-btn--icon-alone js-hamburger-trigger shrink-0" aria-label="Close"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="a174vrh3m3p4ep019tkn63bc4gl9299z" aria-hidden="true" class="crayons-icon c-btn__icon"><title id="a174vrh3m3p4ep019tkn63bc4gl9299z">Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </button> </header> <div class="p-2 js-navigation-links-container" id="authentication-hamburger-actions"> </div> </div> <div class="hamburger__overlay js-hamburger-trigger"></div> </div> <div id="active-broadcast" class="broadcast-wrapper"></div> <div id="page-content" class="wrapper stories stories-index" data-current-page="stories-index"> <div id="page-content-inner" data-internal-nav="false"> <div id="page-route-change" class="screen-reader-only" aria-live="polite" aria-atomic="true"></div> <main id="main-content"> <script type="application/ld+json"> {"@context":"http://schema.org","@type":"Person","mainEntityOfPage":{"@type":"WebPage","@id":"https://dev.to/adrian_zuplo"},"url":"https://dev.to/adrian_zuplo","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%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg","name":"Adrian Machado","description":"Staff Eng at Zuplo"} </script> <style> :root { --profile-brand-color: #da18da; } </style> <div class="brand-bg"> <div class="crayons-layout crayons-layout--limited-l pt-7 m:pt-9"> <header class="profile-header crayons-card mt-2"> <div class="relative profile-header__top"> <span class="crayons-avatar crayons-avatar--3xl"> <img src="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%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" width="128" height="128" alt="Adrian Machado profile picture" class="crayons-avatar__image"> </span> <div class="profile-header__actions"> <button id="user-follow-butt" class="crayons-btn whitespace-nowrap follow-action-button follow-user" data-info='{"id":2222056,"className":"User","name":"Adrian Machado"}'>Follow</button> <div class="profile-dropdown ml-2 s:relative hide-if-belongs-to-current-user-2222056" data-username="adrian_zuplo"> <button id="user-profile-dropdown" aria-expanded="false" aria-controls="user-profile-dropdownmenu" aria-haspopup="true" class="crayons-btn crayons-btn--ghost-dimmed crayons-btn--icon"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ajw1ado9mwcp7m4x8nwdwkr2u7sx0xpv" class="crayons-icon dropdown-icon"><title id="ajw1ado9mwcp7m4x8nwdwkr2u7sx0xpv">User actions</title><path fill-rule="evenodd" clip-rule="evenodd" d="M7 12a2 2 0 11-4 0 2 2 0 014 0zm7 0a2 2 0 11-4 0 2 2 0 014 0zm5 2a2 2 0 100-4 2 2 0 000 4z"></path></svg> </button> <div id="user-profile-dropdownmenu" class="crayons-dropdown left-2 right-2 s:right-0 s:left-auto top-100 mt-1"> <span class="report-abuse-link-wrapper" data-path="/report-abuse?url=https://dev.to/adrian_zuplo"></span> </div> </div> </div> </div> <div class="profile-header__details" data-url="/users/2222056"> <div class="items-center js-username-container mb-2"> <h1 class="crayons-title lh-tight"> Adrian Machado <span class="ml-2"></span> </h1> </div> <p class="fs-base profile-header__bio m:fs-l color-base-90 mb-4 mx-auto max-w-100 m:max-w-75">Staff Eng at Zuplo</p> <div class="profile-header__meta"> <span class="profile-header__meta__item"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="a2a9at24wxbf7tiy2i294v63ezfr41i6" class="crayons-icon mr-2 shrink-0"><title id="a2a9at24wxbf7tiy2i294v63ezfr41i6">Location</title> <path d="M18.364 17.364L12 23.728l-6.364-6.364a9 9 0 1112.728 0zM12 13a2 2 0 100-4 2 2 0 000 4z"></path> </svg> <span> Oakland, California </span> </span> <span class="profile-header__meta__item"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="aeb7o2y34b9zjtn1e5tcavz63da48kjm" class="crayons-icon mr-2 shrink-0"><title id="aeb7o2y34b9zjtn1e5tcavz63da48kjm">Joined</title> <path d="M8 6v3.999h3V6h2v3.999h3V6h2v3.999L19 10a3 3 0 012.995 2.824L22 13v1c0 1.014-.377 1.94-.999 2.645L21 21a1 1 0 01-1 1H4a1 1 0 01-1-1v-4.36a4.025 4.025 0 01-.972-2.182l-.022-.253L2 14v-1a3 3 0 012.824-2.995L5 10l1-.001V6h2zm11 6H5a1 1 0 00-.993.883L4 13v.971l.003.147a2 2 0 003.303 1.4c.363-.312.602-.744.674-1.218l.015-.153.005-.176c.036-1.248 1.827-1.293 1.989-.134l.01.134.004.147a2 2 0 003.992.031l.012-.282c.124-1.156 1.862-1.156 1.986 0l.012.282a2 2 0 003.99 0L20 14v-1a1 1 0 00-.883-.993L19 12zM7 1c1.32.871 1.663 2.088 1.449 2.888a1.5 1.5 0 11-2.898-.776C5.85 2.002 7 2.5 7 1zm5 0c1.32.871 1.663 2.088 1.449 2.888a1.5 1.5 0 01-2.898-.776C10.85 2.002 12 2.5 12 1zm5 0c1.32.871 1.663 2.088 1.449 2.888a1.5 1.5 0 01-2.898-.776C15.85 2.002 17 2.5 17 1z"></path> </svg> <span> Joined on <time datetime="2024-10-16T20:05:17Z" class="date">Oct 16, 2024</time> </span> </span> </div> </div> <div class="profile-header__bottom fs-base"> <div class="crayons-definition"> <strong class="crayons-definition__title"> <p>Work</p> </strong> <p class="crayons-definition__value"> <p>Staff Eng at Zuplo</p> </p> </div> </div> <div class="p-3 block m:hidden js-user-info-trigger-wrapper"> <button type="button" class="my-3 crayons-btn crayons-btn--outlined w-100 js-user-info-trigger">More info about @adrian_zuplo</button> </div> </header> </div> </div> <div class="crayons-layout crayons-layout--limited-l crayons-layout--2-cols crayons-layout--2-cols--1-2 pt-4 m:pt-0" id="index-container" data-params="{"user_id":2222056,"class_name":"Article","sort_by":"published_at","sort_direction":"desc"}" data-which="articles" data-tag="" data-feed="base-feed" data-articles-since="0"> <div class="crayons-layout__sidebar-left crayons-layout__content"> <div class="m:gap-4 hidden m:grid js-user-info"> <div class="crayons-card crayons-card--secondary"> <header class="crayons-card__header"> <h3 class="crayons-subtitle-3">Badges</h3> </header> <div class="crayons-card__body"> <div class="grid gap-4 grid-cols-3 s:grid-cols-4 m:grid-cols-2 align-center items-center js-profile-badges"> <div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-160', overlay: true})" title="1 Week Community Wellness Streak" class="js-profile-badge relative"> <img src="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F160%2FCommunity_Wellness_Streak_Badge-01.png" alt="1 Week Community Wellness Streak" class="mx-auto w-75 h-auto align-middle" style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1; max-width: 80px;" loading="lazy" /> </div> <div id="badge-160" class="hidden"> <div class="badge_details"> <div class="badge-image-container p-3"> <img class="badge-image" src="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F160%2FCommunity_Wellness_Streak_Badge-01.png" alt="1 Week Community Wellness Streak badge" title="1 Week Community Wellness Streak" loading="lazy" /> </div> <div class="badge_text_content"> <h4 class="title fw-800 fs-l">1 Week Community Wellness Streak</h4> <p class="description">For actively engaging with the community by posting at least 2 comments in a single week.</p> <button class="got-it-btn items-start c-btn c-btn--primary" onclick="window.Forem.closeModal()">Got it</button> </div> <div class="close" onclick="window.Forem.closeModal()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" class="close_icon"><title>Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </div> </div> </div> <div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-280', overlay: true})" title="Writing Debut" class="js-profile-badge relative"> <img src="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F280%2FWriting_Streak_Badges-05.png" alt="Writing Debut" class="mx-auto w-75 h-auto align-middle" style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1; max-width: 80px;" loading="lazy" /> </div> <div id="badge-280" class="hidden"> <div class="badge_details"> <div class="badge-image-container p-3"> <img class="badge-image" src="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F280%2FWriting_Streak_Badges-05.png" alt="Writing Debut badge" title="Writing Debut" loading="lazy" /> </div> <div class="badge_text_content"> <h4 class="title fw-800 fs-l">Writing Debut</h4> <p class="description">Awarded for writing and sharing your first DEV post! Continue sharing your work to earn the 4 Week Writing Streak Badge.</p> <button class="got-it-btn items-start c-btn c-btn--primary" onclick="window.Forem.closeModal()">Got it</button> </div> <div class="close" onclick="window.Forem.closeModal()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" class="close_icon"><title>Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </div> </div> </div> </div> </div> </div> <div class="crayons-card crayons-card--secondary crayons-layout__content"> <header class="crayons-card__header"> <h3 class="crayons-subtitle-3 spec-org-titles">Organizations</h3> </header> <div> <a href="/zuplo" class="flex items-center crayons-link crayons-link--contentful"> <span class="crayons-logo crayons-logo--l mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" alt="Zuplo profile image" class="crayons-logo__image" loading="lazy" /> </span> <h4 class="fs-base fw-medium">Zuplo</h4> </a> </div> </div> <div class="crayons-card crayons-card--secondary"> <header class="crayons-card__header"> <h3 class="crayons-subtitle-3"> <p>Available for</p> </h3> </header> <div class="crayons-card__body"> <p>Anything API</p> </div> </div> <div class="crayons-card crayons-card--secondary p-4"> <div class="flex items-center mb-4"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="ae5bt1tpayetmlvst6v05vr8u57tql5b" class="crayons-icon mr-3 color-base-50"><title id="ae5bt1tpayetmlvst6v05vr8u57tql5b">Post</title> <path d="M19 22H5a3 3 0 01-3-3V3a1 1 0 011-1h14a1 1 0 011 1v12h4v4a3 3 0 01-3 3zm-1-5v2a1 1 0 002 0v-2h-2zm-2 3V4H4v15a1 1 0 001 1h11zM6 7h8v2H6V7zm0 4h8v2H6v-2zm0 4h5v2H6v-2z"></path> </svg> 195 posts published </div> <div class="flex items-center mb-4"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="atithv6aq22w1oxm2lrdb792pe02s5sv" class="crayons-icon mr-3 color-base-50"><title id="atithv6aq22w1oxm2lrdb792pe02s5sv">Comment</title> <path d="M10 3h4a8 8 0 010 16v3.5c-5-2-12-5-12-11.5a8 8 0 018-8zm2 14h2a6 6 0 000-12h-4a6 6 0 00-6 6c0 3.61 2.462 5.966 8 8.48V17z"></path> </svg> 6 comments written </div> <div class="flex items-center"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="afdd1jbjzt7wkpf05jriuypjm9yoqaw3" class="crayons-icon mr-3 color-base-50"><title id="afdd1jbjzt7wkpf05jriuypjm9yoqaw3">Tag</title> <path d="M7.784 14l.42-4H4V8h4.415l.525-5h2.011l-.525 5h3.989l.525-5h2.011l-.525 5H20v2h-3.784l-.42 4H20v2h-4.415l-.525 5h-2.011l.525-5H9.585l-.525 5H7.049l.525-5H4v-2h3.784zm2.011 0h3.99l.42-4h-3.99l-.42 4z"></path> </svg> 0 tags followed </div> </div> </div> </div> <main class="crayons-layout__content articles-list" id="articles-list"> <div class="substories" id="substories"> <div class="crayons-story " data-feed-content-id="2389873" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/flask-api-tutorial-build-document-and-secure-a-rest-api-4bg7" aria-labelledby="article-link-2389873" class="crayons-story__hidden-navigation-link">Flask API Tutorial: Build, Document, and Secure a REST API</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389873" aria-controls="story-author-preview-content-2389873" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389873" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/flask-api-tutorial-build-document-and-secure-a-rest-api-4bg7" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:04:54Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070694"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/flask-api-tutorial-build-document-and-secure-a-rest-api-4bg7" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-29-flask-api-tutorial%2Fimage.png" id="article-link-2389873"> Flask API Tutorial: Build, Document, and Secure a REST API </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(30, 56, 187, 0.10); --tag-prefix: #1E38BB; --tag-bg-hover: rgba(30, 56, 187, 0.10); --tag-prefix-hover: #1E38BB; " href="/t/python"><span class="crayons-tag__prefix">#</span>python</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(193, 216, 47, 0.10); --tag-prefix: #c1d82f; --tag-bg-hover: rgba(193, 216, 47, 0.10); --tag-prefix-hover: #c1d82f; " href="/t/tooling"><span class="crayons-tag__prefix">#</span>tooling</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(254, 255, 165, 0.10); --tag-prefix: #FEFFA5; --tag-bg-hover: rgba(254, 255, 165, 0.10); --tag-prefix-hover: #FEFFA5; " href="/t/tutorial"><span class="crayons-tag__prefix">#</span>tutorial</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/flask-api-tutorial-build-document-and-secure-a-rest-api-4bg7#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Flask API Tutorial: Build, Document, and Secure a REST API"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a56qwrxgeqinnn5sgg4y5k12see48p96" class="crayons-icon"><title id="a56qwrxgeqinnn5sgg4y5k12see48p96">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div id="comments-locked-cta" class="crayons-card mt-2 m:mt-0 mb-2 m:p-8 p-4"> <div class="align-center"> <svg xmlns="http://www.w3.org/2000/svg" width="132" height="102" viewBox="0 0 132 102" fill="none" aria-hidden="true"> <g filter="url(#a)"> <rect y="6" width="128" height="92" rx="8" fill="url(#b)"></rect> <rect x=".5" y="6.5" width="127" height="91" rx="7.5" stroke="#171717"></rect> </g> <path d="M.5 14A7.5 7.5 0 0 1 8 6.5h112a7.5 7.5 0 0 1 7.5 7.5v11.5H.5V14Z" fill="url(#c)" stroke="#171717"></path> <path opacity=".2" d="M13 63h27v2H13v-2ZM13 70h21v2H13v-2ZM13 77h28v2H13v-2ZM13 84h24v2H13v-2Z" fill="#171717"></path> <g filter="url(#d)"> <circle cx="64" cy="24" r="24" fill="url(#e)"></circle> <circle cx="64" cy="24" r="23.571" stroke="#171717" stroke-width=".857"></circle> </g> <circle cx="64" cy="16.286" r="5.571" fill="url(#f)" stroke="#171717" stroke-width=".857"></circle> <path d="M75.571 33.03c0 1.32-.535 2.285-1.373 3.008-.854.736-2.033 1.23-3.306 1.552-2.545.645-5.319.569-6.174.525a5.576 5.576 0 0 0-.579 0c-.855.044-3.629.12-6.174-.525-1.273-.322-2.452-.816-3.305-1.552-.84-.723-1.374-1.688-1.374-3.009 0-3.077 1.237-5.424 3.228-7.012 2-1.596 4.792-2.446 7.915-2.446 3.122 0 5.913.85 7.915 2.446 1.99 1.588 3.227 3.936 3.227 7.012Z" fill="url(#g)" stroke="#171717" stroke-width=".857"></path> <path d="M49.5 64a3.5 3.5 0 0 1 3.5-3.5h64a3.5 3.5 0 0 1 3.5 3.5v33.5h-71V64Z" fill="url(#h)" stroke="#171717"></path> <circle cx="59" cy="72" r="3.5" fill="#A7F3D0" stroke="#171717"></circle> <path fill="#171717" d="M66 71h20v2H66z"></path> <path opacity=".2" d="M66 80h30v2H66v-2ZM66 87h44v2H66v-2Z" fill="#171717"></path> <defs> <linearGradient id="b" x1="64" y1="6" x2="64" y2="98" gradientUnits="userSpaceOnUse"> <stop offset=".736" stop-color="#fff"></stop> <stop offset="1" stop-color="#D7D7D7"></stop> </linearGradient> <linearGradient id="c" x1="64" y1="6" x2="64" y2="98" gradientUnits="userSpaceOnUse"> <stop offset=".736" stop-color="#fff"></stop> <stop offset="1" stop-color="#D7D7D7"></stop> </linearGradient> <linearGradient id="e" x1="64" y1="0" x2="64" y2="48" gradientUnits="userSpaceOnUse"> <stop stop-color="#FFE89E"></stop> <stop offset="1" stop-color="#FFC50A"></stop> </linearGradient> <linearGradient id="f" x1="64" y1="10.286" x2="64" y2="23.623" gradientUnits="userSpaceOnUse"> <stop offset=".292" stop-color="#fff"></stop> <stop offset="1" stop-color="#E7E7E7"></stop> </linearGradient> <linearGradient id="g" x1="64.429" y1="23.143" x2="64.429" y2="40.291" gradientUnits="userSpaceOnUse"> <stop offset=".292" stop-color="#fff"></stop> <stop offset="1" stop-color="#E7E7E7"></stop> </linearGradient> <linearGradient id="h" x1="85" y1="52" x2="85" y2="114" gradientUnits="userSpaceOnUse"> <stop offset=".292" stop-color="#fff"></stop> <stop offset="1" stop-color="#E7E7E7"></stop> </linearGradient> <filter id="a" x="0" y="6" width="132" height="96" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood> <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"></feColorMatrix> <feOffset dx="4" dy="4"></feOffset> <feComposite in2="hardAlpha" operator="out"></feComposite> <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"></feColorMatrix> <feBlend in2="BackgroundImageFix" result="effect1_dropShadow_811_2367"></feBlend> <feBlend in="SourceGraphic" in2="effect1_dropShadow_811_2367" result="shape"></feBlend> </filter> <filter id="d" x="40" y="0" width="51.429" height="51.429" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood> <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"></feColorMatrix> <feOffset dx="3.429" dy="3.429"></feOffset> <feComposite in2="hardAlpha" operator="out"></feComposite> <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"></feColorMatrix> <feBlend in2="BackgroundImageFix" result="effect1_dropShadow_811_2367"></feBlend> <feBlend in="SourceGraphic" in2="effect1_dropShadow_811_2367" result="shape"></feBlend> </filter> </defs> </svg> </div> <h3 class="crayons-subtitle-3 mt-5 fs-l align-center"> Want to connect with Adrian Machado? </h3> <p class="align-center mt-1 color-base-60 fs-base"> Create an account to connect with Adrian Machado. You can also sign in below to proceed if you already have an account. </p> <div class="align-center mt-4"> <a href="/enter?state=new-user" class="crayons-btn crayons-btn--l w-75" data-tracking-id="ca_profile_comment_section_locked" data-tracking-source="comments_locked_cta" data-no-instant> Create Account </a> </div> <div class="align-center mt-4"> <span> Already have an account? <a href="/enter" data-tracking-id="si_profile_comment_section_locked" data-tracking-source="comments_locked_cta"> Sign in </a> </span> </div> </div> <div class="crayons-story " data-feed-content-id="2389872" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/automated-documentation-for-apis-5c4g" aria-labelledby="article-link-2389872" class="crayons-story__hidden-navigation-link">Automated Documentation for APIs</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389872" aria-controls="story-author-preview-content-2389872" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389872" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/automated-documentation-for-apis-5c4g" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:04:37Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070677"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/automated-documentation-for-apis-5c4g" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-29-automated-documentation-for-apis%2Fimage.png" id="article-link-2389872"> Automated Documentation for APIs </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(193, 216, 47, 0.10); --tag-prefix: #c1d82f; --tag-bg-hover: rgba(193, 216, 47, 0.10); --tag-prefix-hover: #c1d82f; " href="/t/tooling"><span class="crayons-tag__prefix">#</span>tooling</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(254, 255, 165, 0.10); --tag-prefix: #FEFFA5; --tag-bg-hover: rgba(254, 255, 165, 0.10); --tag-prefix-hover: #FEFFA5; " href="/t/tutorial"><span class="crayons-tag__prefix">#</span>tutorial</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/automated-documentation-for-apis-5c4g#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Automated Documentation for APIs"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a96nkkuemckbsw972uzeegmxplh1tz32" class="crayons-icon"><title id="a96nkkuemckbsw972uzeegmxplh1tz32">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 5 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2389870" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/perplexity-api-ultimate-guide-297k" aria-labelledby="article-link-2389870" class="crayons-story__hidden-navigation-link">Perplexity API Ultimate Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389870" aria-controls="story-author-preview-content-2389870" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389870" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/perplexity-api-ultimate-guide-297k" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:04:21Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070661"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/perplexity-api-ultimate-guide-297k" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-28-perplexity-api%2FPerplexity-logo-feature-image.png" id="article-link-2389870"> Perplexity API Ultimate Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/perplexity-api-ultimate-guide-297k#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Perplexity API Ultimate Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ar5q10u6bpqavjlum0q6cwgn43tb1g60" class="crayons-icon"><title id="ar5q10u6bpqavjlum0q6cwgn43tb1g60">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 9 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2389869" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/optimize-api-upgrades-with-these-versioning-techniques-1h49" aria-labelledby="article-link-2389869" class="crayons-story__hidden-navigation-link">Optimize API Upgrades With These Versioning Techniques</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389869" aria-controls="story-author-preview-content-2389869" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389869" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/optimize-api-upgrades-with-these-versioning-techniques-1h49" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:04:04Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070644"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/optimize-api-upgrades-with-these-versioning-techniques-1h49" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-28-optimizing-api-updates-with-versioning-techniques%2Fcropped-API%2520Versioning%2520feature%2520image.png" id="article-link-2389869"> Optimize API Upgrades With These Versioning Techniques </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/optimize-api-upgrades-with-these-versioning-techniques-1h49#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Optimize API Upgrades With These Versioning Techniques"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="acifeac23liez54hr1bugby8v1op75u7" class="crayons-icon"><title id="acifeac23liez54hr1bugby8v1op75u7">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 14 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2389868" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/how-to-detect-api-traffic-anomalies-in-real-time-144l" aria-labelledby="article-link-2389868" class="crayons-story__hidden-navigation-link">How to Detect API Traffic Anomalies in Real-Time</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389868" aria-controls="story-author-preview-content-2389868" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389868" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/how-to-detect-api-traffic-anomalies-in-real-time-144l" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:03:47Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070627"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/how-to-detect-api-traffic-anomalies-in-real-time-144l" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-28-how-to-detect-api-traffic-anomolies-in-real-time%2Fcropped-API%2520traffic%2520anomalies%2520feature%2520image.png" id="article-link-2389868"> How to Detect API Traffic Anomalies in Real-Time </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/how-to-detect-api-traffic-anomalies-in-real-time-144l#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How to Detect API Traffic Anomalies in Real-Time"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aei9w7rg2deqts3uut0ikaqs5uzx5yem" class="crayons-icon"><title id="aei9w7rg2deqts3uut0ikaqs5uzx5yem">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2389867" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/canva-api-a-comprehensive-guide-513j" aria-labelledby="article-link-2389867" class="crayons-story__hidden-navigation-link">Canva API: A Comprehensive Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389867" aria-controls="story-author-preview-content-2389867" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389867" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/canva-api-a-comprehensive-guide-513j" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:03:30Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070610"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/canva-api-a-comprehensive-guide-513j" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-28-canva-api%2Fcanva-logo-feature-image.png" id="article-link-2389867"> Canva API: A Comprehensive Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/canva-api-a-comprehensive-guide-513j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Canva API: A Comprehensive Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="apxzpzjbxfzpb64iwppgvytjspqkn07d" class="crayons-icon"><title id="apxzpzjbxfzpb64iwppgvytjspqkn07d">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2389866" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/improving-cross-team-collaboration-with-api-documentation-38af" aria-labelledby="article-link-2389866" class="crayons-story__hidden-navigation-link">Improving Cross-Team Collaboration with API Documentation</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389866" aria-controls="story-author-preview-content-2389866" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389866" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/improving-cross-team-collaboration-with-api-documentation-38af" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:03:13Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070593"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/improving-cross-team-collaboration-with-api-documentation-38af" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-27-improving-cross-team-collaboration-with-api-documentation%2Fcropped-Cross%2520team%2520collaboration%2520feature%2520image.png" id="article-link-2389866"> Improving Cross-Team Collaboration with API Documentation </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/improving-cross-team-collaboration-with-api-documentation-38af#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Improving Cross-Team Collaboration with API Documentation"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aocneub1az2yvkpz966khavsydxwofub" class="crayons-icon"><title id="aocneub1az2yvkpz966khavsydxwofub">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 13 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2389865" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/api-audits-and-security-testing-best-practices-1kc" aria-labelledby="article-link-2389865" class="crayons-story__hidden-navigation-link">API Audits and Security Testing: Best Practices</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389865" aria-controls="story-author-preview-content-2389865" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389865" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/api-audits-and-security-testing-best-practices-1kc" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:02:56Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070576"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/api-audits-and-security-testing-best-practices-1kc" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-27-api-audits-and-security-testing%2Fcropped-API%2520Audits%2520and%2520security%2520testing%2520feature%2520image.png" id="article-link-2389865"> API Audits and Security Testing: Best Practices </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/api-audits-and-security-testing-best-practices-1kc#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - API Audits and Security Testing: Best Practices"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="abnqp96l9ulv8nwquffnvzfjz9wepaw6" class="crayons-icon"><title id="abnqp96l9ulv8nwquffnvzfjz9wepaw6">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 13 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2389863" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/how-to-implement-mock-apis-for-api-testing-pi3" aria-labelledby="article-link-2389863" class="crayons-story__hidden-navigation-link">How to Implement Mock APIs for API Testing</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2389863" aria-controls="story-author-preview-content-2389863" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2389863" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/how-to-implement-mock-apis-for-api-testing-pi3" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-08T00:02:39Z">Apr 8</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1744070559"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/how-to-implement-mock-apis-for-api-testing-pi3" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-26-how-to-implement-mock-apis-for-api-testing%2Fcropped-Implement%2520Mock%2520APIs%2520feature%2520image.png" id="article-link-2389863"> How to Implement Mock APIs for API Testing </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(1, 155, 101, 0.10); --tag-prefix: #019b65; --tag-bg-hover: rgba(1, 155, 101, 0.10); --tag-prefix-hover: #019b65; " href="/t/testing"><span class="crayons-tag__prefix">#</span>testing</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/how-to-implement-mock-apis-for-api-testing-pi3#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How to Implement Mock APIs for API Testing"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="adv4ef5kh5an41ica5z0t88m7amunyx0" class="crayons-icon"><title id="adv4ef5kh5an41ica5z0t88m7amunyx0">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380204" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/inputoutput-validation-best-practices-for-api-communication-1f16" aria-labelledby="article-link-2380204" class="crayons-story__hidden-navigation-link">Input/Output Validation: Best Practices for API Communication</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380204" aria-controls="story-author-preview-content-2380204" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380204" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/inputoutput-validation-best-practices-for-api-communication-1f16" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:32:56Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748376"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/inputoutput-validation-best-practices-for-api-communication-1f16" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-25-input-output-validation-best-practices%2Fcropped-Input_output%2520validation%2520feature%2520image.png" id="article-link-2380204"> Input/Output Validation: Best Practices for API Communication </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(235, 223, 55, 0.10); --tag-prefix: #ebdf37; --tag-bg-hover: rgba(235, 223, 55, 0.10); --tag-prefix-hover: #ebdf37; " href="/t/architecture"><span class="crayons-tag__prefix">#</span>architecture</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/inputoutput-validation-best-practices-for-api-communication-1f16#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Input/Output Validation: Best Practices for API Communication"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a9amvr7em5tgxa54khi3cuzuh74n6895" class="crayons-icon"><title id="a9amvr7em5tgxa54khi3cuzuh74n6895">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380202" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/how-to-choose-an-api-hosting-solution-key-considerations-2ga" aria-labelledby="article-link-2380202" class="crayons-story__hidden-navigation-link">How to Choose an API Hosting Solution: Key Considerations</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380202" aria-controls="story-author-preview-content-2380202" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380202" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/how-to-choose-an-api-hosting-solution-key-considerations-2ga" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:32:39Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748359"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/how-to-choose-an-api-hosting-solution-key-considerations-2ga" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-25-how-to-choose-an-api-hosting-solution%2Fcropped-API%2520Hosting%2520Solutions%2520considerations%2520feature%2520image.png" id="article-link-2380202"> How to Choose an API Hosting Solution: Key Considerations </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/how-to-choose-an-api-hosting-solution-key-considerations-2ga#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How to Choose an API Hosting Solution: Key Considerations"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a9ejjjpcmgidzaiul7eho6xq6rqkj3c6" class="crayons-icon"><title id="a9ejjjpcmgidzaiul7eho6xq6rqkj3c6">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380201" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/custom-scopes-in-oauth-step-by-step-guide-46gl" aria-labelledby="article-link-2380201" class="crayons-story__hidden-navigation-link">Custom Scopes in OAuth: Step-by-Step Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380201" aria-controls="story-author-preview-content-2380201" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380201" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/custom-scopes-in-oauth-step-by-step-guide-46gl" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:32:22Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748342"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/custom-scopes-in-oauth-step-by-step-guide-46gl" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-25-custom-scopes-in-oauth-guide%2Fimage.png" id="article-link-2380201"> Custom Scopes in OAuth: Step-by-Step Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/oauth"><span class="crayons-tag__prefix">#</span>oauth</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(254, 255, 165, 0.10); --tag-prefix: #FEFFA5; --tag-bg-hover: rgba(254, 255, 165, 0.10); --tag-prefix-hover: #FEFFA5; " href="/t/tutorial"><span class="crayons-tag__prefix">#</span>tutorial</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/custom-scopes-in-oauth-step-by-step-guide-46gl#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Custom Scopes in OAuth: Step-by-Step Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="akz8akmqewq1dgffszzumh0rb1iccaf9" class="crayons-icon"><title id="akz8akmqewq1dgffszzumh0rb1iccaf9">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 6 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380200" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/a-guide-to-api-route-management-with-api-traffic-analytics-m12" aria-labelledby="article-link-2380200" class="crayons-story__hidden-navigation-link">A Guide to API Route Management with API Traffic Analytics</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380200" aria-controls="story-author-preview-content-2380200" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380200" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/a-guide-to-api-route-management-with-api-traffic-analytics-m12" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:32:06Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748326"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/a-guide-to-api-route-management-with-api-traffic-analytics-m12" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-25-api-route-management-guide%2Fcropped-API%2520Route%2520Management%2520guide%2520feature%2520image.png" id="article-link-2380200"> A Guide to API Route Management with API Traffic Analytics </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/a-guide-to-api-route-management-with-api-traffic-analytics-m12#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - A Guide to API Route Management with API Traffic Analytics"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aspchn6ckcuxi73mq70huq6zybcay9ak" class="crayons-icon"><title id="aspchn6ckcuxi73mq70huq6zybcay9ak">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 15 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380198" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/rest-or-grpc-a-guide-to-efficient-api-design-5fl6" aria-labelledby="article-link-2380198" class="crayons-story__hidden-navigation-link">REST or gRPC? A Guide to Efficient API Design</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380198" aria-controls="story-author-preview-content-2380198" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380198" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/rest-or-grpc-a-guide-to-efficient-api-design-5fl6" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:31:49Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748309"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/rest-or-grpc-a-guide-to-efficient-api-design-5fl6" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-24-rest-or-grpc-guide%2Fcropped-REST%2520vs%2520gRPC%2520feature%2520image.png" id="article-link-2380198"> REST or gRPC? A Guide to Efficient API Design </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(235, 223, 55, 0.10); --tag-prefix: #ebdf37; --tag-bg-hover: rgba(235, 223, 55, 0.10); --tag-prefix-hover: #ebdf37; " href="/t/architecture"><span class="crayons-tag__prefix">#</span>architecture</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/rest-or-grpc-a-guide-to-efficient-api-design-5fl6#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - REST or gRPC? A Guide to Efficient API Design"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="asgi4tgbt2277ngfmlno6xjyxkn6xfk1" class="crayons-icon"><title id="asgi4tgbt2277ngfmlno6xjyxkn6xfk1">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380197" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/gitlab-api-guide-unlock-powerful-integrations-for-developers-3kld" aria-labelledby="article-link-2380197" class="crayons-story__hidden-navigation-link">GitLab API Guide: Unlock Powerful Integrations for Developers</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380197" aria-controls="story-author-preview-content-2380197" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380197" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/gitlab-api-guide-unlock-powerful-integrations-for-developers-3kld" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:31:33Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748293"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/gitlab-api-guide-unlock-powerful-integrations-for-developers-3kld" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-24-gitlab-api%2Fgitlab-logo-feature-image.png" id="article-link-2380197"> GitLab API Guide: Unlock Powerful Integrations for Developers </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/gitlab-api-guide-unlock-powerful-integrations-for-developers-3kld#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - GitLab API Guide: Unlock Powerful Integrations for Developers"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aaqoidmtpbpz23zn46o5eoi800nciyhj" class="crayons-icon"><title id="aaqoidmtpbpz23zn46o5eoi800nciyhj">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380194" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/coingecko-api-the-cryptocurrency-data-powerhouse-324b" aria-labelledby="article-link-2380194" class="crayons-story__hidden-navigation-link">CoinGecko API: The Cryptocurrency Data Powerhouse</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380194" aria-controls="story-author-preview-content-2380194" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380194" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/coingecko-api-the-cryptocurrency-data-powerhouse-324b" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:31:16Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748276"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/coingecko-api-the-cryptocurrency-data-powerhouse-324b" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-24-coingecko-api%2Fcoingecko-logo-feature-image.png" id="article-link-2380194"> CoinGecko API: The Cryptocurrency Data Powerhouse </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/coingecko-api-the-cryptocurrency-data-powerhouse-324b#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - CoinGecko API: The Cryptocurrency Data Powerhouse"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a1cathdeixsybdd2mqj2re5omneft0s3" class="crayons-icon"><title id="a1cathdeixsybdd2mqj2re5omneft0s3">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 7 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380192" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/why-your-api-needs-to-run-at-the-edge-4fc4" aria-labelledby="article-link-2380192" class="crayons-story__hidden-navigation-link">Why Your API Needs to Run at the Edge</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380192" aria-controls="story-author-preview-content-2380192" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380192" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/why-your-api-needs-to-run-at-the-edge-4fc4" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:31:00Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748260"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/why-your-api-needs-to-run-at-the-edge-4fc4" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-24-apis-at-the-edge%2Fimage.png" id="article-link-2380192"> Why Your API Needs to Run at the Edge </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(28, 28, 28, 0.10); --tag-prefix: #1C1C1C; --tag-bg-hover: rgba(28, 28, 28, 0.10); --tag-prefix-hover: #1C1C1C; " href="/t/serverless"><span class="crayons-tag__prefix">#</span>serverless</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(255, 163, 100, 0.10); --tag-prefix: #ffa364; --tag-bg-hover: rgba(255, 163, 100, 0.10); --tag-prefix-hover: #ffa364; " href="/t/performance"><span class="crayons-tag__prefix">#</span>performance</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(254, 255, 165, 0.10); --tag-prefix: #FEFFA5; --tag-bg-hover: rgba(254, 255, 165, 0.10); --tag-prefix-hover: #FEFFA5; " href="/t/tutorial"><span class="crayons-tag__prefix">#</span>tutorial</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/why-your-api-needs-to-run-at-the-edge-4fc4#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Why Your API Needs to Run at the Edge"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="akscumrt47q4c8uebdeoworn242uauud" class="crayons-icon"><title id="akscumrt47q4c8uebdeoworn242uauud">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2380191" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/an-introduction-to-api-security-automation-1nfa" aria-labelledby="article-link-2380191" class="crayons-story__hidden-navigation-link">An Introduction to API Security Automation</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2380191" aria-controls="story-author-preview-content-2380191" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2380191" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/an-introduction-to-api-security-automation-1nfa" class="crayons-story__tertiary fs-xs"><time datetime="2025-04-04T06:30:43Z">Apr 4</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743748243"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/an-introduction-to-api-security-automation-1nfa" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-24-an-introduction-to-api-security-automation%2Fcropped-API%2520Security%2520Automation%2520feature%2520image.png" id="article-link-2380191"> An Introduction to API Security Automation </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/an-introduction-to-api-security-automation-1nfa#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - An Introduction to API Security Automation"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aqxwu8kt8mbzfvex3jdrsx9t2gd0nd3u" class="crayons-icon"><title id="aqxwu8kt8mbzfvex3jdrsx9t2gd0nd3u">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2369581" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/how-to-improve-api-design-for-better-developer-productivity-mcb" aria-labelledby="article-link-2369581" class="crayons-story__hidden-navigation-link">How to Improve API Design for Better Developer Productivity</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2369581" aria-controls="story-author-preview-content-2369581" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2369581" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/how-to-improve-api-design-for-better-developer-productivity-mcb" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-31T21:10:57Z">Mar 31</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743455457"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/how-to-improve-api-design-for-better-developer-productivity-mcb" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-21-improving-api-design-for-developer-productivity%2Fcropped-Master%2520API%2520design%2520for%2520efficiency%2520feature%2520image.png" id="article-link-2369581"> How to Improve API Design for Better Developer Productivity </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(235, 223, 55, 0.10); --tag-prefix: #ebdf37; --tag-bg-hover: rgba(235, 223, 55, 0.10); --tag-prefix-hover: #ebdf37; " href="/t/architecture"><span class="crayons-tag__prefix">#</span>architecture</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/how-to-improve-api-design-for-better-developer-productivity-mcb" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2369581" aria-label="Add a comment to post - How to Improve API Design for Better Developer Productivity"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/zuplo/how-to-improve-api-design-for-better-developer-productivity-mcb#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How to Improve API Design for Better Developer Productivity"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aasao0or1axy2nuksgei3bge3q8uu235" class="crayons-icon"><title id="aasao0or1axy2nuksgei3bge3q8uu235">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2369579" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/how-to-write-api-documentation-that-developers-will-love-3bml" aria-labelledby="article-link-2369579" class="crayons-story__hidden-navigation-link">How to Write API Documentation That Developers Will Love</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2369579" aria-controls="story-author-preview-content-2369579" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2369579" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/how-to-write-api-documentation-that-developers-will-love-3bml" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-31T21:10:40Z">Mar 31</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743455440"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/how-to-write-api-documentation-that-developers-will-love-3bml" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-21-how-to-write-api-documentation-developers-will-love%2Fcropped-Crafting%2520API%2520documentation%2520feature%2520image.png" id="article-link-2369579"> How to Write API Documentation That Developers Will Love </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/how-to-write-api-documentation-that-developers-will-love-3bml" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2369579" aria-label="Add a comment to post - How to Write API Documentation That Developers Will Love"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">20<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/zuplo/how-to-write-api-documentation-that-developers-will-love-3bml#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How to Write API Documentation That Developers Will Love"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aj2sbos3ruxxtvtx34d4b2k8lwuoiv4k" class="crayons-icon"><title id="aj2sbos3ruxxtvtx34d4b2k8lwuoiv4k">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 7<span class="hidden s:inline"> comments</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2369578" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/api-monitoring-for-mobile-apps-key-metrics-for-developers-1gei" aria-labelledby="article-link-2369578" class="crayons-story__hidden-navigation-link">API Monitoring for Mobile Apps: Key Metrics for Developers</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2369578" aria-controls="story-author-preview-content-2369578" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2369578" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/api-monitoring-for-mobile-apps-key-metrics-for-developers-1gei" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-31T21:10:23Z">Mar 31</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743455423"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/api-monitoring-for-mobile-apps-key-metrics-for-developers-1gei" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-21-api-monitoring-for-mobile-apps%2Fcropped-Monitoring%2520for%2520mobile%2520performance%2520feature%2520image.png" id="article-link-2369578"> API Monitoring for Mobile Apps: Key Metrics for Developers </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/api-monitoring-for-mobile-apps-key-metrics-for-developers-1gei#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - API Monitoring for Mobile Apps: Key Metrics for Developers"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="agt9pwusl8k7b9csr6dlcr5omhrovr5c" class="crayons-icon"><title id="agt9pwusl8k7b9csr6dlcr5omhrovr5c">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2365664" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/multicloud-vs-traditional-gateways-modern-api-management-3fpo" aria-labelledby="article-link-2365664" class="crayons-story__hidden-navigation-link">Multicloud vs Traditional Gateways: Modern API Management</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2365664" aria-controls="story-author-preview-content-2365664" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2365664" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/multicloud-vs-traditional-gateways-modern-api-management-3fpo" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-30T01:00:55Z">Mar 30</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743296455"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/multicloud-vs-traditional-gateways-modern-api-management-3fpo" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-20-multicloud-vs-traditional-api-gateways%2Fcropped-Multicloud%2520vs%2520Traditional%2520feature%2520image.png" id="article-link-2365664"> Multicloud vs Traditional Gateways: Modern API Management </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/apigateway"><span class="crayons-tag__prefix">#</span>apigateway</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/multicloud-vs-traditional-gateways-modern-api-management-3fpo#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Multicloud vs Traditional Gateways: Modern API Management"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="apweb2p2gbnig1joug9k89iysent2bu9" class="crayons-icon"><title id="apweb2p2gbnig1joug9k89iysent2bu9">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2365663" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/monetizing-education-apis-a-guide-to-revenue-models-3pbk" aria-labelledby="article-link-2365663" class="crayons-story__hidden-navigation-link">Monetizing Education APIs: A Guide to Revenue Models</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2365663" aria-controls="story-author-preview-content-2365663" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2365663" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/monetizing-education-apis-a-guide-to-revenue-models-3pbk" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-30T01:00:38Z">Mar 30</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743296438"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/monetizing-education-apis-a-guide-to-revenue-models-3pbk" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-20-monetizing-education-apis%2Fcropped-Monetization%2520for%2520Education%2520API%2520feature%2520image.png" id="article-link-2365663"> Monetizing Education APIs: A Guide to Revenue Models </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/monetizing-education-apis-a-guide-to-revenue-models-3pbk#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Monetizing Education APIs: A Guide to Revenue Models"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ao5h0ojhg1gpff818d5kck0sh6eioal" class="crayons-icon"><title id="ao5h0ojhg1gpff818d5kck0sh6eioal">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2365662" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/api-governance-in-devops-pipelines-a-comprehensive-guide-2nh2" aria-labelledby="article-link-2365662" class="crayons-story__hidden-navigation-link">API Governance in DevOps Pipelines: A Comprehensive Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2365662" aria-controls="story-author-preview-content-2365662" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2365662" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/api-governance-in-devops-pipelines-a-comprehensive-guide-2nh2" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-30T01:00:21Z">Mar 30</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743296421"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/api-governance-in-devops-pipelines-a-comprehensive-guide-2nh2" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-20-api-governance-in-devops-pipelines%2Fcropped-Governance%2520in%2520DevOps%2520pipelines%2520feature%2520image.png" id="article-link-2365662"> API Governance in DevOps Pipelines: A Comprehensive Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/api-governance-in-devops-pipelines-a-comprehensive-guide-2nh2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - API Governance in DevOps Pipelines: A Comprehensive Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="abk46zyj68v8634mffvqiou7l43tep7v" class="crayons-icon"><title id="abk46zyj68v8634mffvqiou7l43tep7v">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2365661" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/api-analytics-a-strategic-toolkit-for-optimization-4ld8" aria-labelledby="article-link-2365661" class="crayons-story__hidden-navigation-link">API Analytics: A Strategic Toolkit for Optimization</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2365661" aria-controls="story-author-preview-content-2365661" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2365661" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/api-analytics-a-strategic-toolkit-for-optimization-4ld8" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-30T01:00:05Z">Mar 30</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743296405"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/api-analytics-a-strategic-toolkit-for-optimization-4ld8" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-20-api-analytics-for-optimization%2Fcropped-Leverage%2520API%2520Analytics%2520feature%2520image.png" id="article-link-2365661"> API Analytics: A Strategic Toolkit for Optimization </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/api-analytics-a-strategic-toolkit-for-optimization-4ld8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - API Analytics: A Strategic Toolkit for Optimization"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="af3vz71dbucybkq63mx0ub2kydqpxrjb" class="crayons-icon"><title id="af3vz71dbucybkq63mx0ub2kydqpxrjb">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 15 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2365660" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/using-api-usage-data-to-build-flexible-pricing-tiers-3lc6" aria-labelledby="article-link-2365660" class="crayons-story__hidden-navigation-link">Using API Usage Data to Build Flexible Pricing Tiers</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2365660" aria-controls="story-author-preview-content-2365660" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2365660" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/using-api-usage-data-to-build-flexible-pricing-tiers-3lc6" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-30T00:59:48Z">Mar 30</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743296388"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/using-api-usage-data-to-build-flexible-pricing-tiers-3lc6" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-19-using-api-usage-data-for-flexible-pricing-tiers%2Fcropped-API%2520Usage%2520data%2520for%2520flexible%2520pricing%2520feature%2520image.png" id="article-link-2365660"> Using API Usage Data to Build Flexible Pricing Tiers </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/using-api-usage-data-to-build-flexible-pricing-tiers-3lc6#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Using API Usage Data to Build Flexible Pricing Tiers"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a7jlf407lgu3gsxmd3zntb3ztdzue6h" class="crayons-icon"><title id="a7jlf407lgu3gsxmd3zntb3ztdzue6h">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2365659" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/mastering-pokeapi-build-data-rich-pokemon-applications-an0" aria-labelledby="article-link-2365659" class="crayons-story__hidden-navigation-link">Mastering PokeAPI: Build Data-Rich Pokémon Applications</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2365659" aria-controls="story-author-preview-content-2365659" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2365659" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/mastering-pokeapi-build-data-rich-pokemon-applications-an0" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-30T00:59:32Z">Mar 30</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743296372"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/mastering-pokeapi-build-data-rich-pokemon-applications-an0" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-19-pokeapi%2Fpokemon-logo-feature-image.png" id="article-link-2365659"> Mastering PokeAPI: Build Data-Rich Pokémon Applications </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/mastering-pokeapi-build-data-rich-pokemon-applications-an0" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2365659" aria-label="Add a comment to post - Mastering PokeAPI: Build Data-Rich Pokémon Applications"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/zuplo/mastering-pokeapi-build-data-rich-pokemon-applications-an0#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Mastering PokeAPI: Build Data-Rich Pokémon Applications"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a4n6ifvy56pj0yzkf7xz318294k5xxjt" class="crayons-icon"><title id="a4n6ifvy56pj0yzkf7xz318294k5xxjt">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 7 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2365658" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/boosting-api-performance-with-cdn-for-global-scalability-1o5b" aria-labelledby="article-link-2365658" class="crayons-story__hidden-navigation-link">Boosting API Performance with CDN for Global Scalability</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2365658" aria-controls="story-author-preview-content-2365658" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2365658" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/boosting-api-performance-with-cdn-for-global-scalability-1o5b" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-30T00:59:15Z">Mar 30</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743296355"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/boosting-api-performance-with-cdn-for-global-scalability-1o5b" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-19-optimizing-api-performance-with-CDN-global-scale%2Fcropped-Optimize%2520Using%2520a%2520CDN%2520feature%2520image.png" id="article-link-2365658"> Boosting API Performance with CDN for Global Scalability </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(255, 163, 100, 0.10); --tag-prefix: #ffa364; --tag-bg-hover: rgba(255, 163, 100, 0.10); --tag-prefix-hover: #ffa364; " href="/t/performance"><span class="crayons-tag__prefix">#</span>performance</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/boosting-api-performance-with-cdn-for-global-scalability-1o5b" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2365658" aria-label="Add a comment to post - Boosting API Performance with CDN for Global Scalability"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">5<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/zuplo/boosting-api-performance-with-cdn-for-global-scalability-1o5b#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Boosting API Performance with CDN for Global Scalability"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aezuica8iqatwmo46hlsw7tsooeenh13" class="crayons-icon"><title id="aezuica8iqatwmo46hlsw7tsooeenh13">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2365657" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/how-to-use-load-balancing-to-scale-api-performance-3l4c" aria-labelledby="article-link-2365657" class="crayons-story__hidden-navigation-link">How to Use Load Balancing to Scale API Performance</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2365657" aria-controls="story-author-preview-content-2365657" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2365657" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/how-to-use-load-balancing-to-scale-api-performance-3l4c" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-30T00:58:59Z">Mar 30</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743296339"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/how-to-use-load-balancing-to-scale-api-performance-3l4c" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-19-load-balancing-strategies-to-scale-api-performance%2Fcropped-Load%2520balancing%2520strategies%2520feature%2520image.png" id="article-link-2365657"> How to Use Load Balancing to Scale API Performance </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/how-to-use-load-balancing-to-scale-api-performance-3l4c#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How to Use Load Balancing to Scale API Performance"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a8fis2zf0y5djp3ispavnk4uvwbqf3st" class="crayons-icon"><title id="a8fis2zf0y5djp3ispavnk4uvwbqf3st">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 13 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2363635" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/exploring-nasa-api-creating-data-rich-applications-5ffk" aria-labelledby="article-link-2363635" class="crayons-story__hidden-navigation-link">Exploring NASA API: Creating Data-Rich Applications</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2363635" aria-controls="story-author-preview-content-2363635" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2363635" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/exploring-nasa-api-creating-data-rich-applications-5ffk" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-28T20:03:36Z">Mar 28</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743192216"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/exploring-nasa-api-creating-data-rich-applications-5ffk" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-18-nasa-api%2Fnasa-logo-feature-image.png" id="article-link-2363635"> Exploring NASA API: Creating Data-Rich Applications </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/exploring-nasa-api-creating-data-rich-applications-5ffk#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Exploring NASA API: Creating Data-Rich Applications"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="avoh7cv0lkawtfb2v6itouv44rob4xy" class="crayons-icon"><title id="avoh7cv0lkawtfb2v6itouv44rob4xy">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 8 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2363633" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/tutorial-how-to-extract-jwt-data-3m02" aria-labelledby="article-link-2363633" class="crayons-story__hidden-navigation-link">Tutorial: How to Extract JWT Data</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2363633" aria-controls="story-author-preview-content-2363633" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2363633" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/tutorial-how-to-extract-jwt-data-3m02" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-28T20:03:19Z">Mar 28</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1743192199"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/tutorial-how-to-extract-jwt-data-3m02" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2024-12-30-extracting-jwt-data-tutorial%2Fimage.png" id="article-link-2363633"> Tutorial: How to Extract JWT Data </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(254, 255, 165, 0.10); --tag-prefix: #FEFFA5; --tag-bg-hover: rgba(254, 255, 165, 0.10); --tag-prefix-hover: #FEFFA5; " href="/t/tutorial"><span class="crayons-tag__prefix">#</span>tutorial</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/tutorial-how-to-extract-jwt-data-3m02#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Tutorial: How to Extract JWT Data"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aohmzpureq77g45pz9vfi0t8en8wwca" class="crayons-icon"><title id="aohmzpureq77g45pz9vfi0t8en8wwca">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2356477" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/bottleneck-identification-using-distributed-tracing-338b" aria-labelledby="article-link-2356477" class="crayons-story__hidden-navigation-link">Bottleneck Identification Using Distributed Tracing</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2356477" aria-controls="story-author-preview-content-2356477" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2356477" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/bottleneck-identification-using-distributed-tracing-338b" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-25T19:35:43Z">Mar 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742931343"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/bottleneck-identification-using-distributed-tracing-338b" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-15-how-distributed-tracing-aids-bottleneck-identification%2Fimage.png" id="article-link-2356477"> Bottleneck Identification Using Distributed Tracing </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(255, 163, 100, 0.10); --tag-prefix: #ffa364; --tag-bg-hover: rgba(255, 163, 100, 0.10); --tag-prefix-hover: #ffa364; " href="/t/performance"><span class="crayons-tag__prefix">#</span>performance</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/bottleneck-identification-using-distributed-tracing-338b#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Bottleneck Identification Using Distributed Tracing"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a93ubhd212isz0kofheui920uavkjbgh" class="crayons-icon"><title id="a93ubhd212isz0kofheui920uavkjbgh">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 5 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2356476" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/turning-apis-into-revenue-passive-income-strategies-for-developers-2968" aria-labelledby="article-link-2356476" class="crayons-story__hidden-navigation-link">Turning APIs into Revenue: Passive Income Strategies for Developers</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2356476" aria-controls="story-author-preview-content-2356476" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2356476" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/turning-apis-into-revenue-passive-income-strategies-for-developers-2968" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-25T19:35:26Z">Mar 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742931326"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/turning-apis-into-revenue-passive-income-strategies-for-developers-2968" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-14-turning-apis-into-passive-income-revenue-stream%2Fcropped-Passive%2520income%2520feature%2520image.png" id="article-link-2356476"> Turning APIs into Revenue: Passive Income Strategies for Developers </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/turning-apis-into-revenue-passive-income-strategies-for-developers-2968#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Turning APIs into Revenue: Passive Income Strategies for Developers"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="abe5876nuwss5qxa4r9pgzfj5qq5xhdr" class="crayons-icon"><title id="abe5876nuwss5qxa4r9pgzfj5qq5xhdr">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2356474" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/top-metrics-for-api-monetization-3kad" aria-labelledby="article-link-2356474" class="crayons-story__hidden-navigation-link">Top Metrics for API Monetization</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2356474" aria-controls="story-author-preview-content-2356474" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2356474" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/top-metrics-for-api-monetization-3kad" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-25T19:35:09Z">Mar 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742931309"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/top-metrics-for-api-monetization-3kad" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-14-top-metrics-for-api-monetization%2Fimage.png" id="article-link-2356474"> Top Metrics for API Monetization </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/top-metrics-for-api-monetization-3kad#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Top Metrics for API Monetization"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aq155f2cscns1fg26qqsvdupczjxxyfi" class="crayons-icon"><title id="aq155f2cscns1fg26qqsvdupczjxxyfi">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2356472" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/leveraging-api-logs-for-proactive-troubleshooting-jf" aria-labelledby="article-link-2356472" class="crayons-story__hidden-navigation-link">Leveraging API Logs for Proactive Troubleshooting</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2356472" aria-controls="story-author-preview-content-2356472" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2356472" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/leveraging-api-logs-for-proactive-troubleshooting-jf" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-25T19:34:52Z">Mar 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742931292"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/leveraging-api-logs-for-proactive-troubleshooting-jf" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-13-leverage-api-logs-for-proactive-troubleshooting%2Fcropped-Troubleshooting%2520feature%2520image.png" id="article-link-2356472"> Leveraging API Logs for Proactive Troubleshooting </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/leveraging-api-logs-for-proactive-troubleshooting-jf#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Leveraging API Logs for Proactive Troubleshooting"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="an7i3gq1ebp3gvfug75x6e0acj4zsi1a" class="crayons-icon"><title id="an7i3gq1ebp3gvfug75x6e0acj4zsi1a">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2356471" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/how-apis-can-boost-developer-creativity-and-innovation-3aba" aria-labelledby="article-link-2356471" class="crayons-story__hidden-navigation-link">How APIs Can Boost Developer Creativity and Innovation</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2356471" aria-controls="story-author-preview-content-2356471" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2356471" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/how-apis-can-boost-developer-creativity-and-innovation-3aba" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-25T19:34:36Z">Mar 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742931276"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/how-apis-can-boost-developer-creativity-and-innovation-3aba" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-13-api-developer-creativity-foster-innovation%2Fcropped-Developer%2520creativity%2520feature%2520image.png" id="article-link-2356471"> How APIs Can Boost Developer Creativity and Innovation </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(235, 223, 55, 0.10); --tag-prefix: #ebdf37; --tag-bg-hover: rgba(235, 223, 55, 0.10); --tag-prefix-hover: #ebdf37; " href="/t/architecture"><span class="crayons-tag__prefix">#</span>architecture</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/how-apis-can-boost-developer-creativity-and-innovation-3aba#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How APIs Can Boost Developer Creativity and Innovation"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aef9ghc0b0f89xh4axc8b4wvzk11bgtl" class="crayons-icon"><title id="aef9ghc0b0f89xh4axc8b4wvzk11bgtl">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2356470" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/leveraging-api-documentation-for-faster-developer-onboarding-af2" aria-labelledby="article-link-2356470" class="crayons-story__hidden-navigation-link">Leveraging API Documentation for Faster Developer Onboarding</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2356470" aria-controls="story-author-preview-content-2356470" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2356470" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/leveraging-api-documentation-for-faster-developer-onboarding-af2" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-25T19:34:19Z">Mar 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742931259"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/leveraging-api-documentation-for-faster-developer-onboarding-af2" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-12-leverage-api-documentation-for-faster-onboarding%2Fcropped-Developer%2520onboarding%2520feature%2520image.png" id="article-link-2356470"> Leveraging API Documentation for Faster Developer Onboarding </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/leveraging-api-documentation-for-faster-developer-onboarding-af2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Leveraging API Documentation for Faster Developer Onboarding"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a9y2lxlwfdsxyv8pje7hmutspboco43p" class="crayons-icon"><title id="a9y2lxlwfdsxyv8pje7hmutspboco43p">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2356468" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/common-mistakes-in-restful-api-design-33k3" aria-labelledby="article-link-2356468" class="crayons-story__hidden-navigation-link">Common Mistakes in RESTful API Design</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2356468" aria-controls="story-author-preview-content-2356468" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2356468" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/common-mistakes-in-restful-api-design-33k3" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-25T19:34:03Z">Mar 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742931243"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/common-mistakes-in-restful-api-design-33k3" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-12-common-mistakes-in-restful-api%2Fcropped-RESTful%2520API%2520feature%2520image.png" id="article-link-2356468"> Common Mistakes in RESTful API Design </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(235, 223, 55, 0.10); --tag-prefix: #ebdf37; --tag-bg-hover: rgba(235, 223, 55, 0.10); --tag-prefix-hover: #ebdf37; " href="/t/architecture"><span class="crayons-tag__prefix">#</span>architecture</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/common-mistakes-in-restful-api-design-33k3#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Common Mistakes in RESTful API Design"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a3wicnvahpdyds7to7szka099gpvoruc" class="crayons-icon"><title id="a3wicnvahpdyds7to7szka099gpvoruc">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2356467" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/bluesky-api-unlocking-the-power-of-social-data-for-developers-3go5" aria-labelledby="article-link-2356467" class="crayons-story__hidden-navigation-link">Bluesky API: Unlocking the Power of Social Data for Developers</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2356467" aria-controls="story-author-preview-content-2356467" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2356467" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/bluesky-api-unlocking-the-power-of-social-data-for-developers-3go5" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-25T19:33:46Z">Mar 25</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742931226"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/bluesky-api-unlocking-the-power-of-social-data-for-developers-3go5" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-12-bluesky-api%2F2025-03-12-bluesky-logo-feature-image.png" id="article-link-2356467"> Bluesky API: Unlocking the Power of Social Data for Developers </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/bluesky-api-unlocking-the-power-of-social-data-for-developers-3go5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Bluesky API: Unlocking the Power of Social Data for Developers"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aix9yoj264oskyw5q9eoawuhok71gqqq" class="crayons-icon"><title id="aix9yoj264oskyw5q9eoawuhok71gqqq">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2348415" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/unlocking-api-revenue-why-the-freemium-model-works-best-14j5" aria-labelledby="article-link-2348415" class="crayons-story__hidden-navigation-link">Unlocking API Revenue: Why the Freemium Model Works Best</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2348415" aria-controls="story-author-preview-content-2348415" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2348415" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/unlocking-api-revenue-why-the-freemium-model-works-best-14j5" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-21T16:11:49Z">Mar 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742573509"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/unlocking-api-revenue-why-the-freemium-model-works-best-14j5" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-11-unlocking-api-revenue%2Fcropped-Freemium%2520model%2520feature%2520image.png" id="article-link-2348415"> Unlocking API Revenue: Why the Freemium Model Works Best </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/unlocking-api-revenue-why-the-freemium-model-works-best-14j5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Unlocking API Revenue: Why the Freemium Model Works Best"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aflpay0uola19yps6mdckxnh40h7m3tu" class="crayons-icon"><title id="aflpay0uola19yps6mdckxnh40h7m3tu">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2348414" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/unlock-real-time-crypto-data-with-coinmarketcap-api-jm1" aria-labelledby="article-link-2348414" class="crayons-story__hidden-navigation-link">Unlock Real-Time Crypto Data with CoinMarketCap API</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2348414" aria-controls="story-author-preview-content-2348414" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2348414" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/unlock-real-time-crypto-data-with-coinmarketcap-api-jm1" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-21T16:11:32Z">Mar 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742573492"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/unlock-real-time-crypto-data-with-coinmarketcap-api-jm1" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-11-coinmarketcap-api%2Fcoinmarketcap-logo-feature-image.png" id="article-link-2348414"> Unlock Real-Time Crypto Data with CoinMarketCap API </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/unlock-real-time-crypto-data-with-coinmarketcap-api-jm1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Unlock Real-Time Crypto Data with CoinMarketCap API"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ann9lrluiupmkty87v4wcs4gmcg9k606" class="crayons-icon"><title id="ann9lrluiupmkty87v4wcs4gmcg9k606">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 8 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2348413" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/mastering-api-changes-and-rollbacks-without-breaking-trust-3nd1" aria-labelledby="article-link-2348413" class="crayons-story__hidden-navigation-link">Mastering API Changes and Rollbacks Without Breaking Trust</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2348413" aria-controls="story-author-preview-content-2348413" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2348413" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/mastering-api-changes-and-rollbacks-without-breaking-trust-3nd1" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-21T16:11:15Z">Mar 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742573475"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/mastering-api-changes-and-rollbacks-without-breaking-trust-3nd1" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-11-api-changes-and-rollbacks%2Fcropped-Changes%2520and%2520rollbacks%2520feature%2520image.png" id="article-link-2348413"> Mastering API Changes and Rollbacks Without Breaking Trust </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/mastering-api-changes-and-rollbacks-without-breaking-trust-3nd1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Mastering API Changes and Rollbacks Without Breaking Trust"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="arodbhilgxobd9sxwvgnisxy62f07z37" class="crayons-icon"><title id="arodbhilgxobd9sxwvgnisxy62f07z37">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2348412" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/securing-apis-with-two-factor-authentication-25hn" aria-labelledby="article-link-2348412" class="crayons-story__hidden-navigation-link">Securing APIs with Two-Factor Authentication</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2348412" aria-controls="story-author-preview-content-2348412" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2348412" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/securing-apis-with-two-factor-authentication-25hn" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-21T16:10:59Z">Mar 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742573459"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/securing-apis-with-two-factor-authentication-25hn" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-10-protect-your-apis-with-2fa%2Fprotect-your-apis-with-2fa-feature-image-resized.png" id="article-link-2348412"> Securing APIs with Two-Factor Authentication </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/securing-apis-with-two-factor-authentication-25hn#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Securing APIs with Two-Factor Authentication"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aeegirtcp0hvzhef3ldcn4h50upg6c4d" class="crayons-icon"><title id="aeegirtcp0hvzhef3ldcn4h50upg6c4d">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2348411" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/api-security-in-e-commerce-securing-the-digital-marketplace-18a0" aria-labelledby="article-link-2348411" class="crayons-story__hidden-navigation-link">API Security in E-commerce: Securing the Digital Marketplace</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2348411" aria-controls="story-author-preview-content-2348411" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2348411" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/api-security-in-e-commerce-securing-the-digital-marketplace-18a0" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-21T16:10:42Z">Mar 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742573442"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/api-security-in-e-commerce-securing-the-digital-marketplace-18a0" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-10-api-security-in-ecommerce-apis%2Fapi-security-in-ecommerce-feature-image-resized.png" id="article-link-2348411"> API Security in E-commerce: Securing the Digital Marketplace </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/api-security-in-e-commerce-securing-the-digital-marketplace-18a0#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - API Security in E-commerce: Securing the Digital Marketplace"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="arb84z1ixgfz5khxvxwbzqwrthw85p4i" class="crayons-icon"><title id="arb84z1ixgfz5khxvxwbzqwrthw85p4i">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2348409" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/the-complete-api-product-management-guide-from-strategy-to-implementation-3mhj" aria-labelledby="article-link-2348409" class="crayons-story__hidden-navigation-link">The Complete API Product Management Guide: From Strategy to Implementation</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2348409" aria-controls="story-author-preview-content-2348409" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2348409" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/the-complete-api-product-management-guide-from-strategy-to-implementation-3mhj" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-21T16:10:26Z">Mar 21</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742573426"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/the-complete-api-product-management-guide-from-strategy-to-implementation-3mhj" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-10-api-product-management-guide%2Fapi-product-management-feature-image-resized.png" id="article-link-2348409"> The Complete API Product Management Guide: From Strategy to Implementation </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/the-complete-api-product-management-guide-from-strategy-to-implementation-3mhj#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - The Complete API Product Management Guide: From Strategy to Implementation"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a2i52oe918zub4ywk11c1qcrzw41wkev" class="crayons-icon"><title id="a2i52oe918zub4ywk11c1qcrzw41wkev">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 14 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342432" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/zero-trust-api-security-never-trust-always-protect-5aoo" aria-labelledby="article-link-2342432" class="crayons-story__hidden-navigation-link">Zero Trust API Security: Never Trust, Always Protect</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342432" aria-controls="story-author-preview-content-2342432" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342432" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/zero-trust-api-security-never-trust-always-protect-5aoo" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:22:02Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368922"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/zero-trust-api-security-never-trust-always-protect-5aoo" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-07-zero-trust-api-security%2F2025-03-07-zero-trust-api-security-feature-image.png" id="article-link-2342432"> Zero Trust API Security: Never Trust, Always Protect </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/zero-trust-api-security-never-trust-always-protect-5aoo#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Zero Trust API Security: Never Trust, Always Protect"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a3b8ryztjsn73i1v011iky9xac7h3sap" class="crayons-icon"><title id="a3b8ryztjsn73i1v011iky9xac7h3sap">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342430" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/securing-your-api-with-oauth-20-a-developers-guide-to-robust-authentication-193k" aria-labelledby="article-link-2342430" class="crayons-story__hidden-navigation-link">Securing Your API With OAuth 2.0: A Developer's Guide to Robust Authentication</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342430" aria-controls="story-author-preview-content-2342430" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342430" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/securing-your-api-with-oauth-20-a-developers-guide-to-robust-authentication-193k" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:21:45Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368905"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/securing-your-api-with-oauth-20-a-developers-guide-to-robust-authentication-193k" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-07-securing-your-api-with-oauth%2F2025-03-07-securing-your-api-with-oauth-feature-image.png" id="article-link-2342430"> Securing Your API With OAuth 2.0: A Developer's Guide to Robust Authentication </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/securing-your-api-with-oauth-20-a-developers-guide-to-robust-authentication-193k" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2342430" aria-label="Add a comment to post - Securing Your API With OAuth 2.0: A Developer's Guide to Robust Authentication"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="https://dev.to/zuplo/securing-your-api-with-oauth-20-a-developers-guide-to-robust-authentication-193k#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Securing Your API With OAuth 2.0: A Developer's Guide to Robust Authentication"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="arq7qjw2h2al2wp10fzvrut8mxhyyijj" class="crayons-icon"><title id="arq7qjw2h2al2wp10fzvrut8mxhyyijj">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 13 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342428" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/session-hijacking-in-the-api-era-your-complete-defense-strategy-3bi5" aria-labelledby="article-link-2342428" class="crayons-story__hidden-navigation-link">Session Hijacking In the API Era: Your Complete Defense Strategy</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342428" aria-controls="story-author-preview-content-2342428" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342428" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/session-hijacking-in-the-api-era-your-complete-defense-strategy-3bi5" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:21:28Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368888"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/session-hijacking-in-the-api-era-your-complete-defense-strategy-3bi5" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-07-prevent-session-hijacking%2F2025-03-07-prevent-session-hijacking-feature-image.png" id="article-link-2342428"> Session Hijacking In the API Era: Your Complete Defense Strategy </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/session-hijacking-in-the-api-era-your-complete-defense-strategy-3bi5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Session Hijacking In the API Era: Your Complete Defense Strategy"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aio50rxvs10165opb9g2kzws8xd8mfo4" class="crayons-icon"><title id="aio50rxvs10165opb9g2kzws8xd8mfo4">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 11 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342427" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/gemini-20-api-ultimate-guide-mastering-googles-advanced-ai-platform-3mip" aria-labelledby="article-link-2342427" class="crayons-story__hidden-navigation-link">Gemini 2.0 API Ultimate Guide: Mastering Google's Advanced AI Platform</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342427" aria-controls="story-author-preview-content-2342427" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342427" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/gemini-20-api-ultimate-guide-mastering-googles-advanced-ai-platform-3mip" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:21:12Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368872"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/gemini-20-api-ultimate-guide-mastering-googles-advanced-ai-platform-3mip" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-07-gemini-2%2FGemini%2520Logo-feature-image.png" id="article-link-2342427"> Gemini 2.0 API Ultimate Guide: Mastering Google's Advanced AI Platform </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/gemini-20-api-ultimate-guide-mastering-googles-advanced-ai-platform-3mip#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Gemini 2.0 API Ultimate Guide: Mastering Google's Advanced AI Platform"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="adgp6y6ktt4u4f00ykm2kr93egbtwpyi" class="crayons-icon"><title id="adgp6y6ktt4u4f00ykm2kr93egbtwpyi">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 6 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342426" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/deepseek-api-complete-guide-mastering-the-deepseek-api-for-developers-450a" aria-labelledby="article-link-2342426" class="crayons-story__hidden-navigation-link">Deepseek API Complete Guide: Mastering the DeepSeek API for Developers</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342426" aria-controls="story-author-preview-content-2342426" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342426" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/deepseek-api-complete-guide-mastering-the-deepseek-api-for-developers-450a" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:20:55Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368855"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/deepseek-api-complete-guide-mastering-the-deepseek-api-for-developers-450a" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-07-deepseek-api%2Fdeepseek-logo-feature-image.png" id="article-link-2342426"> Deepseek API Complete Guide: Mastering the DeepSeek API for Developers </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/deepseek-api-complete-guide-mastering-the-deepseek-api-for-developers-450a#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Deepseek API Complete Guide: Mastering the DeepSeek API for Developers"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="acwh3om05ya4u46xkqy7lt0jze5n2xfh" class="crayons-icon"><title id="acwh3om05ya4u46xkqy7lt0jze5n2xfh">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 8 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342425" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/10-game-changing-strategies-to-supercharge-your-api-gateway-performance-14pf" aria-labelledby="article-link-2342425" class="crayons-story__hidden-navigation-link">10 Game-Changing Strategies to Supercharge Your API Gateway Performance</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342425" aria-controls="story-author-preview-content-2342425" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342425" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/10-game-changing-strategies-to-supercharge-your-api-gateway-performance-14pf" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:20:39Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368839"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/10-game-changing-strategies-to-supercharge-your-api-gateway-performance-14pf" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-06-strategies-to-supercharge-your-api-gateway-performance%2F2025-03-06-strategies-to-supercharge-your-api-gateway-performance-feature-image.png" id="article-link-2342425"> 10 Game-Changing Strategies to Supercharge Your API Gateway Performance </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/apigateway"><span class="crayons-tag__prefix">#</span>apigateway</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/10-game-changing-strategies-to-supercharge-your-api-gateway-performance-14pf#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - 10 Game-Changing Strategies to Supercharge Your API Gateway Performance"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="afhe3dz0dutf55cq8vfivjkin9zwnfro" class="crayons-icon"><title id="afhe3dz0dutf55cq8vfivjkin9zwnfro">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342424" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/unlocking-revenue-streams-strategic-api-monetization-for-media-and-entertainment-2ndo" aria-labelledby="article-link-2342424" class="crayons-story__hidden-navigation-link">Unlocking Revenue Streams: Strategic API Monetization for Media and Entertainment</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342424" aria-controls="story-author-preview-content-2342424" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342424" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/unlocking-revenue-streams-strategic-api-monetization-for-media-and-entertainment-2ndo" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:20:22Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368822"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/unlocking-revenue-streams-strategic-api-monetization-for-media-and-entertainment-2ndo" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-06-strategic-monetization-for-media%2F2025-03-06-strategic-monetization-for-media-feature%2520image.png" id="article-link-2342424"> Unlocking Revenue Streams: Strategic API Monetization for Media and Entertainment </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/unlocking-revenue-streams-strategic-api-monetization-for-media-and-entertainment-2ndo#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Unlocking Revenue Streams: Strategic API Monetization for Media and Entertainment"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aairoiob600vo92kknzmeqxrxn5voz87" class="crayons-icon"><title id="aairoiob600vo92kknzmeqxrxn5voz87">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 9 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342422" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/implementing-content-security-policy-for-api-protection-a-comprehensive-guide-41ka" aria-labelledby="article-link-2342422" class="crayons-story__hidden-navigation-link">Implementing Content Security Policy for API Protection: A Comprehensive Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342422" aria-controls="story-author-preview-content-2342422" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342422" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/implementing-content-security-policy-for-api-protection-a-comprehensive-guide-41ka" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:20:06Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368806"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/implementing-content-security-policy-for-api-protection-a-comprehensive-guide-41ka" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-06-implementing-content-security-policy%2F2025-03-06-implementing-content-security-policy-feature-image.png" id="article-link-2342422"> Implementing Content Security Policy for API Protection: A Comprehensive Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/implementing-content-security-policy-for-api-protection-a-comprehensive-guide-41ka#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Implementing Content Security Policy for API Protection: A Comprehensive Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a9egsuzg5rtgiw3651jkvwtbjwkfihp2" class="crayons-icon"><title id="a9egsuzg5rtgiw3651jkvwtbjwkfihp2">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342420" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/protecting-your-apis-from-insider-threats-the-access-control-playbook-81h" aria-labelledby="article-link-2342420" class="crayons-story__hidden-navigation-link">Protecting Your APIs from Insider Threats: The Access Control Playbook</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342420" aria-controls="story-author-preview-content-2342420" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342420" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/protecting-your-apis-from-insider-threats-the-access-control-playbook-81h" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:19:49Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368789"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/protecting-your-apis-from-insider-threats-the-access-control-playbook-81h" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-06-how-to-protect-apis-from-insider-threats%2F2025-03-06-how-to-protect-apis-from-insider-threats-feature-image.png" id="article-link-2342420"> Protecting Your APIs from Insider Threats: The Access Control Playbook </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/protecting-your-apis-from-insider-threats-the-access-control-playbook-81h#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Protecting Your APIs from Insider Threats: The Access Control Playbook"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="anyccj2ay20j3azge8rd8wtezz5mq7ds" class="crayons-icon"><title id="anyccj2ay20j3azge8rd8wtezz5mq7ds">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 10 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342419" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/how-api-developers-can-use-edge-computing-to-optimize-api-performance-njl" aria-labelledby="article-link-2342419" class="crayons-story__hidden-navigation-link">How API Developers Can Use Edge Computing to Optimize API Performance</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342419" aria-controls="story-author-preview-content-2342419" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342419" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/how-api-developers-can-use-edge-computing-to-optimize-api-performance-njl" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:19:32Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368772"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/how-api-developers-can-use-edge-computing-to-optimize-api-performance-njl" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-06-edge-computing-to-optimize-api-performance%2F2025-03-06-edge-computing-to-optimize-api-performance-feature-image.png" id="article-link-2342419"> How API Developers Can Use Edge Computing to Optimize API Performance </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(28, 28, 28, 0.10); --tag-prefix: #1C1C1C; --tag-bg-hover: rgba(28, 28, 28, 0.10); --tag-prefix-hover: #1C1C1C; " href="/t/serverless"><span class="crayons-tag__prefix">#</span>serverless</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/apigateway"><span class="crayons-tag__prefix">#</span>apigateway</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/how-api-developers-can-use-edge-computing-to-optimize-api-performance-njl#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - How API Developers Can Use Edge Computing to Optimize API Performance"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="apth6ui6buzyl988zvvszr1vf49kmnqh" class="crayons-icon"><title id="apth6ui6buzyl988zvvszr1vf49kmnqh">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 12 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342417" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/building-healthcare-apis-key-points-to-consider-42e0" aria-labelledby="article-link-2342417" class="crayons-story__hidden-navigation-link">Building Healthcare APIs: Key Points to Consider</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342417" aria-controls="story-author-preview-content-2342417" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342417" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/building-healthcare-apis-key-points-to-consider-42e0" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:19:16Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368756"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/building-healthcare-apis-key-points-to-consider-42e0" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-06-building-healthcare-apis%2F2025-03-06-building-healthcare-apis-feature-image.png" id="article-link-2342417"> Building Healthcare APIs: Key Points to Consider </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/building-healthcare-apis-key-points-to-consider-42e0" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2342417" aria-label="Add a comment to post - Building Healthcare APIs: Key Points to Consider"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">6<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="https://dev.to/zuplo/building-healthcare-apis-key-points-to-consider-42e0#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Building Healthcare APIs: Key Points to Consider"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="apnlib1apurkswm127vtokm2377t213c" class="crayons-icon"><title id="apnlib1apurkswm127vtokm2377t213c">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 2<span class="hidden s:inline"> comments</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 13 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342416" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/the-ultimate-guide-to-mitm-attack-prevention-for-api-security-3kl1" aria-labelledby="article-link-2342416" class="crayons-story__hidden-navigation-link">The Ultimate Guide to MITM Attack Prevention for API Security</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342416" aria-controls="story-author-preview-content-2342416" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342416" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/the-ultimate-guide-to-mitm-attack-prevention-for-api-security-3kl1" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:18:59Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368739"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/the-ultimate-guide-to-mitm-attack-prevention-for-api-security-3kl1" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-05-mitm-attack-prevention-guide%2F2025-03-05-mitm-attack-prevention-guide-feature-image.png" id="article-link-2342416"> The Ultimate Guide to MITM Attack Prevention for API Security </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/the-ultimate-guide-to-mitm-attack-prevention-for-api-security-3kl1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - The Ultimate Guide to MITM Attack Prevention for API Security"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ahy8amlmi05zzluddun25fonwknki2rb" class="crayons-icon"><title id="ahy8amlmi05zzluddun25fonwknki2rb">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 14 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342415" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/12-practices-and-tools-to-ensure-api-security-3lek" aria-labelledby="article-link-2342415" class="crayons-story__hidden-navigation-link">12 Practices and Tools to Ensure API Security</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342415" aria-controls="story-author-preview-content-2342415" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342415" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/12-practices-and-tools-to-ensure-api-security-3lek" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:18:43Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368723"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/12-practices-and-tools-to-ensure-api-security-3lek" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-04-practices-and-tools-to-ensure-api-security%2Fimage.png" id="article-link-2342415"> 12 Practices and Tools to Ensure API Security </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(193, 216, 47, 0.10); --tag-prefix: #c1d82f; --tag-bg-hover: rgba(193, 216, 47, 0.10); --tag-prefix-hover: #c1d82f; " href="/t/tooling"><span class="crayons-tag__prefix">#</span>tooling</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/12-practices-and-tools-to-ensure-api-security-3lek#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - 12 Practices and Tools to Ensure API Security"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ao3rng3dhlt54jm5j6bfxl388dal81b7" class="crayons-icon"><title id="ao3rng3dhlt54jm5j6bfxl388dal81b7">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 13 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342413" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/a-holistic-view-on-apis-as-an-ecosystem-442k" aria-labelledby="article-link-2342413" class="crayons-story__hidden-navigation-link">A Holistic View on APIs as an Ecosystem</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342413" aria-controls="story-author-preview-content-2342413" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342413" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/a-holistic-view-on-apis-as-an-ecosystem-442k" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:18:26Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368706"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/a-holistic-view-on-apis-as-an-ecosystem-442k" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-04-holistic-view-of-apis%2Fimage.png" id="article-link-2342413"> A Holistic View on APIs as an Ecosystem </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(193, 216, 47, 0.10); --tag-prefix: #c1d82f; --tag-bg-hover: rgba(193, 216, 47, 0.10); --tag-prefix-hover: #c1d82f; " href="/t/tooling"><span class="crayons-tag__prefix">#</span>tooling</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(235, 223, 55, 0.10); --tag-prefix: #ebdf37; --tag-bg-hover: rgba(235, 223, 55, 0.10); --tag-prefix-hover: #ebdf37; " href="/t/architecture"><span class="crayons-tag__prefix">#</span>architecture</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(41, 190, 176, 0.10); --tag-prefix: #29BEB0; --tag-bg-hover: rgba(41, 190, 176, 0.10); --tag-prefix-hover: #29BEB0; " href="/t/go"><span class="crayons-tag__prefix">#</span>go</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/a-holistic-view-on-apis-as-an-ecosystem-442k#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - A Holistic View on APIs as an Ecosystem"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="arfb2w8x3wnzunakwxdm0de7v54nq3ea" class="crayons-icon"><title id="arfb2w8x3wnzunakwxdm0de7v54nq3ea">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 5 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2342412" data-content-user-id="2222056"> <a href="https://dev.to/zuplo/protecting-sensitive-data-in-api-logs-4nc2" aria-labelledby="article-link-2342412" class="crayons-story__hidden-navigation-link">Protecting Sensitive Data in API Logs</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a class="crayons-logo crayons-logo--l" href="/zuplo"> <img alt="Zuplo logo" src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9445%2F1cec1839-f678-42e3-9019-c2ce84a863f9.png" class="crayons-logo__image" loading="lazy" /> </a> <a href="/adrian_zuplo" class="crayons-avatar crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" alt="adrian_zuplo profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/adrian_zuplo" class="crayons-story__secondary fw-medium m:hidden"> Adrian Machado </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2342412" aria-controls="story-author-preview-content-2342412" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="Adrian Machado profile details"> Adrian Machado </button> <div id="story-author-preview-content-2342412" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/adrian_zuplo" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2222056%2Fb8e6123c-1c51-44bb-9576-9f28d2a5c200.jpg" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">Adrian Machado</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{"style":"full","id":2222056,"className":"User","name":"Adrian Machado"}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="2222056"></div> </div> </div> </div> <span> <span class="crayons-story__tertiary fw-normal"> for </span><a href="/zuplo" class="crayons-story__secondary fw-medium">Zuplo</a> </span> </div> <a href="https://dev.to/zuplo/protecting-sensitive-data-in-api-logs-4nc2" class="crayons-story__tertiary fs-xs"><time datetime="2025-03-19T07:18:10Z">Mar 19</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1742368690"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="https://dev.to/zuplo/protecting-sensitive-data-in-api-logs-4nc2" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcdn.zuplo.com%2Fwww%2Fmedia%2Fposts%2F2025-03-02-protect-sensitive-data-in-api-logs%2Fimage.png" id="article-link-2342412"> Protecting Sensitive Data in API Logs </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(151, 37, 234, 0.10); --tag-prefix: #9725ea; --tag-bg-hover: rgba(151, 37, 234, 0.10); --tag-prefix-hover: #9725ea; " href="/t/api"><span class="crayons-tag__prefix">#</span>api</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="https://dev.to/zuplo/protecting-sensitive-data-in-api-logs-4nc2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Protecting Sensitive Data in API Logs"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a9giezl18lq2rcyhhmq9s9z4g0anu1yb" class="crayons-icon"><title id="a9giezl18lq2rcyhhmq9s9z4g0anu1yb">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 9 min read </small> </div> </div> </div> </div> </div> <div class="placeholder-div"></div> </div> <div class="loading-articles" id="loading-articles"> loading... </div> </main> </div> </main> <script src="https://assets.dev.to/assets/storiesList-b9c50cbd898a3a64258a3a49db1c531651b0a4a11937be35ed4651111802b5b5.js" defer="defer"></script> <script src="https://assets.dev.to/assets/followButtons-f2455d1f50a862b83fa006b1953e3a1644598781243cae25d3e75b13c04184fd.js" defer="defer"></script> <script src="https://assets.dev.to/assets/feedPreviewCards-8d16b0b656456a28c0a290f756cf6e21e19833111c4796f48c631bfea8323d51.js" defer="defer"></script> <script src="https://assets.dev.to/assets/hideBookmarkButtons-0cc08aac1c422e6b6f75e5284b5350215abf211b59fb3eb8d8a4ef85e205b607.js" defer="defer"></script> <script src="https://assets.dev.to/assets/profileDropdown-cd734402b28ba81eaec2ca8b2df8fc3a188ecd37c709ec183e369ca69e461d77.js" defer="defer"></script> <script src="https://assets.dev.to/assets/users/profilePage-1393cb4a2fea4e217cb2a2451f02d7a20ee01da60dc85f128f703631908dab09.js" defer="defer"></script> <script src="https://assets.dev.to/assets/localizeArticleDates-70147c5c6bfe350b42e020ebb2a3dd37419d83978982b5a67b6389119bf162ac.js" defer="defer"></script> <script src="https://assets.dev.to/assets/asyncUserStatusCheck-c38c3dcbc3fa64c8ff9e403434eabaf359c4957d3fb713784cc99144da5d5358.js" defer="defer"></script> <div id="runtime-banner-container"></div> </div> </div> <footer id="footer" class="crayons-footer print-hidden"> <div id="footer-container" class="crayons-footer__container"> <style> .long-bb-body { max-height: calc(100vh - 200px); overflow: hidden; } .long-bb-bottom { height: 180px; background: linear-gradient(to top, var(--card-bg), transparent); margin-top: -180px; position:relative; z-index: 5; } </style> <div style="" data-display-unit data-id="146443" data-category-click="click" data-category-impression="impression" data-context-type="home" data-special="nothing" data-article-id="" data-type-of="in_house"> <p style="font-weight: bold;margin-bottom: 10px"> Thank you to our Diamond Sponsor <a href="https://neon.tech/?bb=146443">Neon</a> for supporting our community. </p> </div> <p class="fs-s crayons-footer__description"> <a class="c-link c-link--branded fw-medium" aria-label="DEV Community Home" href="/">DEV Community</a> — A constructive and inclusive social network for software developers. With you every step of your journey. </p> <ul class="footer__nav-links flex gap-2 justify-center flex-wrap fs-s p-0" style="" /> <li class="footer__nav-link flex items-center"> <a href="/"> Home </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/tags"> Tags </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/about"> About </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/contact"> Contact </a> <span class="dot ml-2"></span> </li> </ul> <ul class="footer__nav-links flex gap-2 justify-center flex-wrap fs-s p-0" style="" /> <li class="footer__nav-link flex items-center"> <a href="/code-of-conduct"> Code of Conduct </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/privacy"> Privacy Policy </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/terms"> Terms of use </a> <span class="dot ml-2"></span> </li> </ul> <div class="fs-s"> <p>Built on <a class="c-link c-link--branded" target="_blank" rel="noopener" href="https://www.forem.com">Forem</a> — the <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to/t/opensource">open source</a> software that powers <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to">DEV</a> and other inclusive communities.</p> <p>Made with love and <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to/t/rails">Ruby on Rails</a>. DEV Community <span title="copyright">©</span> 2016 - 2025.</p> </div> </div> </footer> <div id="snack-zone"></div> <div id="global-signup-modal" class="authentication-modal hidden"> <div class="authentication-modal__container"> <figure class="authentication-modal__image-container"> <img class="authentication-modal__image" src="https://media2.dev.to/dynamic/image/width=190,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" alt="DEV Community" loading="lazy" /> </figure> <div class="authentication-modal__content"> <p class="authentication-modal__description"> We're a place where coders share, stay up-to-date and grow their careers. </p> </div> <div class="authentication-modal__actions"> <a href="/enter" class="crayons-btn" aria-label="Log in" data-no-instant> Log in </a> <a href="/enter?state=new-user" class="crayons-btn crayons-btn--ghost-brand js-global-signup-modal__create-account" aria-label="Create new account" data-no-instant> Create account </a> </div> </div> </div> <script src="https://assets.dev.to/assets/signupModalShortcuts-0b25469b985100a01e94cbd7fccaf7f0a4d776e129aac65c766aa32cb28ab29a.js" defer="defer"></script> <div id="cookie-consent"></div> <div id="i18n-translations" data-translations="{"en":{"core":{"add_comment":"Add comment","beta":"beta","comment":"Comment","copy_link":"Copy link","edit_profile":"Edit profile","follow":"Follow","follow_back":"Follow back","following":"Following","like":"Like","loading":"loading...","reaction":"Reaction","report_abuse":"Report abuse","search":"Search","success_settings":"Successfully updated settings.","counted_organization":{"one":"%{count} organization","other":"%{count} organizations"},"counted_user":{"one":"%{count} person","other":"%{count} people"},"not_following":"You're not following anyone","following_everyone":"You're following %{details} (everyone)","you_are_following":"You're following","and":"and"}}}"></div> <div id="reaction-category-resources" class="hidden" aria-hidden="true"> <img data-name="Like" data-slug="like" data-position="1" src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> <img data-name="Unicorn" data-slug="unicorn" data-position="2" src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> <img data-name="Exploding Head" data-slug="exploding_head" data-position="3" src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> <img data-name="Raised Hands" data-slug="raised_hands" data-position="4" src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> <img data-name="Fire" data-slug="fire" data-position="5" src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </div> <script> var userSignedIn = false; if (document.readyState === 'complete' || document.readyState === 'interactive') { initAuth(); } else { document.addEventListener('DOMContentLoaded', initAuth); } function initAuth() { var paramToken = new URLSearchParams(window.location.search).get('jwt'); if (paramToken && !userSignedIn) { authenticateUser(paramToken); } else { var iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.src = 'https://forem.com/auth_pass/iframe'; document.body.appendChild(iframe); window.addEventListener('message', function(event) { if (event.origin !== 'https://forem.com' && event.origin !== window.location.origin) { return; } var data = event.data; if (data.authenticated && !userSignedIn) { authenticateUser(data.token); } else if(data.authenticated && window.ReactNativeWebView && window.ReactNativeWebView.postMessage) { window.ReactNativeWebView.postMessage(JSON.stringify({ action: 'login', token: data.token, })); } }); } function authenticateUser(token) { fetch('/auth_pass/token_login', { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': getMetaContent('csrf-token'), }, body: JSON.stringify({ token: token }), }) .then(function(response) { return response.json(); }) .then(function(data) { if (data.success) { if (document.head.querySelector('meta[name="user-signed-in"][content="false"]')) { // Reload the page to update the user's state location.reload(); } } }) .catch(function(error) { console.error('Error during authentication:', error); }); } function getMetaContent(name) { var element = document.querySelector('meta[name="' + name + '"]'); return element ? element.getAttribute('content') : ''; } } </script> </body> </html>