{"id":278797,"date":"2026-05-13T09:43:39","date_gmt":"2026-05-13T07:43:39","guid":{"rendered":"https:\/\/www.unipile.com\/?p=278797"},"modified":"2026-05-13T14:59:33","modified_gmt":"2026-05-13T12:59:33","slug":"api-de-correo-electronico-para-desarrolladores","status":"publish","type":"post","link":"https:\/\/www.unipile.com\/es\/email-api-for-developers\/","title":{"rendered":"API de correo electr\u00f3nico para desarrolladores: Crea con Gmail, Outlook e IMAP (Gu\u00eda 2026)"},"content":{"rendered":"\n[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-toc {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 40px 20px 0px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc *,<!-- [et_pb_line_break_holder] -->#unipile-edev-toc *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-toc *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e2e5ea !important;<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-header {<!-- [et_pb_line_break_holder] -->  padding: 14px 20px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 10px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid #f0f1f3 !important;<!-- [et_pb_line_break_holder] -->  background: #f8fafc !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-header-label {<!-- [et_pb_line_break_holder] -->  font-size: 0.72rem !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.8px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-header svg {<!-- [et_pb_line_break_holder] -->  width: 14px !important;<!-- [et_pb_line_break_holder] -->  height: 14px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(4, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 6px 10px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-col {<!-- [et_pb_line_break_holder] -->  padding: 12px 12px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-col + .toc-col {<!-- [et_pb_line_break_holder] -->  border-left: 1px solid #f0f1f3 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-col-label {<!-- [et_pb_line_break_holder] -->  font-size: 0.52rem !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #94a3b8 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 1px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 6px !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-item {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 7px !important;<!-- [et_pb_line_break_holder] -->  padding: 5px 6px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  transition: background 0.15s ease !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 2px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-item:hover {<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.06) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-num {<!-- [et_pb_line_break_holder] -->  width: 18px !important;<!-- [et_pb_line_break_holder] -->  height: 18px !important;<!-- [et_pb_line_break_holder] -->  min-width: 18px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 5px !important;<!-- [et_pb_line_break_holder] -->  background: #f1f5f9 !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  font-size: 0.55rem !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-toc .toc-item-label {<!-- [et_pb_line_break_holder] -->  font-size: 0.68rem !important;<!-- [et_pb_line_break_holder] -->  font-weight: 500 !important;<!-- [et_pb_line_break_holder] -->  color: #374151 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.3 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 1000px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-grid { grid-template-columns: repeat(2, 1fr) !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-col:nth-child(3) { border-left: none !important; border-top: 1px solid #f0f1f3 !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-col:nth-child(4) { border-top: 1px solid #f0f1f3 !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 700px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-grid { display: none !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-mobile-toggle {<!-- [et_pb_line_break_holder] -->    display: flex !important;<!-- [et_pb_line_break_holder] -->    align-items: center !important;<!-- [et_pb_line_break_holder] -->    justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->    padding: 14px 20px !important;<!-- [et_pb_line_break_holder] -->    cursor: pointer !important;<!-- [et_pb_line_break_holder] -->    font-size: 0.75rem !important;<!-- [et_pb_line_break_holder] -->    font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->    color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-mobile-toggle svg {<!-- [et_pb_line_break_holder] -->    width: 14px !important; height: 14px !important;<!-- [et_pb_line_break_holder] -->    stroke: #64748b !important; fill: none !important; stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->    transition: transform 0.25s !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-mobile-list {<!-- [et_pb_line_break_holder] -->    display: none !important;<!-- [et_pb_line_break_holder] -->    padding: 0 12px 12px !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-mobile-list.open { display: block !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-mobile-item {<!-- [et_pb_line_break_holder] -->    display: flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->    padding: 7px 8px !important; border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->    font-size: 0.75rem !important; font-weight: 500 !important; color: #374151 !important;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (min-width: 701px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-mobile-toggle { display: none !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-toc .toc-mobile-list { display: none !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-toc\"><!-- [et_pb_line_break_holder] -->  <div class=\"toc-wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"toc-card\"><!-- [et_pb_line_break_holder] -->      <div class=\"toc-header\"><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"\/><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"\/><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"\/><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"\/><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"\/><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"\/><\/svg><!-- [et_pb_line_break_holder] -->        <span class=\"toc-header-label\">Table of Contents<\/span><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <!-- Mobile toggle --><!-- [et_pb_line_break_holder] -->      <div class=\"toc-mobile-toggle\" id=\"edev-toc-toggle\"><!-- [et_pb_line_break_holder] -->        <span>Table of Contents<\/span><!-- [et_pb_line_break_holder] -->        <svg viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\" id=\"edev-toc-chevron\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"toc-mobile-list\" id=\"edev-toc-mobile\"><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-what\"><span class=\"toc-num\">01<\/span><span class=\"toc-item-label\">What is an Email API?<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-why\"><span class=\"toc-num\">02<\/span><span class=\"toc-item-label\">Why Developers Need One<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-native\"><span class=\"toc-num\">03<\/span><span class=\"toc-item-label\">Native APIs Compared<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-buildvsbuy\"><span class=\"toc-num\">04<\/span><span class=\"toc-item-label\">Build vs Buy<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-oauth\"><span class=\"toc-num\">05<\/span><span class=\"toc-item-label\">OAuth 2.0 Essentials<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-sdks\"><span class=\"toc-num\">06<\/span><span class=\"toc-item-label\">SDKs &#038; Tooling<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-pricing\"><span class=\"toc-num\">07<\/span><span class=\"toc-item-label\">Pricing for Developers<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-security\"><span class=\"toc-num\">08<\/span><span class=\"toc-item-label\">Security &#038; Compliance<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-pitfalls\"><span class=\"toc-num\">09<\/span><span class=\"toc-item-label\">Common Pitfalls<\/span><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-mobile-item\" data-upl-link=\"#edev-faq\"><span class=\"toc-num\">10<\/span><span class=\"toc-item-label\">FAQ<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <!-- Desktop grid --><!-- [et_pb_line_break_holder] -->      <div class=\"toc-grid\"><!-- [et_pb_line_break_holder] -->        <div class=\"toc-col\"><!-- [et_pb_line_break_holder] -->          <span class=\"toc-col-label\">Foundations<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-what\"><span class=\"toc-num\">01<\/span><span class=\"toc-item-label\">What is an Email API?<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-why\"><span class=\"toc-num\">02<\/span><span class=\"toc-item-label\">Why Developers Need One<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-native\"><span class=\"toc-num\">03<\/span><span class=\"toc-item-label\">Native APIs Compared<\/span><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-col\"><!-- [et_pb_line_break_holder] -->          <span class=\"toc-col-label\">Integration<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-buildvsbuy\"><span class=\"toc-num\">04<\/span><span class=\"toc-item-label\">Build vs Buy<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-oauth\"><span class=\"toc-num\">05<\/span><span class=\"toc-item-label\">OAuth 2.0 Essentials<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-sdks\"><span class=\"toc-num\">06<\/span><span class=\"toc-item-label\">SDKs &#038; Tooling<\/span><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-col\"><!-- [et_pb_line_break_holder] -->          <span class=\"toc-col-label\">Operations<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-pricing\"><span class=\"toc-num\">07<\/span><span class=\"toc-item-label\">Pricing for Developers<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-security\"><span class=\"toc-num\">08<\/span><span class=\"toc-item-label\">Security &#038; Compliance<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-pitfalls\"><span class=\"toc-num\">09<\/span><span class=\"toc-item-label\">Common Pitfalls<\/span><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"toc-col\"><!-- [et_pb_line_break_holder] -->          <span class=\"toc-col-label\">Reference<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"toc-item\" data-upl-link=\"#edev-faq\"><span class=\"toc-num\">10<\/span><span class=\"toc-item-label\">FAQ<\/span><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    var toggle = document.getElementById('edev-toc-toggle');<!-- [et_pb_line_break_holder] -->    var list = document.getElementById('edev-toc-mobile');<!-- [et_pb_line_break_holder] -->    var chevron = document.getElementById('edev-toc-chevron');<!-- [et_pb_line_break_holder] -->    if(toggle && list){<!-- [et_pb_line_break_holder] -->      toggle.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->        var open = list.classList.toggle('open');<!-- [et_pb_line_break_holder] -->        if(chevron) chevron.style.transform = open ? 'rotate(180deg)' : '';<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    var items = document.querySelectorAll('#unipile-edev-toc [data-upl-link]');<!-- [et_pb_line_break_holder] -->    items.forEach(function(el){<!-- [et_pb_line_break_holder] -->      el.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->        var target = el.getAttribute('data-upl-link');<!-- [et_pb_line_break_holder] -->        var anchor = document.querySelector(target);<!-- [et_pb_line_break_holder] -->        if(anchor){ anchor.scrollIntoView({behavior:'smooth', block:'start'}); }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->      el.style.cursor = 'pointer';<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(document.readyState==='loading'){<!-- [et_pb_line_break_holder] -->    document.addEventListener('DOMContentLoaded', init);<!-- [et_pb_line_break_holder] -->  } else { init(); }<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; sticky_enabled=&#8221;0&#8243;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-hero {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 60px 20px 70px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero *,<!-- [et_pb_line_break_holder] -->#unipile-edev-hero *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-hero *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1160px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: 1.15fr 1fr !important;<!-- [et_pb_line_break_holder] -->  gap: 56px !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-eyebrow-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-h1 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 44px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.18 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-h1-accent {<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-desc {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-meta {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->  gap: 14px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 22px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .meta-item {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 6px !important;<!-- [et_pb_line_break_holder] -->  font-size: 0.8rem !important;<!-- [et_pb_line_break_holder] -->  color: #718096 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .meta-item svg {<!-- [et_pb_line_break_holder] -->  width: 14px !important;<!-- [et_pb_line_break_holder] -->  height: 14px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  vertical-align: middle !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .meta-sep {<!-- [et_pb_line_break_holder] -->  width: 4px !important;<!-- [et_pb_line_break_holder] -->  height: 4px !important;<!-- [et_pb_line_break_holder] -->  background: #cbd5e0 !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-tags {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 32px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-tag {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  color: #4a5568 !important;<!-- [et_pb_line_break_holder] -->  padding: 5px 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->  font-size: 0.75rem !important;<!-- [et_pb_line_break_holder] -->  font-weight: 500 !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e2e8f0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .hero-actions {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->  gap: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .cta-primary {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 14px 28px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 0.95rem !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .cta-primary:hover {<!-- [et_pb_line_break_holder] -->  transform: translateY(-5px) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .cta-primary svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important;<!-- [et_pb_line_break_holder] -->  height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .cta-secondary {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 24px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-size: 0.95rem !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .cta-secondary:hover {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .cta-secondary svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important;<!-- [et_pb_line_break_holder] -->  height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Code editor mockup *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .code-wrapper {<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  box-shadow: 0 24px 48px rgba(15,39,54,0.18) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .editor-bar {<!-- [et_pb_line_break_holder] -->  background: #161b22 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 18px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(255,255,255,0.06) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .dot {<!-- [et_pb_line_break_holder] -->  width: 12px !important;<!-- [et_pb_line_break_holder] -->  height: 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .dot-r { background: #ff5f57 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .dot-y { background: #febc2e !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .dot-g { background: #28c840 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .filename {<!-- [et_pb_line_break_holder] -->  color: #8b949e !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  margin-left: 6px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .pre {<!-- [et_pb_line_break_holder] -->  padding: 22px 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.8 !important;<!-- [et_pb_line_break_holder] -->  overflow-x: auto !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .pre .line {<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  white-space: pre !important;<!-- [et_pb_line_break_holder] -->  color: #e6edf3 !important;<!-- [et_pb_line_break_holder] -->  min-height: 1.8em !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .pre .line-blank {<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->  min-height: 1.8em !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .c { color: #8b949e !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .k { color: #ff7b72 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .fn { color: #d2a8ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .s { color: #a5d6ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .n { color: #79c0ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .w { color: #e6edf3 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .editor-ok {<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.10) !important;<!-- [et_pb_line_break_holder] -->  border-top: 1px solid rgba(59,185,139,0.25) !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  padding: 11px 24px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12.5px !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .editor-ok svg {<!-- [et_pb_line_break_holder] -->  width: 14px !important;<!-- [et_pb_line_break_holder] -->  height: 14px !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->  display: inline-block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .providers-strip {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 12px !important;<!-- [et_pb_line_break_holder] -->  padding: 14px 20px !important;<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border-top: 1px solid #e8ecf0 !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .providers-strip img {<!-- [et_pb_line_break_holder] -->  width: 20px !important;<!-- [et_pb_line_break_holder] -->  height: 20px !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-hero .providers-label {<!-- [et_pb_line_break_holder] -->  font-size: 0.72rem !important;<!-- [et_pb_line_break_holder] -->  color: #94a3b8 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 500 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero { padding: 50px 20px 60px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero .hero-wrap { grid-template-columns: 1fr !important; gap: 40px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero .hero-h1 { font-size: 34px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero { padding: 40px 16px 50px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero .hero-h1 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero .hero-actions { flex-direction: column !important; align-items: stretch !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero .cta-primary,<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero .cta-secondary { justify-content: center !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 400px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-hero .hero-h1 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-hero\"><!-- [et_pb_line_break_holder] -->  <div class=\"hero-wrap\"><!-- [et_pb_line_break_holder] -->    <!-- Left: content --><!-- [et_pb_line_break_holder] -->    <div class=\"hero-content\"><!-- [et_pb_line_break_holder] -->      <div class=\"hero-eyebrow\"><span class=\"hero-eyebrow-dot\"><\/span><span>Developer Guide 2026<\/span><\/div><!-- [et_pb_line_break_holder] -->      <h1 class=\"hero-h1\">Email API for Developers:<!\u2013- [et_pb_br_holder] -\u2013><span class=\"hero-h1-accent\">Build with Gmail, Outlook &#038; IMAP<\/span><\/h1><!-- [et_pb_line_break_holder] -->      <pee class=\"hero-desc\">A practical reference for developers building email integrations: compare Gmail API, Microsoft Graph, and IMAP, then see how a unified email API for developers cuts weeks of boilerplate into a single REST call.<\/pee><!-- [et_pb_line_break_holder] -->      <!-- [et_pb_line_break_holder] -->      <!-- [et_pb_line_break_holder] -->      <div class=\"hero-actions\"><!-- [et_pb_line_break_holder] -->        <span class=\"cta-primary\" data-upl-link=\"https:\/\/dashboard.unipile.com\/signup\/\" data-upl-target=\"_blank\"><svg viewBox=\"0 0 24 24\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg><span>Build with Unipile &#8211; Free<\/span><\/span><!-- [et_pb_line_break_holder] -->        <span class=\"cta-secondary\" data-upl-link=\"https:\/\/developer.unipile.com\/docs\/\" data-upl-target=\"_blank\"><svg viewBox=\"0 0 24 24\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><\/svg><span>Read the Docs<\/span><\/span><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->    <!-- Right: code mockup --><!-- [et_pb_line_break_holder] -->    <div class=\"hero-code\"><!-- [et_pb_line_break_holder] -->      <div class=\"code-wrapper\"><!-- [et_pb_line_break_holder] -->        <div class=\"editor-bar\"><!-- [et_pb_line_break_holder] -->          <span class=\"dot dot-r\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"dot dot-y\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"dot dot-g\"><\/span><!-- [et_pb_line_break_holder] -->          <span class=\"filename\">email-integration.js<\/span><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"pre\"><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"c\">\/\/ Unified email API for developers<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"c\">\/\/ Read emails from Gmail, Outlook &#038; IMAP<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line-blank\"><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"k\">const<\/span><span class=\"w\"> unipile <\/span><span class=\"k\">=<\/span><span class=\"w\"> <\/span><span class=\"fn\">require<\/span><span class=\"w\">(<\/span><span class=\"s\">&#8216;@unipile\/node-sdk&#8217;<\/span><span class=\"w\">);<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line-blank\"><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"k\">const<\/span><span class=\"w\"> client <\/span><span class=\"k\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"fn\">unipile.UnipileClient<\/span><span class=\"w\">(<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">  <\/span><span class=\"s\">&#8216;https:\/\/api7.unipile.com:13091&#8217;<\/span><span class=\"w\">,<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">  <\/span><span class=\"s\">&#8216;YOUR_ACCESS_TOKEN&#8217;<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">);<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line-blank\"><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"c\">\/\/ List all emails, any provider<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"k\">const<\/span><span class=\"w\"> emails <\/span><span class=\"k\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">await<\/span><span class=\"w\"> client.email.<\/span><span class=\"fn\">listAll<\/span><span class=\"w\">({<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">  account_id: <\/span><span class=\"s\">&#8216;acc_gmail_xyz&#8217;<\/span><span class=\"w\">,<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">  limit: <\/span><span class=\"n\">20<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">});<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line-blank\"><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"c\">\/\/ Send email (same API, any provider)<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"k\">await<\/span><span class=\"w\"> client.email.<\/span><span class=\"fn\">send<\/span><span class=\"w\">({<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">  account_id: <\/span><span class=\"s\">&#8216;acc_outlook_abc&#8217;<\/span><span class=\"w\">,<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">  to: <\/span><span class=\"s\">&#8216;user@example.com&#8217;<\/span><span class=\"w\">,<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">  subject: <\/span><span class=\"s\">&#8216;Hello from Unipile&#8217;<\/span><span class=\"w\">,<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">  body: <\/span><span class=\"s\">&#8216;Your email API is live.&#8217;<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"line\"><span class=\"w\">});<\/span><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"editor-ok\"><!-- [et_pb_line_break_holder] -->          <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#3BB98B\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><!-- [et_pb_line_break_holder] -->          <span>200 OK &#8211; emails retrieved across all providers<\/span><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"providers-strip\"><!-- [et_pb_line_break_holder] -->          <span class=\"providers-label\">Works with:<\/span><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/gmail-3.svg\" alt=\"Gmail\" width=\"20\" height=\"20\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/outlook-2.svg\" alt=\"Outlook\" width=\"20\" height=\"20\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/imap-1.svg\" alt=\"IMAP\" width=\"20\" height=\"20\"><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    document.querySelectorAll('#unipile-edev-hero [data-upl-link]').forEach(function(el){<!-- [et_pb_line_break_holder] -->      el.style.cursor='pointer';<!-- [et_pb_line_break_holder] -->      el.addEventListener('click',function(){<!-- [et_pb_line_break_holder] -->        var url=el.getAttribute('data-upl-link');<!-- [et_pb_line_break_holder] -->        var t=el.getAttribute('data-upl-target');<!-- [et_pb_line_break_holder] -->        if(t==='_blank'){window.open(url,'_blank');}else{window.location.href=url;}<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; sticky_enabled=&#8221;0&#8243;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-what {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what *,<!-- [et_pb_line_break_holder] -->#unipile-edev-what *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-what *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .eyebrow-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .section-intro {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .def-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 32px 36px !important;<!-- [et_pb_line_break_holder] -->  border-left: 4px solid #3BB98B !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .def-label {<!-- [et_pb_line_break_holder] -->  font-size: 0.72rem !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 1px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .def-text {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.8 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 500 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .def-text strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .def-note {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.7 !important;<!-- [et_pb_line_break_holder] -->  margin-top: 14px !important;<!-- [et_pb_line_break_holder] -->  padding-top: 14px !important;<!-- [et_pb_line_break_holder] -->  border-top: 1px solid #f0f1f3 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .context-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(3, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  margin-top: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .ctx-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border-radius: 12px !important;<!-- [et_pb_line_break_holder] -->  padding: 22px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .ctx-icon {<!-- [et_pb_line_break_holder] -->  width: 38px !important;<!-- [et_pb_line_break_holder] -->  height: 38px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 10px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .ctx-icon svg {<!-- [et_pb_line_break_holder] -->  width: 18px !important;<!-- [et_pb_line_break_holder] -->  height: 18px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .ctx-title {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 6px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-what .ctx-body {<!-- [et_pb_line_break_holder] -->  font-size: 13.5px !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.65 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-what { padding: 50px 20px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-what h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-what .context-grid { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-what { padding: 40px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-what h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-what .def-card { padding: 22px 20px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-what\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-what\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"eyebrow\"><span class=\"eyebrow-dot\"><\/span><span>Definition<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>What is an email API for developers?<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"section-intro\">Before comparing providers and writing code, here is the precise definition that search engines and your teammates both need.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"def-card\"><!-- [et_pb_line_break_holder] -->      <span class=\"def-label\">Snippet definition<\/span><!-- [et_pb_line_break_holder] -->      <pee class=\"def-text\">An <strong>email API for developers<\/strong> is a programmatic interface that lets your application authenticate as a user, then read, send, or manage that user&#8217;s emails directly inside Gmail, Outlook, or any IMAP mailbox &#8211; without ever handling their password. The API authenticates via OAuth 2.0 (or IMAP credentials), returns structured JSON responses, and fires webhooks when new mail arrives. It is categorically different from a transactional email API (SendGrid, Mailgun), which sends marketing or notification mail <em>on your brand&#8217;s behalf<\/em> &#8211; an email API for developers acts <em>on behalf of your user<\/em>, inside their existing mailbox.<\/pee><!-- [et_pb_line_break_holder] -->      <pee class=\"def-note\">In practice: a SaaS helpdesk uses an email API to pull support tickets directly from a customer&#8217;s Gmail inbox. A CRM uses it to sync every email thread a sales rep exchanges with a prospect. An AI agent uses it to read, classify, and draft replies inside a user&#8217;s Outlook account. These are sync-side, OAuth user-side integrations &#8211; not mass-sending pipelines.<\/pee><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"context-grid\"><!-- [et_pb_line_break_holder] -->      <div class=\"ctx-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-title\">Read emails<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-body\">List, fetch, search and paginate through a user&#8217;s inbox, sent items, or any label\/folder &#8211; across providers with a single unified schema.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ctx-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-icon\"><svg viewBox=\"0 0 24 24\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"\/><polygon points=\"22 2 15 22 11 13 2 9 22 2\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-title\">Send emails<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-body\">Compose and send from the user&#8217;s linked account &#8211; Gmail, Outlook, or IMAP &#8211; with attachments, HTML body, reply-to threading, and CC\/BCC support.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"ctx-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"\/><path d=\"M13.73 21a2 2 0 0 1-3.46 0\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-title\">Receive webhooks<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"ctx-body\">Subscribe to real-time new-email events. No polling. Unipile normalizes Gmail push notifications and Microsoft Graph subscriptions into one unified webhook format.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; sticky_enabled=&#8221;0&#8243;]<!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-why {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 0px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why *,<!-- [et_pb_line_break_holder] -->#unipile-edev-why *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-why *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .wrap {<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  padding: 50px 48px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(221,223,76,0.18) !important;<!-- [et_pb_line_break_holder] -->  color: #8a8c2e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .eyebrow-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .section-intro {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 40px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .use-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(2, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .use-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 26px !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .use-icon-row {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 14px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .use-icon {<!-- [et_pb_line_break_holder] -->  width: 42px !important;<!-- [et_pb_line_break_holder] -->  height: 42px !important;<!-- [et_pb_line_break_holder] -->  min-width: 42px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 12px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: center !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .use-icon svg {<!-- [et_pb_line_break_holder] -->  width: 20px !important;<!-- [et_pb_line_break_holder] -->  height: 20px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .use-title {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .use-body {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.7 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .use-body strong {<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .not-for-box {<!-- [et_pb_line_break_holder] -->  background: rgba(221,223,76,0.10) !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid rgba(221,223,76,0.35) !important;<!-- [et_pb_line_break_holder] -->  border-radius: 12px !important;<!-- [et_pb_line_break_holder] -->  padding: 18px 22px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 14px !important;<!-- [et_pb_line_break_holder] -->  align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .not-for-icon {<!-- [et_pb_line_break_holder] -->  width: 22px !important;<!-- [et_pb_line_break_holder] -->  height: 22px !important;<!-- [et_pb_line_break_holder] -->  min-width: 22px !important;<!-- [et_pb_line_break_holder] -->  margin-top: 1px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .not-for-icon svg {<!-- [et_pb_line_break_holder] -->  width: 22px !important;<!-- [et_pb_line_break_holder] -->  height: 22px !important;<!-- [et_pb_line_break_holder] -->  stroke: #8a8c2e !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .not-for-text {<!-- [et_pb_line_break_holder] -->  font-size: 13.5px !important;<!-- [et_pb_line_break_holder] -->  color: #6b6b2e !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.65 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-why .not-for-text strong {<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #5a5a20 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-why .wrap { padding: 36px 24px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-why h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-why .use-grid { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-why .wrap { padding: 28px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-why h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-why\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-why\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"eyebrow\"><span class=\"eyebrow-dot\"><\/span><span>Use Cases<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Why developers need an email API integration<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"section-intro\">These are the four product categories where an email API for developers delivers direct business value &#8211; reading and acting on real user emails, not sending bulk blasts.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"use-grid\"><!-- [et_pb_line_break_holder] -->      <div class=\"use-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"use-icon-row\"><!-- [et_pb_line_break_holder] -->          <div class=\"use-icon\"><svg viewBox=\"0 0 24 24\"><rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"\/><line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"\/><line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"use-title\">SaaS inbox sync<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"use-body\">CRMs, helpdesks, and project management tools need <strong>live access to a user&#8217;s mailbox<\/strong>. Your app authenticates once via OAuth, then reads, threads, and surfaces emails directly in your UI &#8211; no copy-paste, no forward rules. The email API integration runs in the background, keeping your data fresh.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"use-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"use-icon-row\"><!-- [et_pb_line_break_holder] -->          <div class=\"use-icon\"><svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14M4.93 4.93a10 10 0 0 0 0 14.14M1 12h2M21 12h2M12 1v2M12 21v2\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"use-title\">AI agents reading user emails<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"use-body\">LLM-powered agents need to <strong>read and classify real emails<\/strong> to draft replies, extract entities, trigger workflows, or route tickets. An email API for developers gives your AI agent structured JSON access to the inbox &#8211; subject, body, attachments, headers &#8211; without building a custom mail client.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"use-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"use-icon-row\"><!-- [et_pb_line_break_holder] -->          <div class=\"use-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07A19.5 19.5 0 0 1 4.69 13.5 19.79 19.79 0 0 1 1.54 4.9 2 2 0 0 1 3.5 2.7h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L7.91 9.4A16 16 0 0 0 16 17.46l1.35-1.35a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 24 17.92\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"use-title\">Helpdesk &#038; ticket automation<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"use-body\">Pull support emails directly from <strong>customer mailboxes or shared inboxes<\/strong>, tag them by topic, assign agents, and post replies &#8211; all programmatically. The email API integration replaces brittle SMTP polling with a proper REST interface and real-time webhooks.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"use-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"use-icon-row\"><!-- [et_pb_line_break_holder] -->          <div class=\"use-icon\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"10\"\/><line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"4\"\/><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"16\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"use-title\">CRM enrichment &#038; outreach tracking<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"use-body\">Log every email a sales rep sends or receives against the right contact or deal. Track open\/reply status at the thread level. Keep your CRM in sync with <strong>real conversation history<\/strong> without asking reps to BCC a magic address. Pure email api integration &#8211; user-side, OAuth-based, on behalf of each individual rep.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"not-for-box\"><!-- [et_pb_line_break_holder] -->      <div class=\"not-for-icon\"><svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <pee class=\"not-for-text\"><strong>This is NOT for transactional email.<\/strong> If your use case is sending password resets, order confirmations, or newsletters from your own domain &#8211; that is the transactional market (SendGrid, Mailgun, Resend). Unipile&#8217;s email API for developers addresses the sync\/read\/write-on-behalf-of-user market: different infrastructure, different compliance requirements, different pricing model.<\/pee><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-native {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native *,<!-- [et_pb_line_break_holder] -->#unipile-edev-native *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-native *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .eyebrow-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important;<!-- [et_pb_line_break_holder] -->  height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .section-intro {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important;<!-- [et_pb_line_break_holder] -->  color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 40px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .provider-cards {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: repeat(3, 1fr) !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 40px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .prov-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 28px !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .prov-header {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 14px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->  padding-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid #f0f1f3 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .prov-logo {<!-- [et_pb_line_break_holder] -->  width: 36px !important;<!-- [et_pb_line_break_holder] -->  height: 36px !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .prov-name {<!-- [et_pb_line_break_holder] -->  font-size: 16px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .prov-api-name {<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->  margin-top: 2px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .prov-badge {<!-- [et_pb_line_break_holder] -->  margin-left: auto !important;<!-- [et_pb_line_break_holder] -->  padding: 4px 10px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .badge-google {<!-- [et_pb_line_break_holder] -->  background: rgba(234,67,53,0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #c5332a !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .badge-ms {<!-- [et_pb_line_break_holder] -->  background: rgba(0,120,212,0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #0078d4 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .badge-imap {<!-- [et_pb_line_break_holder] -->  background: rgba(100,116,139,0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #475569 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .spec-list {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  flex-direction: column !important;<!-- [et_pb_line_break_holder] -->  gap: 10px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .spec-row {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 10px !important;<!-- [et_pb_line_break_holder] -->  align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .spec-check {<!-- [et_pb_line_break_holder] -->  width: 16px !important;<!-- [et_pb_line_break_holder] -->  height: 16px !important;<!-- [et_pb_line_break_holder] -->  min-width: 16px !important;<!-- [et_pb_line_break_holder] -->  margin-top: 2px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .spec-check svg {<!-- [et_pb_line_break_holder] -->  width: 16px !important;<!-- [et_pb_line_break_holder] -->  height: 16px !important;<!-- [et_pb_line_break_holder] -->  stroke: #3BB98B !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .spec-check.warn svg {<!-- [et_pb_line_break_holder] -->  stroke: #f59e0b !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .spec-check.no svg {<!-- [et_pb_line_break_holder] -->  stroke: #ef4444 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .spec-label {<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  color: #374151 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .spec-label strong {<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Comparison table *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-native .comp-table-wrap {<!-- [et_pb_line_break_holder] -->  overflow-x: auto !important;<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native table {<!-- [et_pb_line_break_holder] -->  width: 100% !important;<!-- [et_pb_line_break_holder] -->  border-collapse: collapse !important;<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native thead tr {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native thead th {<!-- [et_pb_line_break_holder] -->  padding: 16px 18px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #ffffff !important;<!-- [et_pb_line_break_holder] -->  text-align: left !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native thead th:first-child {<!-- [et_pb_line_break_holder] -->  border-radius: 13px 0 0 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native thead th:last-child {<!-- [et_pb_line_break_holder] -->  border-radius: 0 13px 0 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native tbody tr {<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid #f0f1f3 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native tbody tr:last-child {<!-- [et_pb_line_break_holder] -->  border-bottom: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native tbody tr:hover {<!-- [et_pb_line_break_holder] -->  background: #f8fafc !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native tbody td {<!-- [et_pb_line_break_holder] -->  padding: 14px 18px !important;<!-- [et_pb_line_break_holder] -->  font-size: 13.5px !important;<!-- [et_pb_line_break_holder] -->  color: #374151 !important;<!-- [et_pb_line_break_holder] -->  vertical-align: top !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native tbody td:first-child {<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .td-green { color: #2aaa7e !important; font-weight: 600 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-native .td-yellow { color: #8a7200 !important; font-weight: 600 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-native .td-red { color: #dc2626 !important; font-weight: 600 !important; }<!-- [et_pb_line_break_holder] -->\/* CTA inline *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-native .cta-strip {<!-- [et_pb_line_break_holder] -->  margin-top: 36px !important;<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important;<!-- [et_pb_line_break_holder] -->  border-radius: 14px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .cta-strip-text {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .cta-strip-sub {<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->  margin-top: 4px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 24px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.2s ease !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-native .cta-btn:hover { transform: translateY(-5px) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-native .cta-btn svg {<!-- [et_pb_line_break_holder] -->  width: 14px !important;<!-- [et_pb_line_break_holder] -->  height: 14px !important;<!-- [et_pb_line_break_holder] -->  stroke: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important;<!-- [et_pb_line_break_holder] -->  stroke-linecap: round !important;<!-- [et_pb_line_break_holder] -->  stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-native { padding: 50px 20px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-native h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-native .provider-cards { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-native .cta-strip { flex-direction: column !important; align-items: flex-start !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-native { padding: 40px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-native h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-native\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-native\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"eyebrow\"><span class=\"eyebrow-dot\"><\/span><span>Native APIs<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Gmail API, Microsoft Graph, and IMAP compared<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"section-intro\">Every email API integration starts with one of three native providers. Here is what each one offers and where each one creates friction for developers.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"provider-cards\"><!-- [et_pb_line_break_holder] -->      <!-- Gmail --><!-- [et_pb_line_break_holder] -->      <div class=\"prov-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"prov-header\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" class=\"prov-logo\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/gmail-3.svg\" alt=\"Gmail logo\"><!-- [et_pb_line_break_holder] -->          <div><!-- [et_pb_line_break_holder] -->            <div class=\"prov-name\">Gmail API<\/div><!-- [et_pb_line_break_holder] -->            <div class=\"prov-api-name\">Google Workspace &#038; personal Gmail<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <span class=\"prov-badge badge-google\">Google<\/span><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"spec-list\"><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Auth:<\/strong> OAuth 2.0 with Google identity. Scopes: gmail.readonly, gmail.send, gmail.modify<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Real-time:<\/strong> Gmail Push Notifications via Google Pub\/Sub. Requires separate GCP setup<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check warn\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>OAuth consent:<\/strong> &#8220;Sensitive scopes&#8221; trigger Google verification (weeks) for unverified apps<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check warn\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Rate limits:<\/strong> 250 quota units per user per second. Attachment download adds quota per byte<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>SDK:<\/strong> google-api-python-client, googleapis\/google-api-nodejs-client<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <!-- Outlook \/ Microsoft Graph --><!-- [et_pb_line_break_holder] -->      <div class=\"prov-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"prov-header\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" class=\"prov-logo\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/outlook-2.svg\" alt=\"Outlook logo\"><!-- [et_pb_line_break_holder] -->          <div><!-- [et_pb_line_break_holder] -->            <div class=\"prov-name\">Microsoft Graph<\/div><!-- [et_pb_line_break_holder] -->            <div class=\"prov-api-name\">Outlook personal + Microsoft 365 \/ Exchange Online<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <span class=\"prov-badge badge-ms\">Microsoft<\/span><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"spec-list\"><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Auth:<\/strong> OAuth 2.0 via Azure AD. Scopes: Mail.Read, Mail.Send, Mail.ReadWrite<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Real-time:<\/strong> Graph change notifications (subscriptions) with validation endpoint. Max 4,230 min TTL<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check warn\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Admin consent:<\/strong> Enterprise M365 tenants require tenant admin to approve delegated permissions<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check warn\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Throttling:<\/strong> 10,000 requests per 10 min per app per tenant. Subscriptions expire and must be renewed<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>SDK:<\/strong> @microsoft\/microsoft-graph-client (Node), msgraph-sdk-python<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <!-- IMAP --><!-- [et_pb_line_break_holder] -->      <div class=\"prov-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"prov-header\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" class=\"prov-logo\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/imap-1.svg\" alt=\"IMAP logo\"><!-- [et_pb_line_break_holder] -->          <div><!-- [et_pb_line_break_holder] -->            <div class=\"prov-name\">IMAP<\/div><!-- [et_pb_line_break_holder] -->            <div class=\"prov-api-name\">Universal fallback &#8211; any provider<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <span class=\"prov-badge badge-imap\">RFC 3501<\/span><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"spec-list\"><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Auth:<\/strong> Password-based (username + password) or SASL XOAUTH2 for Gmail\/Outlook via IMAP<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check no\"><svg viewBox=\"0 0 24 24\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Real-time:<\/strong> No native webhooks. Requires IMAP IDLE polling loop in your backend (persistent TCP connection)<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Coverage:<\/strong> Works with any provider &#8211; ProtonMail Bridge, Fastmail, Yahoo, custom Exchange, corporate servers<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check warn\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>Security:<\/strong> Password storage risk. Gmail blocked basic auth in 2022 for consumer accounts. XOAUTH2 required<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"spec-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"spec-check warn\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"spec-label\"><strong>SDK:<\/strong> imaplib (Python), node-imap (Node &#8211; unmaintained), imap-simple. No official vendor SDK<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Comparison table --><!-- [et_pb_line_break_holder] -->    <div class=\"comp-table-wrap\"><!-- [et_pb_line_break_holder] -->      <table><!-- [et_pb_line_break_holder] -->        <thead><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <th>Feature<\/th><!-- [et_pb_line_break_holder] -->            <th>Gmail API<\/th><!-- [et_pb_line_break_holder] -->            <th>Microsoft Graph<\/th><!-- [et_pb_line_break_holder] -->            <th>IMAP<\/th><!-- [et_pb_line_break_holder] -->            <th>Unipile (unified)<\/th><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->        <\/thead><!-- [et_pb_line_break_holder] -->        <tbody><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td>Auth method<\/td><!-- [et_pb_line_break_holder] -->            <td>OAuth 2.0<\/td><!-- [et_pb_line_break_holder] -->            <td>OAuth 2.0<\/td><!-- [et_pb_line_break_holder] -->            <td>Password \/ XOAUTH2<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">OAuth 2.0 (all)<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td>Real-time webhooks<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-yellow\">Pub\/Sub (GCP needed)<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-yellow\">Graph subscriptions<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-red\">No (IDLE polling)<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Unified webhook<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td>Response format<\/td><!-- [et_pb_line_break_holder] -->            <td>Gmail JSON (non-standard)<\/td><!-- [et_pb_line_break_holder] -->            <td>Graph JSON (OData)<\/td><!-- [et_pb_line_break_holder] -->            <td>RFC 2822 raw MIME<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Unified JSON schema<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td>Token refresh<\/td><!-- [et_pb_line_break_holder] -->            <td>Manual (google-auth-library)<\/td><!-- [et_pb_line_break_holder] -->            <td>Manual (MSAL)<\/td><!-- [et_pb_line_break_holder] -->            <td>N\/A<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Managed by Unipile<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td>Rate limits<\/td><!-- [et_pb_line_break_holder] -->            <td>250 QU\/user\/s<\/td><!-- [et_pb_line_break_holder] -->            <td>10k req\/10 min<\/td><!-- [et_pb_line_break_holder] -->            <td>Varies by server<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Abstracted + retry<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td>Send email<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Yes<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Yes<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-yellow\">SMTP only<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Yes (all providers)<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td>Attachments<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-yellow\">Requires extra call<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-yellow\">Max 4MB inline<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Full MIME<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Unified attachment API<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->          <tr><!-- [et_pb_line_break_holder] -->            <td>Setup time (estimate)<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-yellow\">1-2 weeks<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-yellow\">1-2 weeks<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-yellow\">3-5 days<\/td><!-- [et_pb_line_break_holder] -->            <td class=\"td-green\">Hours<\/td><!-- [et_pb_line_break_holder] -->          <\/tr><!-- [et_pb_line_break_holder] -->        <\/tbody><!-- [et_pb_line_break_holder] -->      <\/table><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"cta-strip\"><!-- [et_pb_line_break_holder] -->      <div><!-- [et_pb_line_break_holder] -->        <div class=\"cta-strip-text\">Stop maintaining three separate email integrations<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"cta-strip-sub\">Unipile normalizes Gmail, Outlook, and IMAP into one API. Build once, ship to every provider.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <span class=\"cta-btn\" data-upl-link=\"https:\/\/dashboard.unipile.com\/signup\/\" data-upl-target=\"_blank\"><svg viewBox=\"0 0 24 24\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg><span>Build it with Unipile<\/span><\/span><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    document.querySelectorAll('#unipile-edev-native [data-upl-link]').forEach(function(el){<!-- [et_pb_line_break_holder] -->      el.style.cursor='pointer';<!-- [et_pb_line_break_holder] -->      el.addEventListener('click',function(){<!-- [et_pb_line_break_holder] -->        var url=el.getAttribute('data-upl-link');<!-- [et_pb_line_break_holder] -->        var t=el.getAttribute('data-upl-target');<!-- [et_pb_line_break_holder] -->        if(t==='_blank'){window.open(url,'_blank');}else{window.location.href=url;}<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-bvb {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb *,<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important;<!-- [et_pb_line_break_holder] -->  padding: 0 !important;<!-- [et_pb_line_break_holder] -->  box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important;<!-- [et_pb_line_break_holder] -->  outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important;<!-- [et_pb_line_break_holder] -->  text-decoration: none !important;<!-- [et_pb_line_break_holder] -->  list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important;<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(221,223,76,0.18) !important;<!-- [et_pb_line_break_holder] -->  color: #8a8c2e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .eyebrow-dot {<!-- [et_pb_line_break_holder] -->  width: 7px !important; height: 7px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important; border-radius: 50% !important; flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important; font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important; line-height: 1.2 !important; margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .section-intro {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important; color: #383838 !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.75 !important; margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Tab switcher *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .tab-bar {<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 0 !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .tab-btn {<!-- [et_pb_line_break_holder] -->  padding: 8px 18px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px 8px 0 0 !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  color: #64748b !important;<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 2px solid transparent !important;<!-- [et_pb_line_break_holder] -->  transition: all 0.15s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .tab-btn.active {<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->  color: #e6edf3 !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 2px solid #3BB98B !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .tab-content {<!-- [et_pb_line_break_holder] -->  display: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .tab-content.active {<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->\/* Code editor *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .code-wrapper {<!-- [et_pb_line_break_holder] -->  border-radius: 0 14px 14px 14px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  background: #0d1117 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .editor-bar {<!-- [et_pb_line_break_holder] -->  background: #161b22 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 18px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  border-bottom: 1px solid rgba(255,255,255,0.06) !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .dot { width: 12px !important; height: 12px !important; border-radius: 50% !important; display: inline-block !important; flex-shrink: 0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .dot-r { background: #ff5f57 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .dot-y { background: #febc2e !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .dot-g { background: #28c840 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .filename { color: #8b949e !important; font-size: 13px !important; margin-left: 6px !important; font-family: 'Courier New', monospace !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .pre { padding: 20px 24px !important; font-size: 13px !important; line-height: 1.8 !important; overflow-x: auto !important; background: #0d1117 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .pre code { font-family: 'Courier New', monospace !important; white-space: pre !important; display: block !important; color: #e6edf3 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .c { color: #8b949e !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .k { color: #ff7b72 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .fn { color: #d2a8ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .s { color: #a5d6ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .n { color: #79c0ff !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .w { color: #e6edf3 !important; }<!-- [et_pb_line_break_holder] -->\/* two-col layout native vs unified *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .compare-cols {<!-- [et_pb_line_break_holder] -->  display: grid !important;<!-- [et_pb_line_break_holder] -->  grid-template-columns: 1fr 1fr !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important;<!-- [et_pb_line_break_holder] -->  margin-top: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .col-label {<!-- [et_pb_line_break_holder] -->  font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important;<!-- [et_pb_line_break_holder] -->  letter-spacing: 0.8px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 10px !important;<!-- [et_pb_line_break_holder] -->  display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .col-label.native { color: #64748b !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .col-label.unified { color: #2aaa7e !important; }<!-- [et_pb_line_break_holder] -->\/* inline CTA *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .cta-inline {<!-- [et_pb_line_break_holder] -->  margin-top: 36px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 16px !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important;<!-- [et_pb_line_break_holder] -->  gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 13px 26px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 14px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.2s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .cta-btn:hover { transform: translateY(-5px) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .cta-btn svg { width: 14px !important; height: 14px !important; stroke: #0f2736 !important; fill: none !important; stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-bvb .cta-link {<!-- [et_pb_line_break_holder] -->  font-size: 14px !important; color: #0f2736 !important; font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  text-decoration: underline !important; cursor: pointer !important;<!-- [et_pb_line_break_holder] -->  text-underline-offset: 3px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-bvb { padding: 50px 20px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-bvb h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-bvb .compare-cols { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-bvb { padding: 40px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-bvb h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-bvb\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-buildvsbuy\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"eyebrow\"><span class=\"eyebrow-dot\"><\/span><span>Build vs Buy<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Native email API vs unified email API: real code comparison<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"section-intro\">Seeing both approaches side-by-side &#8211; in actual code &#8211; makes the tradeoff concrete. Select a language below to compare reading emails natively versus via the Unipile unified email API.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Tab buttons --><!-- [et_pb_line_break_holder] -->    <div class=\"tab-bar\"><!-- [et_pb_line_break_holder] -->      <span class=\"tab-btn active\" data-tab=\"edev-bvb-node\">Node.js<\/span><!-- [et_pb_line_break_holder] -->      <span class=\"tab-btn\" data-tab=\"edev-bvb-python\">Python<\/span><!-- [et_pb_line_break_holder] -->      <span class=\"tab-btn\" data-tab=\"edev-bvb-go\">Go \/ cURL<\/span><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Node.js tab --><!-- [et_pb_line_break_holder] -->    <div class=\"tab-content active\" id=\"edev-bvb-node\"><!-- [et_pb_line_break_holder] -->      <div class=\"compare-cols\"><!-- [et_pb_line_break_holder] -->        <div><!-- [et_pb_line_break_holder] -->          <span class=\"col-label native\">Native &#8211; Gmail API (Node.js)<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"code-wrapper\"><!-- [et_pb_line_break_holder] -->            <div class=\"editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"dot dot-r\"><\/span><span class=\"dot dot-y\"><\/span><span class=\"dot dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"filename\">gmail-native.js<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"pre\"><code><span class=\"c\">\/\/ 1. Install & configure OAuth client<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">{google} <\/span><span class=\"k\">=<\/span> <span class=\"fn\">require<\/span><span class=\"w\">(<\/span><span class=\"s\">'googleapis'<\/span><span class=\"w\">);<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">auth <\/span><span class=\"k\">=<\/span> <span class=\"k\">new<\/span> <span class=\"w\">google.auth.<\/span><span class=\"fn\">OAuth2<\/span><span class=\"w\">(<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">CLIENT_ID, CLIENT_SECRET, REDIRECT_URI<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">);<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ 2. Exchange auth code for tokens<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">{tokens} <\/span><span class=\"k\">=<\/span> <span class=\"k\">await<\/span> <span class=\"w\">auth.<\/span><span class=\"fn\">getToken<\/span><span class=\"w\">(code);<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">auth.<\/span><span class=\"fn\">setCredentials<\/span><span class=\"w\">(tokens);<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ 3. Store & refresh tokens manually<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ 4. Call Gmail API<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">gmail <\/span><span class=\"k\">=<\/span> <span class=\"w\">google.<\/span><span class=\"fn\">gmail<\/span><span class=\"w\">({<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">version: <\/span><span class=\"s\">'v1'<\/span><span class=\"w\">, auth<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">});<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">res <\/span><span class=\"k\">=<\/span> <span class=\"k\">await<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">  gmail.users.messages.<\/span><span class=\"fn\">list<\/span><span class=\"w\">({<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">userId: <\/span><span class=\"s\">'me'<\/span><span class=\"w\">, maxResults: <\/span><span class=\"n\">10<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">  });<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ 5. Fetch full message per ID<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">msg <\/span><span class=\"k\">=<\/span> <span class=\"k\">await<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">  gmail.users.messages.<\/span><span class=\"fn\">get<\/span><span class=\"w\">({<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">userId: <\/span><span class=\"s\">'me'<\/span><span class=\"w\">,<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">id: res.data.messages[<\/span><span class=\"n\">0<\/span><span class=\"w\">].id,<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">format: <\/span><span class=\"s\">'full'<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">  });<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ 6. Parse base64url-encoded payload yourself<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div><!-- [et_pb_line_break_holder] -->          <span class=\"col-label unified\">Unified &#8211; Unipile email API (Node.js)<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"code-wrapper\"><!-- [et_pb_line_break_holder] -->            <div class=\"editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"dot dot-r\"><\/span><span class=\"dot dot-y\"><\/span><span class=\"dot dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"filename\">unipile-email.js<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"pre\"><code><span class=\"c\">\/\/ 1. One SDK, all providers<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">unipile <\/span><span class=\"k\">=<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"fn\">require<\/span><span class=\"w\">(<\/span><span class=\"s\">'@unipile\/node-sdk'<\/span><span class=\"w\">);<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">client <\/span><span class=\"k\">=<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"k\">new<\/span> <span class=\"w\">unipile.<\/span><span class=\"fn\">UnipileClient<\/span><span class=\"w\">(<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">API_URL, ACCESS_TOKEN<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">  );<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ 2. Tokens managed by Unipile<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ No manual OAuth flow needed<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ 3. List emails<\/span><!-- [et_pb_line_break_holder] --><span class=\"k\">const<\/span> <span class=\"w\">emails <\/span><span class=\"k\">=<\/span> <span class=\"k\">await<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">client.email.<\/span><span class=\"fn\">listAll<\/span><span class=\"w\">({<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">account_id: ACCOUNT_ID,<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"w\">limit: <\/span><span class=\"n\">10<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">  });<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ 4. Body already decoded<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ Unified JSON - same schema<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">\/\/ for Gmail, Outlook, IMAP<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">console.<\/span><span class=\"fn\">log<\/span><span class=\"w\">(emails.items);<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Python tab --><!-- [et_pb_line_break_holder] -->    <div class=\"tab-content\" id=\"edev-bvb-python\"><!-- [et_pb_line_break_holder] -->      <div class=\"compare-cols\"><!-- [et_pb_line_break_holder] -->        <div><!-- [et_pb_line_break_holder] -->          <span class=\"col-label native\">Native &#8211; Microsoft Graph (Python)<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"code-wrapper\"><!-- [et_pb_line_break_holder] -->            <div class=\"editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"dot dot-r\"><\/span><span class=\"dot dot-y\"><\/span><span class=\"dot dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"filename\">msgraph_native.py<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">msal, requests<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># 1. MSAL confidential client<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">app <\/span><span class=\"k\">=<\/span> <span class=\"w\">msal.<\/span><span class=\"fn\">ConfidentialClientApplication<\/span><span class=\"w\">(<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">CLIENT_ID,<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">authority<\/span><span class=\"k\">=<\/span><span class=\"w\">AUTHORITY,<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">client_credential<\/span><span class=\"k\">=<\/span><span class=\"w\">CLIENT_SECRET<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 2. Acquire token on behalf of user<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">result <\/span><span class=\"k\">=<\/span> <span class=\"w\">app.<\/span><span class=\"fn\">acquire_token_by_auth_code_flow<\/span><span class=\"w\">(<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">flow, auth_response<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">token <\/span><span class=\"k\">=<\/span> <span class=\"w\">result[<\/span><span class=\"s\">'access_token'<\/span><span class=\"w\">]<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 3. Handle token refresh, store securely<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 4. Call Graph API<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">headers <\/span><span class=\"k\">=<\/span> <span class=\"w\">{<\/span><span class=\"s\">'Authorization'<\/span><span class=\"k\">:<\/span><span class=\"w\"> f<\/span><span class=\"s\">'Bearer {token}'<\/span><span class=\"w\">}<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">r <\/span><span class=\"k\">=<\/span> <span class=\"w\">requests.<\/span><span class=\"fn\">get<\/span><span class=\"w\">(<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"s\">'https:\/\/graph.microsoft.com\/v1.0\/me\/messages'<\/span><span class=\"w\">,<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">headers<\/span><span class=\"k\">=<\/span><span class=\"w\">headers<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># 5. Parse OData envelope response<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div><!-- [et_pb_line_break_holder] -->          <span class=\"col-label unified\">Unified &#8211; Unipile email API (Python)<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"code-wrapper\"><!-- [et_pb_line_break_holder] -->            <div class=\"editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"dot dot-r\"><\/span><span class=\"dot dot-y\"><\/span><span class=\"dot dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"filename\">unipile_email.py<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"pre\"><code><span class=\"k\">import<\/span> <span class=\"w\">requests<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Token managed by Unipile<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># No MSAL, no OAuth setup<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">headers <\/span><span class=\"k\">=<\/span> <span class=\"w\">{<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"s\">'X-API-KEY'<\/span><span class=\"k\">:<\/span> <span class=\"w\">ACCESS_TOKEN,<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"s\">'Accept'<\/span><span class=\"k\">:<\/span> <span class=\"s\">'application\/json'<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">}<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Works for Gmail AND Outlook<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># Same endpoint, same schema<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">r <\/span><span class=\"k\">=<\/span> <span class=\"w\">requests.<\/span><span class=\"fn\">get<\/span><span class=\"w\">(<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"s\">'https:\/\/api7.unipile.com:13091'<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"s\">'\/api\/v1\/emails'<\/span><span class=\"w\">,<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">headers<\/span><span class=\"k\">=<\/span><span class=\"w\">headers,<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">params<\/span><span class=\"k\">=<\/span><span class=\"w\">{<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"s\">'account_id'<\/span><span class=\"k\">:<\/span> <span class=\"w\">ACCOUNT_ID,<\/span><!-- [et_pb_line_break_holder] -->    <span class=\"s\">'limit'<\/span><span class=\"k\">:<\/span> <span class=\"n\">10<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">}<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">emails <\/span><span class=\"k\">=<\/span> <span class=\"w\">r.<\/span><span class=\"fn\">json<\/span><span class=\"w\">()<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># Already parsed, no OData<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Go\/cURL tab --><!-- [et_pb_line_break_holder] -->    <div class=\"tab-content\" id=\"edev-bvb-go\"><!-- [et_pb_line_break_holder] -->      <div class=\"compare-cols\"><!-- [et_pb_line_break_holder] -->        <div><!-- [et_pb_line_break_holder] -->          <span class=\"col-label native\">Native &#8211; IMAP (cURL)<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"code-wrapper\"><!-- [et_pb_line_break_holder] -->            <div class=\"editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"dot dot-r\"><\/span><span class=\"dot dot-y\"><\/span><span class=\"dot dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"filename\">imap_native.sh<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"pre\"><code><span class=\"c\"># IMAP has no REST API<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># Must use imaplib or node-imap<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># No cURL equivalent<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Example: openssl s_client<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># (debug only - not production)<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">openssl s_client <\/span><span class=\"k\">\\<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">-connect imap.gmail.com:<\/span><span class=\"n\">993<\/span> <span class=\"k\">\\<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">-quiet<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Then send raw IMAP commands:<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># A001 LOGIN user@gmail.com pass<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># A002 SELECT INBOX<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># A003 FETCH 1 RFC822<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># A004 LOGOUT<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># You receive raw RFC 2822 MIME<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># Must parse headers, decode<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># base64 parts, handle multipart<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># boundaries yourself<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Also: no webhooks, must IDLE poll<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div><!-- [et_pb_line_break_holder] -->          <span class=\"col-label unified\">Unified &#8211; Unipile email API (cURL)<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"code-wrapper\"><!-- [et_pb_line_break_holder] -->            <div class=\"editor-bar\"><!-- [et_pb_line_break_holder] -->              <span class=\"dot dot-r\"><\/span><span class=\"dot dot-y\"><\/span><span class=\"dot dot-g\"><\/span><!-- [et_pb_line_break_holder] -->              <span class=\"filename\">unipile_email.sh<\/span><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div class=\"pre\"><code><span class=\"c\"># REST API - works with any<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># email provider via cURL<\/span><!-- [et_pb_line_break_holder] --><span class=\"w\">curl <\/span><span class=\"k\">\\<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">-X GET <\/span><span class=\"k\">\\<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">-H <\/span><span class=\"s\">\"X-API-KEY: $TOKEN\"<\/span> <span class=\"k\">\\<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"w\">-H <\/span><span class=\"s\">\"Accept: application\/json\"<\/span> <span class=\"k\">\\<\/span><!-- [et_pb_line_break_holder] -->  <span class=\"s\">\"https:\/\/api7.unipile.com:13091<\/span><!-- [et_pb_line_break_holder] --><span class=\"s\">   \/api\/v1\/emails<\/span><!-- [et_pb_line_break_holder] --><span class=\"s\">   ?account_id=$ACCOUNT_ID<\/span><!-- [et_pb_line_break_holder] --><span class=\"s\">   &limit=10\"<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Response: clean JSON<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># { \"items\": [ { \"id\": \"...\",<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">#   \"subject\": \"Hello\",<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">#   \"from\": { \"name\": \"Alice\",<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">#     \"address\": \"...\" },<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">#   \"body_plain\": \"...\",<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\">#   \"date\": \"2026-05-12T...\" } ] }<\/span><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><span class=\"c\"># Same endpoint for Gmail,<\/span><!-- [et_pb_line_break_holder] --><span class=\"c\"># Outlook, and IMAP accounts<\/span><\/code><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"cta-inline\"><!-- [et_pb_line_break_holder] -->      <span class=\"cta-btn\" data-upl-link=\"https:\/\/dashboard.unipile.com\/signup\/\" data-upl-target=\"_blank\"><svg viewBox=\"0 0 24 24\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg><span>Start building &#8211; free trial<\/span><\/span><!-- [et_pb_line_break_holder] -->      <span class=\"cta-link\" data-upl-link=\"https:\/\/developer.unipile.com\/docs\/\" data-upl-target=\"_blank\">Read the full API reference<\/span><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    var tabs = document.querySelectorAll('#unipile-edev-bvb .tab-btn');<!-- [et_pb_line_break_holder] -->    tabs.forEach(function(btn){<!-- [et_pb_line_break_holder] -->      btn.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->        tabs.forEach(function(b){ b.classList.remove('active'); });<!-- [et_pb_line_break_holder] -->        document.querySelectorAll('#unipile-edev-bvb .tab-content').forEach(function(c){ c.classList.remove('active'); });<!-- [et_pb_line_break_holder] -->        btn.classList.add('active');<!-- [et_pb_line_break_holder] -->        var target = btn.getAttribute('data-tab');<!-- [et_pb_line_break_holder] -->        var pane = document.getElementById(target);<!-- [et_pb_line_break_holder] -->        if(pane){ pane.classList.add('active'); }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->    document.querySelectorAll('#unipile-edev-bvb [data-upl-link]').forEach(function(el){<!-- [et_pb_line_break_holder] -->      el.style.cursor='pointer';<!-- [et_pb_line_break_holder] -->      el.addEventListener('click',function(){<!-- [et_pb_line_break_holder] -->        var url=el.getAttribute('data-upl-link');<!-- [et_pb_line_break_holder] -->        var t=el.getAttribute('data-upl-target');<!-- [et_pb_line_break_holder] -->        if(t==='_blank'){window.open(url,'_blank');}else{window.location.href=url;}<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.4&#8243; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; sticky_enabled=&#8221;0&#8243;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-oauth {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 0px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth *,<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important; padding: 0 !important; box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important; outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important; letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important; text-decoration: none !important; list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .wrap {<!-- [et_pb_line_break_holder] -->  margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important; border-radius: 20px !important; padding: 50px 48px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important; color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important; border-radius: 20px !important; font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .eyebrow-dot { width: 7px !important; height: 7px !important; background: #3BB98B !important; border-radius: 50% !important; flex-shrink: 0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important; font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; color: #0f2736 !important; line-height: 1.2 !important; margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .section-intro {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important; color: #383838 !important; line-height: 1.75 !important; margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .oauth-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 20px !important; margin-bottom: 30px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .oauth-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important; border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 26px !important; border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .oauth-card-header {<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; gap: 12px !important; margin-bottom: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .oauth-card-logo { width: 28px !important; height: 28px !important; flex-shrink: 0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .oauth-card-title { font-size: 15px !important; font-weight: 700 !important; color: #0f2736 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .oauth-steps { display: flex !important; flex-direction: column !important; gap: 12px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .oauth-step {<!-- [et_pb_line_break_holder] -->  display: flex !important; gap: 12px !important; align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .step-num {<!-- [et_pb_line_break_holder] -->  width: 22px !important; height: 22px !important; min-width: 22px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important; background: rgba(59,185,139,0.12) !important;<!-- [et_pb_line_break_holder] -->  color: #2aaa7e !important; font-size: 11px !important; font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; justify-content: center !important;<!-- [et_pb_line_break_holder] -->  flex-shrink: 0 !important; margin-top: 1px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .step-text { font-size: 13.5px !important; color: #374151 !important; line-height: 1.6 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .step-text strong { font-weight: 600 !important; color: #0f2736 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .step-text code {<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important; font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(15,39,54,0.07) !important; padding: 2px 5px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 4px !important; color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .imap-box {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important; border-radius: 12px !important;<!-- [et_pb_line_break_holder] -->  padding: 20px 24px !important; border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-left: 4px solid #94a3b8 !important; margin-bottom: 30px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .imap-box-title { font-size: 14px !important; font-weight: 700 !important; color: #0f2736 !important; margin-bottom: 8px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .imap-box-body { font-size: 13.5px !important; color: #64748b !important; line-height: 1.65 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .imap-box-body strong { font-weight: 600 !important; color: #374151 !important; }<!-- [et_pb_line_break_holder] -->\/* CTA inline *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .cta-strip {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important; border-radius: 14px !important; padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; justify-content: space-between !important;<!-- [et_pb_line_break_holder] -->  gap: 20px !important; flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .cta-strip-text { font-size: 15px !important; font-weight: 600 !important; color: #ffffff !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .cta-strip-sub { font-size: 13px !important; color: rgba(255,255,255,0.65) !important; margin-top: 4px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important; color: #0f2736 !important; padding: 12px 24px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important; font-size: 14px !important; font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important; white-space: nowrap !important; border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.2s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .cta-btn:hover { transform: translateY(-5px) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-oauth .cta-btn svg { width: 14px !important; height: 14px !important; stroke: #0f2736 !important; fill: none !important; stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important; }<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-oauth .wrap { padding: 36px 24px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-oauth h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-oauth .oauth-grid { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-oauth .cta-strip { flex-direction: column !important; align-items: flex-start !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-oauth .wrap { padding: 28px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-oauth h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-oauth\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-oauth\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"eyebrow\"><span class=\"eyebrow-dot\"><\/span><span>Authentication<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>OAuth 2.0 essentials for email API integration<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"section-intro\">Every production email API integration relies on OAuth 2.0 to authenticate as a user without storing their password. Here is what you need to set up for each provider &#8211; and how Unipile handles it for you.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"oauth-grid\"><!-- [et_pb_line_break_holder] -->      <!-- Google --><!-- [et_pb_line_break_holder] -->      <div class=\"oauth-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"oauth-card-header\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" class=\"oauth-card-logo\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/gmail-3.svg\" alt=\"Gmail OAuth\"><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-card-title\">Google OAuth for Gmail API<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"oauth-steps\"><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">1<\/span><div class=\"step-text\"><strong>Create a Google Cloud project<\/strong> and enable the Gmail API in the API Library.<\/div><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">2<\/span><div class=\"step-text\"><strong>Configure an OAuth consent screen.<\/strong> Add scopes: <code>gmail.readonly<\/code>, <code>gmail.send<\/code>. Sensitive scopes require Google verification for production.<\/div><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">3<\/span><div class=\"step-text\"><strong>Create OAuth 2.0 credentials<\/strong> (Web application type). Note the Client ID and Client Secret.<\/div><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">4<\/span><div class=\"step-text\"><strong>Implement the authorization code flow.<\/strong> Redirect users to Google&#8217;s auth endpoint, exchange the code for access + refresh tokens.<\/div><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">5<\/span><div class=\"step-text\"><strong>Store and refresh tokens.<\/strong> Access tokens expire after 1 hour. Implement refresh logic using <code>google-auth-library<\/code> or a custom handler.<\/div><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <!-- Microsoft --><!-- [et_pb_line_break_holder] -->      <div class=\"oauth-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"oauth-card-header\"><!-- [et_pb_line_break_holder] -->          <img decoding=\"async\" class=\"oauth-card-logo\" src=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2024\/02\/outlook-2.svg\" alt=\"Outlook OAuth\"><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-card-title\">Microsoft OAuth for Graph API<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"oauth-steps\"><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">1<\/span><div class=\"step-text\"><strong>Register an app in Azure Active Directory<\/strong> (portal.azure.com). Note the Application (client) ID and Directory (tenant) ID.<\/div><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">2<\/span><div class=\"step-text\"><strong>Add API permissions.<\/strong> Under Microsoft Graph, add delegated permissions: <code>Mail.Read<\/code>, <code>Mail.Send<\/code>, <code>Mail.ReadWrite<\/code>.<\/div><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">3<\/span><div class=\"step-text\"><strong>Generate a client secret<\/strong> under &#8220;Certificates &#038; secrets&#8221;. Record it immediately &#8211; it is only shown once.<\/div><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">4<\/span><div class=\"step-text\"><strong>Implement auth code flow with PKCE<\/strong> using MSAL.js or msal-python. For enterprise tenants, the admin may need to grant consent.<\/div><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"oauth-step\"><span class=\"step-num\">5<\/span><div class=\"step-text\"><strong>Handle token refresh.<\/strong> Microsoft access tokens expire after 60-90 minutes. MSAL handles refresh automatically if you pass the refresh token correctly.<\/div><\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"imap-box\"><!-- [et_pb_line_break_holder] -->      <div class=\"imap-box-title\">IMAP: password-based fallback (use carefully)<\/div><!-- [et_pb_line_break_holder] -->      <div class=\"imap-box-body\">IMAP uses a <strong>username + password<\/strong> credential model &#8211; no OAuth by default. This means your app must store the user&#8217;s password or app-specific password, which creates a security liability. <strong>Gmail blocked basic auth for IMAP in 2022<\/strong> for personal accounts; you must use XOAUTH2 over IMAP instead. For non-Google\/Microsoft providers (ProtonMail Bridge, Fastmail, corporate Exchange), IMAP password-based auth remains the only option. Treat it as a last-resort fallback &#8211; always prefer OAuth 2.0 when available.<\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"cta-strip\"><!-- [et_pb_line_break_holder] -->      <div><!-- [et_pb_line_break_holder] -->        <div class=\"cta-strip-text\">Skip the OAuth plumbing &#8211; let Unipile handle it<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"cta-strip-sub\">Unipile manages Google and Microsoft OAuth flows, token storage, and refresh &#8211; all behind a single API key. See the <span style=\"text-decoration:underline;cursor:pointer;\" data-upl-link=\"https:\/\/www.unipile.com\/oauth-email-api\/\" data-upl-target=\"_blank\">OAuth Email API guide<\/span> for details.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <span class=\"cta-btn\" data-upl-link=\"https:\/\/dashboard.unipile.com\/signup\/\" data-upl-target=\"_blank\"><svg viewBox=\"0 0 24 24\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg><span>Build your OAuth flow<\/span><\/span><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    document.querySelectorAll('#unipile-edev-oauth [data-upl-link]').forEach(function(el){<!-- [et_pb_line_break_holder] -->      el.style.cursor='pointer';<!-- [et_pb_line_break_holder] -->      el.addEventListener('click',function(){<!-- [et_pb_line_break_holder] -->        var url=el.getAttribute('data-upl-link');<!-- [et_pb_line_break_holder] -->        var t=el.getAttribute('data-upl-target');<!-- [et_pb_line_break_holder] -->        if(t==='_blank'){window.open(url,'_blank');}else{window.location.href=url;}<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-sdks {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks *,<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important; padding: 0 !important; box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important; outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important; letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important; text-decoration: none !important; list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .wrap { max-width: 1100px !important; margin: 0 auto !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(221,223,76,0.18) !important; color: #8a8c2e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important; border-radius: 20px !important; font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .eyebrow-dot { width: 7px !important; height: 7px !important; background: #DDDF4C !important; border-radius: 50% !important; flex-shrink: 0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important; font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; color: #0f2736 !important; line-height: 1.2 !important; margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .section-intro {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important; color: #383838 !important; line-height: 1.75 !important; margin-bottom: 40px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-featured {<!-- [et_pb_line_break_holder] -->  background: #0f2736 !important; border-radius: 16px !important; padding: 30px 32px !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 24px !important; display: flex !important; gap: 28px !important; align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->  flex-wrap: wrap !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-featured-label {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 6px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(221,223,76,0.18) !important; color: #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  padding: 4px 10px !important; border-radius: 20px !important; font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; margin-bottom: 10px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-featured-title { font-size: 18px !important; font-weight: 700 !important; color: #ffffff !important; margin-bottom: 8px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-featured-desc { font-size: 14px !important; color: rgba(255,255,255,0.7) !important; line-height: 1.65 !important; margin-bottom: 16px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-install {<!-- [et_pb_line_break_holder] -->  background: rgba(255,255,255,0.06) !important; border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 16px !important; font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important; color: #a5d6ff !important; display: flex !important;<!-- [et_pb_line_break_holder] -->  align-items: center !important; gap: 10px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-install-prompt { color: #3BB98B !important; font-weight: 700 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important; border-radius: 14px !important; padding: 22px !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-card-header {<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; gap: 10px !important; margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-lang-badge {<!-- [et_pb_line_break_holder] -->  padding: 4px 10px !important; border-radius: 6px !important; font-size: 11px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; font-family: 'Courier New', monospace !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .badge-node { background: rgba(104,160,99,0.12) !important; color: #3d7a39 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .badge-python { background: rgba(55,118,171,0.12) !important; color: #336b9a !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .badge-go { background: rgba(0,172,193,0.12) !important; color: #00838f !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .badge-curl { background: rgba(100,116,139,0.12) !important; color: #475569 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-card-name { font-size: 14px !important; font-weight: 700 !important; color: #0f2736 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-card-pkg {<!-- [et_pb_line_break_holder] -->  font-family: 'Courier New', monospace !important; font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important; padding: 7px 12px !important; border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->  color: #374151 !important; margin-bottom: 10px !important; display: block !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-card-body { font-size: 13px !important; color: #64748b !important; line-height: 1.6 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .sdk-card-body strong { font-weight: 600 !important; color: #374151 !important; }<!-- [et_pb_line_break_holder] -->\/* CTA inline *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .cta-inline {<!-- [et_pb_line_break_holder] -->  margin-top: 32px !important; display: flex !important; gap: 16px !important; flex-wrap: wrap !important; align-items: center !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important; color: #0f2736 !important; padding: 13px 26px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important; font-size: 14px !important; font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important; white-space: nowrap !important; border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.2s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .cta-btn:hover { transform: translateY(-5px) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-sdks .cta-btn svg { width: 14px !important; height: 14px !important; stroke: #0f2736 !important; fill: none !important; stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important; }<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-sdks { padding: 50px 20px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-sdks h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-sdks .sdk-grid { grid-template-columns: 1fr 1fr !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-sdks { padding: 40px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-sdks h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-sdks .sdk-grid { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-sdks\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-sdks\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"eyebrow\"><span class=\"eyebrow-dot\"><\/span><span>SDKs &#038; Tooling<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>SDKs and tooling for email API integration<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"section-intro\">Whether you are building natively or using a unified layer, the right SDK reduces boilerplate. Here is the current landscape for each provider and for Unipile.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Unipile featured SDK --><!-- [et_pb_line_break_holder] -->    <div class=\"sdk-featured\"><!-- [et_pb_line_break_holder] -->      <div style=\"flex:1;min-width:260px;\"><!-- [et_pb_line_break_holder] -->        <span class=\"sdk-featured-label\">Recommended<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-featured-title\">Unipile Node.js SDK<\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"sdk-featured-desc\">Official SDK for the Unipile unified email API. Covers email read, send, account management, and webhooks for Gmail, Outlook, and IMAP &#8211; in one package. TypeScript definitions included.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-install\"><span class=\"sdk-install-prompt\">$<\/span><span>npm install @unipile\/node-sdk<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div style=\"flex:1;min-width:260px;\"><!-- [et_pb_line_break_holder] -->        <div style=\"background:rgba(255,255,255,0.06)!important;border-radius:12px!important;padding:20px!important;\"><!-- [et_pb_line_break_holder] -->          <div style=\"font-size:12px!important;color:rgba(255,255,255,0.5)!important;font-weight:600!important;text-transform:uppercase!important;letter-spacing:0.8px!important;margin-bottom:12px!important;\">Key capabilities<\/div><!-- [et_pb_line_break_holder] -->          <div style=\"display:flex!important;flex-direction:column!important;gap:8px!important;\"><!-- [et_pb_line_break_holder] -->            <div style=\"display:flex!important;gap:8px!important;align-items:center!important;font-size:13px!important;color:rgba(255,255,255,0.8)!important;\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#3BB98B\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>client.email.listAll()<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div style=\"display:flex!important;gap:8px!important;align-items:center!important;font-size:13px!important;color:rgba(255,255,255,0.8)!important;\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#3BB98B\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>client.email.send()<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div style=\"display:flex!important;gap:8px!important;align-items:center!important;font-size:13px!important;color:rgba(255,255,255,0.8)!important;\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#3BB98B\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>client.account.link() &#8211; OAuth flow<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div style=\"display:flex!important;gap:8px!important;align-items:center!important;font-size:13px!important;color:rgba(255,255,255,0.8)!important;\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#3BB98B\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>Webhook parsing helpers<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div style=\"display:flex!important;gap:8px!important;align-items:center!important;font-size:13px!important;color:rgba(255,255,255,0.8)!important;\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#3BB98B\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>TypeScript types included<\/span><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Native SDKs grid --><!-- [et_pb_line_break_holder] -->    <div class=\"sdk-grid\"><!-- [et_pb_line_break_holder] -->      <div class=\"sdk-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-header\"><span class=\"sdk-lang-badge badge-node\">Node.js<\/span><div class=\"sdk-card-name\">Gmail API<\/div><\/div><!-- [et_pb_line_break_holder] -->        <span class=\"sdk-card-pkg\">npm i googleapis<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-body\">Official Google client. Covers full Gmail API + other Google services. <strong>Maintained by Google.<\/strong> Large dependency footprint. Auth handled via google-auth-library (separate install).<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"sdk-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-header\"><span class=\"sdk-lang-badge badge-python\">Python<\/span><div class=\"sdk-card-name\">Gmail API<\/div><\/div><!-- [et_pb_line_break_holder] -->        <span class=\"sdk-card-pkg\">pip install google-api-python-client google-auth-oauthlib<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-body\">Official Python client. Requires two packages. <strong>Verbose initialization<\/strong> &#8211; credentials flow is several boilerplate files. Works well once configured.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"sdk-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-header\"><span class=\"sdk-lang-badge badge-node\">Node.js<\/span><div class=\"sdk-card-name\">Microsoft Graph<\/div><\/div><!-- [et_pb_line_break_holder] -->        <span class=\"sdk-card-pkg\">npm i @microsoft\/microsoft-graph-client<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-body\">Official Graph client. Auth via MSAL.js (<code>@azure\/msal-node<\/code> separate). <strong>Well-maintained.<\/strong> OData response format requires extra parsing for simple use cases.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"sdk-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-header\"><span class=\"sdk-lang-badge badge-python\">Python<\/span><div class=\"sdk-card-name\">Microsoft Graph<\/div><\/div><!-- [et_pb_line_break_holder] -->        <span class=\"sdk-card-pkg\">pip install msgraph-sdk msal<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-body\">Official Graph SDK for Python. Async-first (asyncio). <strong>Requires Python 3.8+.<\/strong> MSAL handles token acquisition. Well-documented for enterprise M365 scenarios.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"sdk-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-header\"><span class=\"sdk-lang-badge badge-python\">Python<\/span><div class=\"sdk-card-name\">IMAP<\/div><\/div><!-- [et_pb_line_break_holder] -->        <span class=\"sdk-card-pkg\">pip install imapclient<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-body\">imapclient is the most Pythonic wrapper around imaplib. <strong>No official vendor SDK.<\/strong> You handle connection pooling, IDLE loops, and MIME parsing manually. Fallback when OAuth is not available.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"sdk-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-header\"><span class=\"sdk-lang-badge badge-curl\">REST<\/span><div class=\"sdk-card-name\">Any language<\/div><\/div><!-- [et_pb_line_break_holder] -->        <span class=\"sdk-card-pkg\">curl \/ fetch \/ axios \/ httpx<\/span><!-- [et_pb_line_break_holder] -->        <div class=\"sdk-card-body\">All three native email APIs expose REST endpoints &#8211; you can use any HTTP client. <strong>No SDK required<\/strong> if you prefer minimal dependencies. Unipile&#8217;s REST API is the same: one endpoint, any language.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"cta-inline\"><!-- [et_pb_line_break_holder] -->      <span class=\"cta-btn\" data-upl-link=\"https:\/\/developer.unipile.com\/docs\/\" data-upl-target=\"_blank\"><svg viewBox=\"0 0 24 24\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><\/svg><span>Read the SDK docs<\/span><\/span><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    document.querySelectorAll('#unipile-edev-sdks [data-upl-link]').forEach(function(el){<!-- [et_pb_line_break_holder] -->      el.style.cursor='pointer';<!-- [et_pb_line_break_holder] -->      el.addEventListener('click',function(){<!-- [et_pb_line_break_holder] -->        var url=el.getAttribute('data-upl-link');<!-- [et_pb_line_break_holder] -->        var t=el.getAttribute('data-upl-target');<!-- [et_pb_line_break_holder] -->        if(t==='_blank'){window.open(url,'_blank');}else{window.location.href=url;}<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-ps {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps *,<!-- [et_pb_line_break_holder] -->#unipile-edev-ps *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-ps *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important; padding: 0 !important; box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important; outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important; letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important; text-decoration: none !important; list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .wrap { max-width: 1100px !important; margin: 0 auto !important; }<!-- [et_pb_line_break_holder] -->\/* Pricing section *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .pricing-wrap {<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important; border-radius: 20px !important; padding: 50px 48px !important; margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important; color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important; border-radius: 20px !important; font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .eyebrow-dot { width: 7px !important; height: 7px !important; background: #3BB98B !important; border-radius: 50% !important; flex-shrink: 0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important; font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; color: #0f2736 !important; line-height: 1.2 !important; margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .section-intro {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important; color: #383838 !important; line-height: 1.75 !important; margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .pricing-cards {<!-- [et_pb_line_break_holder] -->  display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 18px !important; margin-bottom: 24px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important; border-radius: 14px !important; padding: 24px !important; border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-card.featured {<!-- [et_pb_line_break_holder] -->  border: 2px solid #3BB98B !important; position: relative !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-badge {<!-- [et_pb_line_break_holder] -->  position: absolute !important; top: -12px !important; left: 50% !important;<!-- [et_pb_line_break_holder] -->  transform: translateX(-50%) !important; background: #3BB98B !important; color: #ffffff !important;<!-- [et_pb_line_break_holder] -->  font-size: 11px !important; font-weight: 700 !important; padding: 4px 12px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 20px !important; white-space: nowrap !important; text-transform: uppercase !important; letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-plan { font-size: 14px !important; font-weight: 700 !important; color: #0f2736 !important; margin-bottom: 6px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-amount { font-size: 28px !important; font-weight: 700 !important; color: #0f2736 !important; margin-bottom: 4px !important; font-family: 'Poppins', sans-serif !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-period { font-size: 12px !important; color: #64748b !important; margin-bottom: 16px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-features { display: flex !important; flex-direction: column !important; gap: 8px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-feat {<!-- [et_pb_line_break_holder] -->  display: flex !important; gap: 8px !important; align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important; color: #374151 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-feat svg { width: 14px !important; height: 14px !important; stroke: #3BB98B !important; fill: none !important; stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important; flex-shrink: 0 !important; margin-top: 2px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-friction {<!-- [et_pb_line_break_holder] -->  display: flex !important; gap: 8px !important; align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->  font-size: 13px !important; color: #374151 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-friction svg { width: 14px !important; height: 14px !important; stroke: #dc2626 !important; fill: none !important; stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important; flex-shrink: 0 !important; margin-top: 2px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-realcost {<!-- [et_pb_line_break_holder] -->  margin-top: 12px !important; margin-bottom: 14px !important; padding: 10px 12px !important;<!-- [et_pb_line_break_holder] -->  background: #fef2f2 !important; border-left: 3px solid #dc2626 !important; border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-realcost .rc-label { font-size: 10px !important; font-weight: 800 !important; color: #dc2626 !important; text-transform: uppercase !important; letter-spacing: 0.6px !important; margin-bottom: 2px !important; display: block !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-realcost .rc-value { font-size: 13px !important; font-weight: 700 !important; color: #0f2736 !important; line-height: 1.4 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-realcost-green {<!-- [et_pb_line_break_holder] -->  margin-top: 12px !important; margin-bottom: 14px !important; padding: 10px 12px !important;<!-- [et_pb_line_break_holder] -->  background: #ecfdf5 !important; border-left: 3px solid #3BB98B !important; border-radius: 6px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-realcost-green .rc-label { font-size: 10px !important; font-weight: 800 !important; color: #3BB98B !important; text-transform: uppercase !important; letter-spacing: 0.6px !important; margin-bottom: 2px !important; display: block !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-realcost-green .rc-value { font-size: 13px !important; font-weight: 700 !important; color: #0f2736 !important; line-height: 1.4 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-tag-native { display: inline-block !important; font-size: 10px !important; font-weight: 700 !important; color: #92400e !important; background: #fef3c7 !important; padding: 2px 8px !important; border-radius: 4px !important; text-transform: uppercase !important; letter-spacing: 0.4px !important; margin-bottom: 8px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-amount-sub { font-size: 11px !important; color: #94a3b8 !important; font-weight: 500 !important; font-style: italic !important; margin-left: 6px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .price-note { font-size: 13px !important; color: #64748b !important; line-height: 1.6 !important; }<!-- [et_pb_line_break_holder] -->\/* Security section *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .security-wrap { margin-top: 36px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .eyebrow-yellow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(221,223,76,0.18) !important; color: #8a8c2e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important; border-radius: 20px !important; font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .eyebrow-dot-y { width: 7px !important; height: 7px !important; background: #DDDF4C !important; border-radius: 50% !important; flex-shrink: 0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .compliance-grid { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 20px !important; margin-top: 28px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important; border-radius: 16px !important; padding: 28px !important; border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-icon-row { display: flex !important; align-items: center !important; gap: 14px !important; margin-bottom: 14px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-icon {<!-- [et_pb_line_break_holder] -->  width: 44px !important; height: 44px !important; min-width: 44px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 12px !important; display: flex !important; align-items: center !important; justify-content: center !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-icon.soc { background: rgba(59,185,139,0.12) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-icon.gdpr { background: rgba(0,82,204,0.10) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-icon svg { width: 22px !important; height: 22px !important; stroke: #3BB98B !important; fill: none !important; stroke-width: 2 !important; stroke-linecap: round !important; stroke-linejoin: round !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-icon.gdpr svg { stroke: #0052cc !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-title { font-size: 16px !important; font-weight: 700 !important; color: #0f2736 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-cert { font-size: 11px !important; font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; color: #2aaa7e !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-body { font-size: 14px !important; color: #64748b !important; line-height: 1.7 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .comp-body strong { font-weight: 600 !important; color: #374151 !important; }<!-- [et_pb_line_break_holder] -->\/* CTA *\/<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .cta-inline {<!-- [et_pb_line_break_holder] -->  margin-top: 32px !important; display: flex !important; gap: 16px !important; flex-wrap: wrap !important; align-items: center !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important; color: #0f2736 !important; padding: 13px 26px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 8px !important; font-size: 14px !important; font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important; white-space: nowrap !important; border: 2px solid #DDDF4C !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.2s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .cta-btn:hover { transform: translateY(-5px) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-ps .cta-btn svg { width: 14px !important; height: 14px !important; stroke: #0f2736 !important; fill: none !important; stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important; }<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-ps { padding: 50px 20px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-ps h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-ps .pricing-wrap { padding: 36px 24px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-ps .pricing-cards { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-ps .compliance-grid { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-ps { padding: 40px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-ps h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-ps .pricing-wrap { padding: 28px 16px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-ps\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-pricing\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"wrap\"><!-- [et_pb_line_break_holder] -->    <!-- Pricing --><!-- [et_pb_line_break_holder] -->    <div class=\"pricing-wrap\"><!-- [et_pb_line_break_holder] -->      <div class=\"eyebrow\"><span class=\"eyebrow-dot\"><\/span><span>Pricing<\/span><\/div><!-- [et_pb_line_break_holder] -->      <h2>Developer-friendly pricing: start free, scale transparently<\/h2><!-- [et_pb_line_break_holder] -->      <pee class=\"section-intro\">&#8220;Free&#8221; native email APIs aren&#8217;t really free. Gmail API and Microsoft Graph cost zero dollars per API call, but each one demands weeks of engineering: OAuth verification cycles, token refresh logic, webhook infrastructure, retry handlers, error mapping. A mid-size team typically burns 3 to 6 weeks before shipping a single feature. Unipile&#8217;s unified email API for developers replaces that work with a 7-day free trial, no credit card required.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"pricing-cards\"><!-- [et_pb_line_break_holder] -->        <div class=\"price-card\"><!-- [et_pb_line_break_holder] -->          <span class=\"price-tag-native\"><span>Native, DIY<\/span><\/span><!-- [et_pb_line_break_holder] -->          <div class=\"price-plan\">Gmail API<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-amount\">$0<span class=\"price-amount-sub\">in API fees<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-period\">per API call (quota-based)<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-realcost\"><!-- [et_pb_line_break_holder] -->            <span class=\"rc-label\"><span>Real cost to ship<\/span><\/span><!-- [et_pb_line_break_holder] -->            <div class=\"rc-value\">3 to 6 weeks of engineering<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-features\"><!-- [et_pb_line_break_holder] -->            <div class=\"price-friction\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg><span>OAuth consent screen verification: 4 to 6 week wait from Google before production access<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-friction\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg><span>Pub\/Sub real-time webhooks: separate GCP project, IAM, and infrastructure to host and renew<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-friction\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg><span>Token refresh, quota errors, exponential backoff: every edge case is yours to build<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-friction\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg><span>Only Gmail. Outlook and IMAP need two more integrations, each with its own complexity<\/span><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"price-card featured\" style=\"position:relative!important;\"><!-- [et_pb_line_break_holder] -->          <span class=\"price-badge\">Recommended for devs<\/span><!-- [et_pb_line_break_holder] -->          <div class=\"price-plan\">Unipile, unified API<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-amount\">Free trial<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-period\">7 days, no credit card<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-realcost-green\"><!-- [et_pb_line_break_holder] -->            <span class=\"rc-label\"><span>Real cost to ship<\/span><\/span><!-- [et_pb_line_break_holder] -->            <div class=\"rc-value\">Hours, not weeks. One SDK, one OAuth flow, three providers<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-features\"><!-- [et_pb_line_break_holder] -->            <div class=\"price-feat\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>Gmail, Outlook, IMAP behind one unified endpoint<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-feat\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>OAuth flow managed for you, tokens auto-refreshed<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-feat\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>Webhooks included, no GCP project or Azure subscription to manage<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-feat\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>Transparent per-linked-account pricing, SOC 2 Type II + GDPR<\/span><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"price-card\"><!-- [et_pb_line_break_holder] -->          <span class=\"price-tag-native\"><span>Native, DIY<\/span><\/span><!-- [et_pb_line_break_holder] -->          <div class=\"price-plan\">Microsoft Graph<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-amount\">$0<span class=\"price-amount-sub\">in API fees<\/span><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-period\">per API call (throttling-based)<\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-realcost\"><!-- [et_pb_line_break_holder] -->            <span class=\"rc-label\"><span>Real cost to ship<\/span><\/span><!-- [et_pb_line_break_holder] -->            <div class=\"rc-value\">4 to 8 weeks of engineering<\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <div class=\"price-features\"><!-- [et_pb_line_break_holder] -->            <div class=\"price-friction\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg><span>Azure AD tenant, app registration, multi-step admin consent for every customer<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-friction\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg><span>Webhook subscriptions expire after 4230 minutes: build renewal jobs or lose events<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-friction\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg><span>Throttling at 10 000 requests per 10 minutes: build your own backoff and retry layer<\/span><\/div><!-- [et_pb_line_break_holder] -->            <div class=\"price-friction\"><svg viewBox=\"0 0 24 24\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg><span>Only Outlook and M365. Gmail and IMAP customers need two more integrations<\/span><\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <pee class=\"price-note\"><strong>Bottom line:<\/strong> the API calls are free, the engineering is not. Building production-grade email integration on top of native APIs (auth flows, token refresh, error handling, webhook infrastructure, multi-provider abstraction) commonly costs 3 to 8 weeks of senior dev time per provider, plus ongoing maintenance every time Google or Microsoft ships a breaking change. Unipile prices per linked account per month with transparent tiers. See the <span style=\"text-decoration:underline;cursor:pointer;\" data-upl-link=\"https:\/\/www.unipile.com\/free-email-api\/\" data-upl-target=\"_blank\">Free Email API guide<\/span> for the full breakdown.<\/pee><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Security & Compliance --><!-- [et_pb_line_break_holder] -->    <span id=\"edev-security\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->    <div class=\"security-wrap\"><!-- [et_pb_line_break_holder] -->      <div class=\"eyebrow-yellow\"><span class=\"eyebrow-dot-y\"><\/span><span>Security &#038; Compliance<\/span><\/div><!-- [et_pb_line_break_holder] -->      <h2>Security and compliance for email API integrations<\/h2><!-- [et_pb_line_break_holder] -->      <pee class=\"section-intro\">When your application handles user emails, compliance is not optional. Unipile is built for the two frameworks that matter for developer-facing products handling European and enterprise data.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"compliance-grid\"><!-- [et_pb_line_break_holder] -->        <div class=\"comp-card\"><!-- [et_pb_line_break_holder] -->          <div class=\"comp-icon-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"comp-icon soc\"><!-- [et_pb_line_break_holder] -->              <svg viewBox=\"0 0 24 24\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><\/svg><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div><!-- [et_pb_line_break_holder] -->              <div class=\"comp-title\">SOC 2 Type II<\/div><!-- [et_pb_line_break_holder] -->              <div class=\"comp-cert\">Certified<\/div><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <pee class=\"comp-body\">Unipile is <strong>SOC 2 Type II certified<\/strong>. The audit covers the Security, Availability, and Confidentiality trust service criteria. This means independent auditors have verified Unipile&#8217;s controls over a sustained period &#8211; not just at a single point in time. Required by most enterprise buyers and SaaS security questionnaires.<\/pee><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <div class=\"comp-card\"><!-- [et_pb_line_break_holder] -->          <div class=\"comp-icon-row\"><!-- [et_pb_line_break_holder] -->            <div class=\"comp-icon gdpr\"><!-- [et_pb_line_break_holder] -->              <svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/svg><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->            <div><!-- [et_pb_line_break_holder] -->              <div class=\"comp-title\">GDPR Compliant<\/div><!-- [et_pb_line_break_holder] -->              <div class=\"comp-cert\">EU Data Regulation<\/div><!-- [et_pb_line_break_holder] -->            <\/div><!-- [et_pb_line_break_holder] -->          <\/div><!-- [et_pb_line_break_holder] -->          <pee class=\"comp-body\">Unipile processes email data as a <strong>data processor<\/strong> under GDPR Article 28. Data processing agreements (DPAs) are available for all paid plans. User email data is processed only for the duration of the authenticated session and within the scope granted by the user&#8217;s OAuth consent. No parallel storage, no data sold to third parties.<\/pee><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->      <div class=\"cta-inline\"><!-- [et_pb_line_break_holder] -->        <span class=\"cta-btn\" data-upl-link=\"https:\/\/dashboard.unipile.com\/signup\/\" data-upl-target=\"_blank\"><svg viewBox=\"0 0 24 24\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg><span>Start building &#8211; free trial<\/span><\/span><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    document.querySelectorAll('#unipile-edev-ps [data-upl-link]').forEach(function(el){<!-- [et_pb_line_break_holder] -->      el.style.cursor='pointer';<!-- [et_pb_line_break_holder] -->      el.addEventListener('click',function(){<!-- [et_pb_line_break_holder] -->        var url=el.getAttribute('data-upl-link');<!-- [et_pb_line_break_holder] -->        var t=el.getAttribute('data-upl-target');<!-- [et_pb_line_break_holder] -->        if(t==='_blank'){window.open(url,'_blank');}else{window.location.href=url;}<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',init);}else{init();}<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls {<!-- [et_pb_line_break_holder] -->  background: transparent !important;<!-- [et_pb_line_break_holder] -->  padding: 70px 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls *,<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important; padding: 0 !important; box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important; outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important; letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important; text-decoration: none !important; list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .wrap {<!-- [et_pb_line_break_holder] -->  max-width: 1100px !important; margin: 0 auto !important;<!-- [et_pb_line_break_holder] -->  background: #f4f5f7 !important; border-radius: 20px !important; padding: 50px 48px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(239,68,68,0.10) !important; color: #dc2626 !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important; border-radius: 20px !important; font-size: 12px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; margin-bottom: 16px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .eyebrow-dot { width: 7px !important; height: 7px !important; background: #ef4444 !important; border-radius: 50% !important; flex-shrink: 0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important; font-size: 35px !important;<!-- [et_pb_line_break_holder] -->  font-weight: 700 !important; color: #0f2736 !important; line-height: 1.2 !important; margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .section-intro {<!-- [et_pb_line_break_holder] -->  font-size: 17px !important; color: #383838 !important; line-height: 1.75 !important; margin-bottom: 36px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfalls-grid {<!-- [et_pb_line_break_holder] -->  display: grid !important; grid-template-columns: repeat(2, 1fr) !important; gap: 18px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-card {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important; border-radius: 14px !important; padding: 26px !important; border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-icon-row {<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: flex-start !important; gap: 14px !important; margin-bottom: 12px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-icon {<!-- [et_pb_line_break_holder] -->  width: 38px !important; height: 38px !important; min-width: 38px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 10px !important; background: rgba(239,68,68,0.09) !important;<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; justify-content: center !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-icon svg {<!-- [et_pb_line_break_holder] -->  width: 18px !important; height: 18px !important; stroke: #dc2626 !important;<!-- [et_pb_line_break_holder] -->  fill: none !important; stroke-width: 2 !important; stroke-linecap: round !important; stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-title { font-size: 15px !important; font-weight: 700 !important; color: #0f2736 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-body { font-size: 13.5px !important; color: #64748b !important; line-height: 1.7 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-body strong { font-weight: 600 !important; color: #374151 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-fix {<!-- [et_pb_line_break_holder] -->  margin-top: 10px !important; padding-top: 10px !important; border-top: 1px solid #f0f1f3 !important;<!-- [et_pb_line_break_holder] -->  font-size: 12.5px !important; color: #2aaa7e !important; font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  display: flex !important; gap: 6px !important; align-items: flex-start !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-pitfalls .pitfall-fix svg {<!-- [et_pb_line_break_holder] -->  width: 13px !important; height: 13px !important; stroke: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  fill: none !important; stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important; flex-shrink: 0 !important; margin-top: 2px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-pitfalls .wrap { padding: 36px 24px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-pitfalls h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-pitfalls .pitfalls-grid { grid-template-columns: 1fr !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-pitfalls .wrap { padding: 28px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-pitfalls h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-pitfalls\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-pitfalls\" style=\"display:block;position:relative;top:-80px;visibility:hidden;\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"wrap\"><!-- [et_pb_line_break_holder] -->    <div class=\"eyebrow\"><span class=\"eyebrow-dot\"><\/span><span>Common Pitfalls<\/span><\/div><!-- [et_pb_line_break_holder] -->    <h2>Common pitfalls in email API integration (and how to fix them)<\/h2><!-- [et_pb_line_break_holder] -->    <pee class=\"section-intro\">Every developer building their first email API integration hits the same four walls. Here they are &#8211; and how to handle each one correctly.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"pitfalls-grid\"><!-- [et_pb_line_break_holder] -->      <div class=\"pitfall-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"pitfall-icon-row\"><!-- [et_pb_line_break_holder] -->          <div class=\"pitfall-icon\"><svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"pitfall-title\">Rate limit breaches<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"pitfall-body\">Gmail&#8217;s 250 quota units per user per second sounds generous until you realize listing 10 messages costs 5-10 units each and fetching full bodies adds per-byte quota. Microsoft Graph caps at 10,000 requests per 10 minutes per app per tenant. <strong>Hitting the limit returns 429 &#8211; Too Many Requests.<\/strong> Without retry logic your sync loop crashes silently.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"pitfall-fix\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>Fix: implement exponential backoff with jitter. Respect the Retry-After header. Batch message fetches when possible. Unipile abstracts rate limits and handles retries automatically.<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"pitfall-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"pitfall-icon-row\"><!-- [et_pb_line_break_holder] -->          <div class=\"pitfall-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"pitfall-title\">Token expiry and refresh failures<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"pitfall-body\">Google access tokens expire after 3,600 seconds. Microsoft tokens after 60-90 minutes. <strong>If your refresh token is revoked<\/strong> (user changes password, revokes app access, or the token has not been used in 6 months for Google), your entire sync silently stops. No error is surfaced unless you monitor the refresh call response.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"pitfall-fix\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>Fix: monitor refresh token validity separately from access tokens. Store last-refreshed timestamp. Alert when refresh fails. With Unipile, token state is managed server-side &#8211; you only interact with your API key.<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"pitfall-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"pitfall-icon-row\"><!-- [et_pb_line_break_holder] -->          <div class=\"pitfall-icon\"><svg viewBox=\"0 0 24 24\"><polyline points=\"16 3 21 3 21 8\"\/><line x1=\"4\" y1=\"20\" x2=\"21\" y2=\"3\"\/><polyline points=\"21 16 21 21 16 21\"\/><line x1=\"15\" y1=\"15\" x2=\"21\" y2=\"21\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"pitfall-title\">Webhook subscription expiry<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"pitfall-body\">Microsoft Graph subscriptions expire after a maximum of 4,230 minutes (~3 days for mail). <strong>Forgetting to renew them means no more push notifications<\/strong> &#8211; your app falls back to polling or misses events entirely. Gmail Pub\/Sub subscriptions are more persistent but require a GCP subscription to remain valid and the topic to exist.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"pitfall-fix\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>Fix: implement a background job that renews subscriptions before they expire. Log each renewal. Unipile normalizes webhooks across providers and handles subscription lifecycle internally.<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"pitfall-card\"><!-- [et_pb_line_break_holder] -->        <div class=\"pitfall-icon-row\"><!-- [et_pb_line_break_holder] -->          <div class=\"pitfall-icon\"><svg viewBox=\"0 0 24 24\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->          <div class=\"pitfall-title\">Sync state corruption<\/div><!-- [et_pb_line_break_holder] -->        <\/div><!-- [et_pb_line_break_holder] -->        <pee class=\"pitfall-body\">Email APIs are eventually consistent. If your sync process crashes mid-run, you may <strong>duplicate emails, skip a page of results, or miss deletes<\/strong>. Gmail uses historyId for incremental sync; Microsoft Graph uses deltaToken. Both require careful cursor management across restarts. IMAP has no native sync state &#8211; you must maintain your own UID tracking.<\/pee><!-- [et_pb_line_break_holder] -->        <div class=\"pitfall-fix\"><svg viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><span>Fix: use provider-native delta\/history tokens for incremental sync. Persist cursor state to durable storage before processing. Implement idempotency on write operations. Unipile tracks sync state per linked account.<\/span><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; custom_padding=&#8221;0px|0px|0px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221; da_disable_devices=&#8221;off|off|off&#8221;][et_pb_row _builder_version=&#8221;4.27.3&#8243; background_color=&#8221;transparent&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.3&#8243; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@700;800&#038;display=swap\" rel=\"stylesheet\"><!-- [et_pb_line_break_holder] --><script type=\"application\/ld+json\"><!-- [et_pb_line_break_holder] -->{<!-- [et_pb_line_break_holder] -->  \"@context\": \"https:\/\/schema.org\",<!-- [et_pb_line_break_holder] -->  \"@type\": \"FAQPage\",<!-- [et_pb_line_break_holder] -->  \"mainEntity\": [<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"What is an email API for developers?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"An email API for developers is a programmatic interface that lets your application authenticate as a user and read, send, or manage that user's emails inside Gmail, Outlook, or an IMAP mailbox via OAuth 2.0. It is different from a transactional email API (SendGrid, Mailgun, Resend) which sends marketing or notification mail from a domain you control.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"What is the difference between Gmail API and Microsoft Graph for email?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Gmail API and Microsoft Graph are both OAuth 2.0 email APIs but use different auth flows, response formats, and webhook mechanisms. Gmail uses Google Pub\/Sub for push notifications and returns Gmail-specific JSON with base64url-encoded bodies. Microsoft Graph uses change notification subscriptions (max around 3 day TTL) and returns OData-formatted responses. Both require separate SDK setup and token management.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"How do I integrate email API with Node.js?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"For a unified approach, install the Unipile Node.js SDK and call client.email.listAll() to read emails or client.email.send() to send across Gmail, Outlook, and IMAP with a single code path. For native Gmail, use the googleapis npm package. For Microsoft Graph, use @microsoft\/microsoft-graph-client.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"What email providers does Unipile's email API support?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Unipile's email API for developers supports three providers: Gmail (Google OAuth), Outlook\/Microsoft 365\/Exchange Online (Microsoft OAuth via Microsoft Graph), and IMAP (universal fallback covering any IMAP-compatible mailbox). All three providers share a unified JSON schema with the same endpoints, response format, and webhook structure.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"Do I need to implement OAuth myself to use an email API?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"If you build natively against Gmail API or Microsoft Graph, yes - you must implement the full OAuth 2.0 authorization code flow, store tokens securely, handle token refresh, and manage scope consent. If you use Unipile, the OAuth flow and token management are handled server-side.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"What are the rate limits for email APIs?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Gmail API allows 250 quota units per user per second. Microsoft Graph limits to 10,000 requests per 10 minutes per app per tenant. IMAP servers vary by host. Exceeding limits returns 429 Too Many Requests with a Retry-After header. Best practice is exponential backoff with jitter. Unipile abstracts rate limits and handles retries automatically.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"Is IMAP still relevant for email API integration in 2026?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"IMAP remains relevant as a universal fallback for providers without a REST API - ProtonMail Bridge, Fastmail, Yahoo, and most corporate Exchange servers. However, Gmail blocked basic IMAP auth for personal accounts in 2022, requiring XOAUTH2. IMAP has no native webhooks, requiring IDLE polling for real-time events. For Gmail and Outlook, native REST APIs or a unified layer are preferred.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"What compliance certifications does Unipile have?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Unipile is SOC 2 Type II certified and GDPR compliant. SOC 2 Type II means independent auditors have verified Unipile's security, availability, and confidentiality controls over a sustained period. GDPR compliance covers data processing agreements available on paid plans, with user email data processed only within the scope of the user's OAuth consent.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"Can I try the email API for developers for free?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"Yes. Gmail API and Microsoft Graph are free within quota limits. Unipile offers a 7-day free trial with no credit card required, giving full access to the unified email API for developers including read, send, webhooks, OAuth account linking, and the Node.js SDK across Gmail, Outlook, and IMAP.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    },<!-- [et_pb_line_break_holder] -->    {<!-- [et_pb_line_break_holder] -->      \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->      \"name\": \"What is the difference between a transactional email API and an email API for developers?\",<!-- [et_pb_line_break_holder] -->      \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->        \"text\": \"A transactional email API (SendGrid, Mailgun, Resend) sends emails from your own domain - used for password resets, order confirmations, and marketing. An email API for developers (Gmail API, Microsoft Graph, Unipile) acts on behalf of your user inside their existing mailbox - reading their emails, sending from their account, and syncing conversation history. These serve entirely different use cases.\"<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  ]<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] --><div id=\"unipile-edev-faq\" class=\"edevfaq-wrapper\"><!-- [et_pb_line_break_holder] --><style><!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper {<!-- [et_pb_line_break_holder] -->  background: transparent !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper,<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper *,<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper *::before,<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper *::after {<!-- [et_pb_line_break_holder] -->  margin: 0 !important; padding: 0 !important; box-sizing: border-box !important;<!-- [et_pb_line_break_holder] -->  border: none !important; outline: none !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;<!-- [et_pb_line_break_holder] -->  line-height: 1.5 !important; letter-spacing: normal !important;<!-- [et_pb_line_break_holder] -->  text-transform: none !important; text-decoration: none !important; list-style: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper { padding: 72px 20px 80px !important; background: transparent !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-wrap { max-width: 900px !important; margin: 0 auto !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-eyebrow {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important; color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  padding: 6px 14px !important; border-radius: 20px !important;<!-- [et_pb_line_break_holder] -->  font-size: 12px !important; font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  text-transform: uppercase !important; letter-spacing: 0.5px !important;<!-- [et_pb_line_break_holder] -->  width: fit-content !important; margin-bottom: 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-dot { width: 7px !important; height: 7px !important; background: #3BB98B !important; border-radius: 50% !important; flex-shrink: 0 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-h2 {<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important;<!-- [et_pb_line_break_holder] -->  font-size: 35px !important; font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  color: #0f2736 !important; line-height: 1.2 !important;<!-- [et_pb_line_break_holder] -->  margin-bottom: 14px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-desc { font-size: 17px !important; color: #383838 !important; line-height: 1.8 !important; margin-bottom: 36px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-list { display: flex !important; flex-direction: column !important; gap: 12px !important; margin-bottom: 36px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-item {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  transition: border-color 0.2s !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-item.active { border-color: #3BB98B !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-question {<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; gap: 14px !important;<!-- [et_pb_line_break_holder] -->  padding: 20px 24px !important; cursor: pointer !important; user-select: none !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-num {<!-- [et_pb_line_break_holder] -->  width: 38px !important; height: 38px !important; min-width: 38px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 10px !important;<!-- [et_pb_line_break_holder] -->  background: rgba(59,185,139,0.12) !important; color: #2aaa7e !important;<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; justify-content: center !important;<!-- [et_pb_line_break_holder] -->  font-family: 'Poppins', sans-serif !important; font-size: 13px !important; font-weight: 700 !important;<!-- [et_pb_line_break_holder] -->  transition: background 0.2s, color 0.2s !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-item.active .faq-num { background: #3BB98B !important; color: #ffffff !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-q-text { font-size: 15px !important; font-weight: 600 !important; color: #0f2736 !important; flex: 1 !important; line-height: 1.4 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-toggle {<!-- [et_pb_line_break_holder] -->  width: 24px !important; height: 24px !important; min-width: 24px !important;<!-- [et_pb_line_break_holder] -->  border-radius: 50% !important;<!-- [et_pb_line_break_holder] -->  background: #f1f5f9 !important;<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; justify-content: center !important;<!-- [et_pb_line_break_holder] -->  transition: background 0.2s, transform 0.25s !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-item.active .faq-toggle { background: rgba(59,185,139,0.12) !important; transform: rotate(45deg) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-toggle svg {<!-- [et_pb_line_break_holder] -->  width: 14px !important; height: 14px !important;<!-- [et_pb_line_break_holder] -->  stroke: #64748b !important; fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-item.active .faq-toggle svg { stroke: #3BB98B !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-answer {<!-- [et_pb_line_break_holder] -->  max-height: 0 !important;<!-- [et_pb_line_break_holder] -->  overflow: hidden !important;<!-- [et_pb_line_break_holder] -->  transition: max-height 0.35s ease !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-item.active .faq-answer { max-height: 800px !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-answer-inner {<!-- [et_pb_line_break_holder] -->  padding: 0 28px 28px 76px !important;<!-- [et_pb_line_break_holder] -->  font-size: 15px !important; color: #383838 !important; line-height: 1.8 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-answer-inner a { color: #2aaa7e !important; text-decoration: underline !important; cursor: pointer !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-answer-inner strong { color: #0f2736 !important; font-weight: 700 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-answer-inner code { font-family: 'Courier New', monospace !important; font-size: 13px !important; background: rgba(15,39,54,0.07) !important; padding: 2px 6px !important; border-radius: 4px !important; color: #0f2736 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-cta-bar {<!-- [et_pb_line_break_holder] -->  background: #ffffff !important;<!-- [et_pb_line_break_holder] -->  border: 1px solid #e5e7eb !important;<!-- [et_pb_line_break_holder] -->  border-radius: 16px !important;<!-- [et_pb_line_break_holder] -->  padding: 24px 28px !important;<!-- [et_pb_line_break_holder] -->  display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 20px !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-cta-text {<!-- [et_pb_line_break_holder] -->  font-size: 15px !important; color: #383838 !important; line-height: 1.6 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-cta-text strong { color: #0f2736 !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-cta-btn {<!-- [et_pb_line_break_holder] -->  display: inline-flex !important; align-items: center !important; gap: 8px !important;<!-- [et_pb_line_break_holder] -->  background: #DDDF4C !important; color: #0f2736 !important;<!-- [et_pb_line_break_holder] -->  padding: 12px 22px !important; border-radius: 8px !important;<!-- [et_pb_line_break_holder] -->  font-size: 0.9rem !important; font-weight: 600 !important;<!-- [et_pb_line_break_holder] -->  cursor: pointer !important; white-space: nowrap !important;<!-- [et_pb_line_break_holder] -->  transition: transform 0.3s ease !important; flex-shrink: 0 !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-cta-btn:hover { transform: translateY(-5px) !important; }<!-- [et_pb_line_break_holder] -->#unipile-edev-faq.edevfaq-wrapper .faq-cta-btn svg {<!-- [et_pb_line_break_holder] -->  width: 15px !important; height: 15px !important;<!-- [et_pb_line_break_holder] -->  stroke: currentColor !important; fill: none !important;<!-- [et_pb_line_break_holder] -->  stroke-width: 2.5 !important; stroke-linecap: round !important; stroke-linejoin: round !important;<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 900px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-faq.edevfaq-wrapper { padding: 50px 20px 60px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-faq.edevfaq-wrapper .faq-h2 { font-size: 28px !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media (max-width: 600px) {<!-- [et_pb_line_break_holder] -->  #unipile-edev-faq.edevfaq-wrapper { padding: 40px 16px 50px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-faq.edevfaq-wrapper .faq-h2 { font-size: 26px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-faq.edevfaq-wrapper .faq-answer-inner { padding: 0 16px 24px 16px !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-faq.edevfaq-wrapper .faq-cta-bar { flex-direction: column !important; align-items: flex-start !important; }<!-- [et_pb_line_break_holder] -->  #unipile-edev-faq.edevfaq-wrapper .faq-cta-btn { width: 100% !important; justify-content: center !important; }<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style><!-- [et_pb_line_break_holder] --><div class=\"faq-wrap\"><!-- [et_pb_line_break_holder] -->  <span id=\"edev-faq\"><\/span><!-- [et_pb_line_break_holder] -->  <div class=\"faq-eyebrow\"><span class=\"faq-dot\"><\/span><span>FAQ<\/span><\/div><!-- [et_pb_line_break_holder] -->  <h2 class=\"faq-h2\">Email API for developers &#8211; frequently asked questions<\/h2><!-- [et_pb_line_break_holder] -->  <pee class=\"faq-desc\">Answers to the questions developers ask most often when building their first email API integration across Gmail, Outlook, and IMAP.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <div class=\"faq-list\" id=\"faq-list-edev\"><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">01<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">What is an email API for developers?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">An <strong>email API for developers<\/strong> is a programmatic interface that lets your application authenticate as a user and then read, send, or manage that user&#8217;s emails inside Gmail, Outlook, or an IMAP mailbox &#8211; without storing their password. It uses OAuth 2.0 for authentication and returns structured JSON. It is different from a transactional email API, which sends marketing or notification mail on your brand&#8217;s behalf. For the full picture, see the <a href=\"https:\/\/www.unipile.com\/email-api-guide\/\">complete Email API Guide<\/a>.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">02<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">What is the difference between Gmail API and Microsoft Graph for email?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">Gmail API and Microsoft Graph are both OAuth 2.0 email APIs but use different auth flows, response formats, and webhook mechanisms. Gmail uses Google Pub\/Sub for push notifications and returns messages in a Gmail-specific JSON envelope with base64url-encoded bodies. Microsoft Graph uses change notification subscriptions (max ~3 day TTL) and returns OData-formatted responses. Both require separate SDK setup and token management. See the <a href=\"https:\/\/www.unipile.com\/gmail-api-send-email-a-comprehensive-guide-for-developers\/\">Gmail API guide<\/a> and <a href=\"https:\/\/www.unipile.com\/microsoft-graph-api-email-integration-guide\/\">Microsoft Graph guide<\/a> for full walkthroughs.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">03<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">How do I integrate email API with Node.js?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">For a unified approach, install the Unipile Node.js SDK: <code>npm install @unipile\/node-sdk<\/code>. Then create a client with your API URL and access token, and call <code>client.email.listAll()<\/code> to read emails or <code>client.email.send()<\/code> to send &#8211; across Gmail, Outlook, and IMAP with a single code path. For native Gmail, use the <code>googleapis<\/code> npm package. For Microsoft Graph, use <code>@microsoft\/microsoft-graph-client<\/code>.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">04<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">What email providers does Unipile&#8217;s email API support?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">Unipile&#8217;s email API for developers supports three providers: <strong>Gmail<\/strong> (Google OAuth), <strong>Outlook \/ Microsoft 365 \/ Exchange Online<\/strong> (Microsoft OAuth via Microsoft Graph), and <strong>IMAP<\/strong> (universal fallback covering any IMAP-compatible mailbox). All three providers share a unified JSON schema &#8211; same endpoints, same response format, same webhook structure.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">05<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">Do I need to implement OAuth myself to use an email API?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">If you build natively against Gmail API or Microsoft Graph, yes &#8211; you must implement the full OAuth 2.0 authorization code flow, store tokens securely, handle token refresh, and manage scope consent. If you use Unipile, the OAuth flow and token management are handled server-side. You link accounts once through Unipile&#8217;s hosted OAuth flow and then use a single API key. See the <a href=\"https:\/\/www.unipile.com\/oauth-email-api\/\">OAuth Email API guide<\/a> for the full implementation walkthrough.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">06<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">What are the rate limits for email APIs?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\"><strong>Gmail API<\/strong> allows 250 quota units per user per second, with each message fetch consuming units proportional to the operation. <strong>Microsoft Graph<\/strong> limits to 10,000 requests per 10 minutes per app per tenant. <strong>IMAP<\/strong> servers vary by host. Exceeding limits returns 429 Too Many Requests with a Retry-After header. Best practice is exponential backoff with jitter. Unipile abstracts rate limits and handles retries automatically on your behalf.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">07<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">Is IMAP still relevant for email API integration in 2026?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">IMAP remains relevant as a universal fallback for providers without a REST API &#8211; ProtonMail Bridge, Fastmail, Yahoo, and most corporate Exchange servers. However, <strong>Gmail blocked basic IMAP auth for personal accounts in 2022<\/strong>, requiring XOAUTH2. IMAP has no native webhooks, requiring IDLE polling for real-time events. For Gmail and Outlook, their native REST APIs or a unified layer are preferred. See the full <a href=\"https:\/\/www.unipile.com\/the-developers-guide-to-imap-api-solution\/\">IMAP API guide<\/a>.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">08<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">What compliance certifications does Unipile have?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">Unipile is <strong>SOC 2 Type II certified<\/strong> and <strong>GDPR compliant<\/strong>. SOC 2 Type II means independent auditors have verified Unipile&#8217;s security, availability, and confidentiality controls over a sustained period. GDPR compliance covers data processing agreements (DPAs) available on paid plans, with user email data processed only within the scope of the user&#8217;s OAuth consent. No parallel storage, no data sold to third parties.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">09<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">Can I try the email API for developers for free?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">Yes. Gmail API and Microsoft Graph are free within quota limits. <strong>Unipile offers a 7-day free trial<\/strong> with no credit card required, giving full access to the unified email API for developers &#8211; including read, send, webhooks, OAuth account linking, and the Node.js SDK &#8211; across Gmail, Outlook, and IMAP. See the <a href=\"https:\/\/www.unipile.com\/free-email-api\/\">free email API guide<\/a> for details.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <div class=\"faq-item\"><!-- [et_pb_line_break_holder] -->      <div class=\"faq-question\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-num\">10<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-q-text\">What is the difference between a transactional email API and an email API for developers?<\/div><!-- [et_pb_line_break_holder] -->        <div class=\"faq-toggle\"><svg viewBox=\"0 0 24 24\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><\/svg><\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->      <div class=\"faq-answer\"><!-- [et_pb_line_break_holder] -->        <div class=\"faq-answer-inner\">A <strong>transactional email API<\/strong> (SendGrid, Mailgun, Resend) sends emails from your own domain &#8211; used for password resets, order confirmations, and marketing campaigns. An <strong>email API for developers<\/strong> (Gmail API, Microsoft Graph, Unipile) acts on behalf of your user inside their existing mailbox &#8211; reading their emails, sending from their account, and syncing conversation history. These serve entirely different use cases, have different infrastructure, and different compliance requirements. See the <a href=\"https:\/\/www.unipile.com\/email-api-guide\/\">Email API Guide<\/a> for the full picture.<\/div><!-- [et_pb_line_break_holder] -->      <\/div><!-- [et_pb_line_break_holder] -->    <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <div class=\"faq-cta-bar\"><!-- [et_pb_line_break_holder] -->    <pee class=\"faq-cta-text\"><strong>Still have questions?<\/strong> Talk to an email API expert &#8211; we&#8217;ll help you choose the right stack for your use case.<\/pee><!-- [et_pb_line_break_holder] -->    <span class=\"faq-cta-btn\" onclick=\"if(window.$crisp){$crisp.push(['do','chat:open'])}\"><!-- [et_pb_line_break_holder] -->      <svg viewBox=\"0 0 24 24\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg><!-- [et_pb_line_break_holder] -->      <span>Talk to an expert<\/span><!-- [et_pb_line_break_holder] -->    <\/span><!-- [et_pb_line_break_holder] -->  <\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><\/div><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  function init(){<!-- [et_pb_line_break_holder] -->    var list = document.getElementById('faq-list-edev');<!-- [et_pb_line_break_holder] -->    if(!list) return;<!-- [et_pb_line_break_holder] -->    var items = list.querySelectorAll('.faq-item');<!-- [et_pb_line_break_holder] -->    items.forEach(function(item){<!-- [et_pb_line_break_holder] -->      var q = item.querySelector('.faq-question');<!-- [et_pb_line_break_holder] -->      if(!q) return;<!-- [et_pb_line_break_holder] -->      q.addEventListener('click', function(){<!-- [et_pb_line_break_holder] -->        var isActive = item.classList.contains('active');<!-- [et_pb_line_break_holder] -->        items.forEach(function(i){ i.classList.remove('active'); });<!-- [et_pb_line_break_holder] -->        if(!isActive){ item.classList.add('active'); }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(document.readyState === 'loading'){<!-- [et_pb_line_break_holder] -->    document.addEventListener('DOMContentLoaded', init);<!-- [et_pb_line_break_holder] -->  } else { init(); }<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"<p>Build vs Buy Native email API vs unified email API: real code comparison Seeing both approaches side-by-side &#8211; in actual code &#8211; makes the tradeoff concrete. Select a language below to compare reading emails natively versus via the Unipile unified email API. Node.js Python Go \/ cURL Native &#8211; Gmail API (Node.js) gmail-native.js \/\/ 1. [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":278809,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[37],"tags":[],"post_folder":[],"class_list":["post-278797","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cat-guides"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Email API for Developers: Build with Gmail, Outlook &amp; IMAP (2026 Guide) - Unipile<\/title>\n<meta name=\"description\" content=\"Build email integrations as a developer. Compare Gmail API, Microsoft Graph &amp; IMAP, then ship with a unified API. SDKs, OAuth flows, code samples. Free trial.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.unipile.com\/es\/api-de-correo-electronico-para-desarrolladores\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Email API for Developers: Build with Gmail, Outlook &amp; IMAP (2026 Guide) - Unipile\" \/>\n<meta property=\"og:description\" content=\"Build email integrations as a developer. Compare Gmail API, Microsoft Graph &amp; IMAP, then ship with a unified API. SDKs, OAuth flows, code samples. Free trial.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.unipile.com\/es\/api-de-correo-electronico-para-desarrolladores\/\" \/>\n<meta property=\"og:site_name\" content=\"Unipile\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/unipilefr\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-13T07:43:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-13T12:59:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/05\/email-api-for-developers.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Damien Girardeau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@UnipileAPI\" \/>\n<meta name=\"twitter:site\" content=\"@UnipileAPI\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Damien Girardeau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/\"},\"author\":{\"name\":\"Damien Girardeau\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/person\\\/a2ac44e22bdc27d497ce8b58716a673e\"},\"headline\":\"Email API for Developers: Build with Gmail, Outlook &#038; IMAP (2026 Guide)\",\"datePublished\":\"2026-05-13T07:43:39+00:00\",\"dateModified\":\"2026-05-13T12:59:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/\"},\"wordCount\":4844,\"publisher\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/email-api-for-developers.png\",\"articleSection\":[\"Guides\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/\",\"name\":\"Email API for Developers: Build with Gmail, Outlook & IMAP (2026 Guide) - Unipile\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/email-api-for-developers.png\",\"datePublished\":\"2026-05-13T07:43:39+00:00\",\"dateModified\":\"2026-05-13T12:59:33+00:00\",\"description\":\"Build email integrations as a developer. Compare Gmail API, Microsoft Graph & IMAP, then ship with a unified API. SDKs, OAuth flows, code samples. Free trial.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/email-api-for-developers.png\",\"contentUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/email-api-for-developers.png\",\"width\":2400,\"height\":1600,\"caption\":\"Email API for Developers - Build with Gmail, Outlook & IMAP behind one unified API. SDKs in Node, Python and cURL, OAuth managed, webhooks included.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/email-api-for-developers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.unipile.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Email API for Developers: Build with Gmail, Outlook &#038; IMAP (2026 Guide)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#website\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/\",\"name\":\"Unipile\",\"description\":\"Integrate Messaging &amp; Email, Connect with Ease via API\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.unipile.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#organization\",\"name\":\"Unipile\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/logo-unipile.png\",\"contentUrl\":\"https:\\\/\\\/www.unipile.com\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/logo-unipile.png\",\"width\":200,\"height\":49,\"caption\":\"Unipile\"},\"image\":{\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/unipilefr\",\"https:\\\/\\\/x.com\\\/UnipileAPI\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/unipile\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.unipile.com\\\/#\\\/schema\\\/person\\\/a2ac44e22bdc27d497ce8b58716a673e\",\"name\":\"Damien Girardeau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g\",\"caption\":\"Damien Girardeau\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"API de correo electr\u00f3nico para desarrolladores: crea con Gmail, Outlook e IMAP (Gu\u00eda 2026) - Unipile","description":"Crea integraciones de correo electr\u00f3nico como desarrollador. Compara la API de Gmail, Microsoft Graph e IMAP, y luego env\u00edalo con una API unificada. SDK, flujos de OAuth, ejemplos de c\u00f3digo. Prueba gratis.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.unipile.com\/es\/api-de-correo-electronico-para-desarrolladores\/","og_locale":"es_ES","og_type":"article","og_title":"Email API for Developers: Build with Gmail, Outlook & IMAP (2026 Guide) - Unipile","og_description":"Build email integrations as a developer. Compare Gmail API, Microsoft Graph & IMAP, then ship with a unified API. SDKs, OAuth flows, code samples. Free trial.","og_url":"https:\/\/www.unipile.com\/es\/api-de-correo-electronico-para-desarrolladores\/","og_site_name":"Unipile","article_publisher":"https:\/\/www.facebook.com\/unipilefr","article_published_time":"2026-05-13T07:43:39+00:00","article_modified_time":"2026-05-13T12:59:33+00:00","og_image":[{"width":2400,"height":1600,"url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/05\/email-api-for-developers.png","type":"image\/png"}],"author":"Damien Girardeau","twitter_card":"summary_large_image","twitter_creator":"@UnipileAPI","twitter_site":"@UnipileAPI","twitter_misc":{"Escrito por":"Damien Girardeau","Tiempo de lectura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.unipile.com\/email-api-for-developers\/#article","isPartOf":{"@id":"https:\/\/www.unipile.com\/email-api-for-developers\/"},"author":{"name":"Damien Girardeau","@id":"https:\/\/www.unipile.com\/#\/schema\/person\/a2ac44e22bdc27d497ce8b58716a673e"},"headline":"Email API for Developers: Build with Gmail, Outlook &#038; IMAP (2026 Guide)","datePublished":"2026-05-13T07:43:39+00:00","dateModified":"2026-05-13T12:59:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.unipile.com\/email-api-for-developers\/"},"wordCount":4844,"publisher":{"@id":"https:\/\/www.unipile.com\/#organization"},"image":{"@id":"https:\/\/www.unipile.com\/email-api-for-developers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/05\/email-api-for-developers.png","articleSection":["Guides"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/www.unipile.com\/email-api-for-developers\/","url":"https:\/\/www.unipile.com\/email-api-for-developers\/","name":"API de correo electr\u00f3nico para desarrolladores: crea con Gmail, Outlook e IMAP (Gu\u00eda 2026) - Unipile","isPartOf":{"@id":"https:\/\/www.unipile.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.unipile.com\/email-api-for-developers\/#primaryimage"},"image":{"@id":"https:\/\/www.unipile.com\/email-api-for-developers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/05\/email-api-for-developers.png","datePublished":"2026-05-13T07:43:39+00:00","dateModified":"2026-05-13T12:59:33+00:00","description":"Crea integraciones de correo electr\u00f3nico como desarrollador. Compara la API de Gmail, Microsoft Graph e IMAP, y luego env\u00edalo con una API unificada. SDK, flujos de OAuth, ejemplos de c\u00f3digo. Prueba gratis.","breadcrumb":{"@id":"https:\/\/www.unipile.com\/email-api-for-developers\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.unipile.com\/email-api-for-developers\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.unipile.com\/email-api-for-developers\/#primaryimage","url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/05\/email-api-for-developers.png","contentUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2026\/05\/email-api-for-developers.png","width":2400,"height":1600,"caption":"Email API for Developers - Build with Gmail, Outlook & IMAP behind one unified API. SDKs in Node, Python and cURL, OAuth managed, webhooks included."},{"@type":"BreadcrumbList","@id":"https:\/\/www.unipile.com\/email-api-for-developers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.unipile.com\/"},{"@type":"ListItem","position":2,"name":"Email API for Developers: Build with Gmail, Outlook &#038; IMAP (2026 Guide)"}]},{"@type":"WebSite","@id":"https:\/\/www.unipile.com\/#website","url":"https:\/\/www.unipile.com\/","name":"Unipile","description":"Integre la mensajer\u00eda y el correo electr\u00f3nico, con\u00e9ctese f\u00e1cilmente mediante API","publisher":{"@id":"https:\/\/www.unipile.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.unipile.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.unipile.com\/#organization","name":"Unipile","url":"https:\/\/www.unipile.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.unipile.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.unipile.com\/wp-content\/uploads\/2021\/05\/logo-unipile.png","contentUrl":"https:\/\/www.unipile.com\/wp-content\/uploads\/2021\/05\/logo-unipile.png","width":200,"height":49,"caption":"Unipile"},"image":{"@id":"https:\/\/www.unipile.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/unipilefr","https:\/\/x.com\/UnipileAPI","https:\/\/www.linkedin.com\/company\/unipile\/"]},{"@type":"Person","@id":"https:\/\/www.unipile.com\/#\/schema\/person\/a2ac44e22bdc27d497ce8b58716a673e","name":"Damien Girardeau","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/12dd140720736a8db29f540c42a17d2680cd54a04fb26bb7b55423c179b065a9?s=96&d=mm&r=g","caption":"Damien Girardeau"}}]}},"_links":{"self":[{"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/posts\/278797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/comments?post=278797"}],"version-history":[{"count":7,"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/posts\/278797\/revisions"}],"predecessor-version":[{"id":278808,"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/posts\/278797\/revisions\/278808"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/media\/278809"}],"wp:attachment":[{"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/media?parent=278797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/categories?post=278797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/tags?post=278797"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/www.unipile.com\/es\/wp-json\/wp\/v2\/post_folder?post=278797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}