{"id":19932,"date":"2024-11-21T00:00:00","date_gmt":"2024-11-21T00:00:00","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/verificar-email-con-nodejs\/"},"modified":"2026-09-14T22:53:18","modified_gmt":"2026-09-14T22:53:18","slug":"verificar-email-con-nodejs","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/","title":{"rendered":"Verificaci\u00f3n de emails con node.js"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">From time to time, people on your mailing list might change jobs or email service providers. When they do, their emails change too, leaving invalid addresses on your list. These invalid emails can lead to high bounce rates, which harms your sender reputation and increases the chance of being blacklisted as spam.<\/p>\n\n<p class=\"wp-block-paragraph\">Email validation helps prevent invalid emails by ensuring your emails reach real, active inboxes. By regularly verifying email addresses, you reduce the chances of being bounced, protect your reputation with internet service providers (ISPs), and increase the overall deliverability of your campaigns.<\/p>\n\n<p class=\"wp-block-paragraph\">If you&#8217;re looking to validate a batch of email addresses, <a href=\"https:\/\/www.mailgun.com\/es\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Mailgun<\/a> offers a <a href=\"https:\/\/www.mailgun.com\/es\/blog\/product\/bulk-verifications-accurate-fast\/\" target=\"_tabs\" rel=\"noopener noreferrer\">bulk email validation API<\/a> that can help you do just that. In this tutorial, you&#8217;ll learn how to efficiently verify large lists of email addresses in <a href=\"https:\/\/nodejs.org\/en\" target=\"_tabs\" rel=\"noopener noreferrer\">Node.js<\/a> applications with Mailgun and integrate the process into your application to ensure high deliverability.<\/p>\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-9937\"><p class=\"h5 m-0\" id=\"toc-title-9937\">\u00cdndice<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#prerequisites\">Prerequisites<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#how-to-verify-emails-with-node-js-and-the-mailgun-api\">How to verify emails with Node.js and the Mailgun API<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#getting-api-keys-and-setting-up-a-custom-domain\">Getting API keys and setting up a custom domain<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#setting-up-your-development-environment\">Setting up your development environment<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#validating-emails-in-a-mailing-list\">Validating emails in a mailing list<\/a><a class=\"scrollme link-body-color\" href=\"#fetching-validation-results\">Fetching validation results<\/a><a class=\"scrollme link-body-color\" href=\"#heres-a-breakdown-of-the-results\">Here&#8217;s a breakdown of the results:<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#error-handling-and-debugging\">Error handling and debugging<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">07<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#best-practices-for-bulk-email-validation\">Best practices for bulk email validation<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">08<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#wrapping-up\">Wrapping up<\/a><\/div><\/div><\/nav>\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n<p class=\"wp-block-paragraph\">To follow along with this tutorial, you&#8217;ll need:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Basic knowledge of Node.js<\/li>\n\n\n\n<li>A <a href=\"https:\/\/signup.mailgun.com\/new\/signup\" target=\"_tabs\" rel=\"noopener noreferrer\">Mailgun account<\/a>; to use bulk email validation, you must have a paid account<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">How to verify emails with Node.js and the Mailgun API<\/h2>\n\n<p class=\"wp-block-paragraph\">To verify emails with Node.js using the Mailgun API, you have to create a mailing list and add the emails you want to validate. You can then start a validation job on the mailing list and retrieve the results. But, before you can make requests to the Mailgun API, you need your authentication details from your dashboard. You also need to set up and verify a custom domain to create a mailing list.<\/p>\n\n<h2 class=\"wp-block-heading\">Getting API keys and setting up a custom domain<\/h2>\n\n<p class=\"wp-block-paragraph\">The Mailgun API authorizes requests using HTTP Basic Auth, which requires that you include a username and password in your Authorization header. To obtain the required details, log in to your Mailgun account, click the dropdown icon at the top right of your screen, and click <b>API Security<\/b> in the menu:<\/p>\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4060\" width=\"1242\" height=\"596\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM.png\" alt=\"API Security screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM.png 1242w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM-300x144.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM-768x369.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM-1024x491.png 1024w\" sizes=\"(max-width: 1242px) 100vw, 1242px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">On the <b>API Security<\/b> page, click the <b>Add new key<\/b> button to reveal a modal with a form. Fill out the description on the form, click <b>Create Key<\/b>, copy the API key, and store it securely; this is your password, and you can only see it once:<\/p>\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4065\" width=\"1232\" height=\"626\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM.png\" alt=\"Create Key screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM.png 1232w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM-300x152.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM-768x390.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM-1024x520.png 1024w\" sizes=\"(max-width: 1232px) 100vw, 1232px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">Next, you can choose to <a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/360026833053-Domain-Verification-Setup-Guide\" target=\"_tabs\" rel=\"noopener noreferrer\">add a custom domain to your Mailgun account and verify it<\/a>. This step is optional and is only required in production environments. For this tutorial, you&#8217;ll use the default domain provided by Mailgun, which you can find by navigating to <b>Send &gt; Sending &gt; Domains<\/b>:<\/p>\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4070\" width=\"1242\" height=\"592\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM.png\" alt=\"Sending Domain screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM.png 1242w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM-300x143.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM-768x366.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM-1024x488.png 1024w\" sizes=\"(max-width: 1242px) 100vw, 1242px\" \/><\/figure>\n\n<p class=\"wp-block-paragraph\">Note the default domain name; you&#8217;ll need it to create a mailing list.<br \/>\nAfter retrieving your authentication details and adding a custom domain (or noting the default), it&#8217;s time to set up a Node.js development environment where you&#8217;ll make requests to the Mailgun API.<\/p>\n\n<h2 class=\"wp-block-heading\">Setting up your development environment<\/h2>\n\n<p class=\"wp-block-paragraph\">To set up a Node.js development environment, first create a new project directory and cd into it by running the following command:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    mkdir bulk-email-validation &amp;&amp; cd bulk-email-validationrnThen, initialize npm in your project by running this command:rnnpm init -yrnRun the following command to install the required dependencies:rnnpm install axios dotenv form-datarn\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">The installed dependencies include the following:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.npmjs.com\/package\/axios\" target=\"_tabs\" rel=\"noopener noreferrer\"><b>Axios<\/b><\/a>: This is a library that allows you to send requests and receive responses from an API. You&#8217;ll use Axios to communicate with the Mailgun API.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_tabs\" rel=\"noopener noreferrer\"><b>Dotenv<\/b><\/a>: This is a library that loads environmental variables to process.env. You&#8217;ll use it to manage your authentication details securely.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.npmjs.com\/package\/form-data\" target=\"_tabs\" rel=\"noopener noreferrer\"><b>Form-Data<\/b><\/a>: This is a library that creates readable multipart\/form-data streams. The Mailgun API only accepts data in multipart\/form-data, so you need this library to submit forms to the API.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\">After installing these dependencies, create an index.js file and a .env file. In your .env file, store the following variables and replace the placeholder values with their actual values:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    MAILGUN_USERNAME = apirnMAILGUN_PASSWORD = &lt;API_KEY&gt;rnThe value of your username must be api.rnIn your index.js file, add the following code block to import all the required dependencies and initialize dotenv:rnconst axios = require(&quot;axios&quot;);rnconst FormData = require(&quot;form-data&quot;);rnconst fs = require(&quot;node:fs&quot;);rnconst dotenv = require(&quot;dotenv&quot;);rndotenv.config();\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">This code block imports the dependencies required to make requests to the Mailgun API. In addition to the packages you installed earlier, the imports include the Node.js fs module, which you need to create a readable stream to the file containing your email list.<br \/>\nNow that your development environment is ready, you can validate email addresses in a mailing list.<\/p>\n\n<h2 class=\"wp-block-heading\">Validating emails in a mailing list<\/h2>\n\n<p class=\"wp-block-paragraph\">As mentioned in the prerequisites, to use the bulk email validation service with Mailgun, you must have a paid account.<\/p>\n\n<p class=\"wp-block-paragraph\">To create a validation job with the Mailgun API, you need to make a POST request to https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk\/${listId}, where listId is any arbitrary value you assign to the validation job.<\/p>\n\n<p class=\"wp-block-paragraph\">This endpoint accepts a form with a CSV file containing the email addresses you want to validate. The CSV file&#8217;s column header for emails needs to be either email or email_address, and the format must be either raw CSV or gzip. You can include an unlimited number of email addresses in the file; however, the file size cannot exceed 25 MB.<\/p>\n\n<p class=\"wp-block-paragraph\">The form key for the CSV file must be file, and the value must be a readable stream to the file path of your CSV file.<\/p>\n\n<p class=\"wp-block-paragraph\">You can add the code block below to your index.js file to implement a function to create a bulk validation job:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    const createBulkValidationJob = async (listId) =&gt; {rn  try {rn    \/\/ Create a new form data objectrn    const form = new FormData();rnrn    \/\/ Add the file to the formrn    form.append(&quot;file&quot;, fs.createReadStream(&quot;PATH_TO_CSV_FILE&quot;));rnrn    const response = await axios.post(rn      `https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk\/${listId}`,rn      form,rn      {rn        headers: {rn          ...file.getHeaders(),rn          Authorization:rn            &quot;Basic &quot; +rn            Buffer.from(rn              `${process.env.MAILGUN_USERNAME}:${process.env.MAILGUN_PASSWORD}`rn            ).toString(&quot;base64&quot;),rn        },rn      }rn    );rnrn    console.log(response.data);rn  } catch (error) {rn    console.error(error);rn  }rn};rnCalling this function with a listId should return a response similar to this:rn{rn  id: &#039;validation&#039;, \/\/ Arbitrary value you assigned to the validation jobrn  message: &#039;The validation job was submitted.&#039;rn}\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<p class=\"wp-block-paragraph\">Validating a mailing list takes time; to get the validation results, you have to make a request to the API with the id of your validation job.<\/p>\n\n<h3 class=\"wp-block-heading\">Fetching validation results<\/h3>\n\n<p class=\"wp-block-paragraph\">To fetch the results of a validation job, you need to make a GET request to https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk\/${listId}, where the listId is the id you assigned to your validation job.<\/p>\n\n<p class=\"wp-block-paragraph\">Add the following code block to your index.js file to implement a function to fetch your validation results:<\/p>\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copia al portapapeles\" data-clipboard-success-label=\"\u00a1Copiado!\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copia al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copia al portapapeles\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    const getValidationResults = async (listId) =&gt; {rn  try {rn    const response = await axios.get(rn      `https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk\/${listId}`,rn      {rn        headers: {rn          Authorization:rn            &quot;Basic &quot; +rn            Buffer.from(rn              `${process.env.MAILGUN_USERNAME}:${process.env.MAILGUN_PASSWORD}`rn            ).toString(&quot;base64&quot;),rn        },rn      }rn    );rnrn    console.log(response.data);rn  } catch (error) {rn    console.error(error);rn  }rn};rnCalling this function with a listId should return a response like this:rn{rn  created_at: 1728170695,rn  download_url: {rn    &quot;csv&quot;: &quot;https:\/\/s3.aws-example.com\/downloads\/bulk_validation_oct_2024.csv.zip&quot;,rn    &quot;json&quot;: &quot;https:\/\/s3.aws-example.com\/downloads\/bulk_validation_oct_2024.json.zip&quot;rn  },rn  id: &#039;validation&#039;,rn  quantity: 10,rn  records_processed: 10,rn  status: &#039;uploaded&#039;,rn  summary: {rn    result: {rn      catch_all: 0,rn      deliverable: 3,rn      do_not_send: 0,rn      undeliverable: 1,rn      unknown: 6rn    },rn    risk: { high: 1, low: 3, medium: 0, unknown: 6 }rn  }rn}\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n<h3 class=\"wp-block-heading\">Here&#8217;s a breakdown of the results:<\/h3>\n\n<ul class=\"wp-block-list\">\n<li><code>created_at<\/code>: A timestamp of when the job was completed (1728170695).<\/li>\n\n\n\n<li><code>download_url<\/code>: Links to download the results in CSV and JSON formats.<\/li>\n\n\n\n<li><code>Quantity:<\/code> The total number of emails processed (10).<\/li>\n\n\n\n<li><code>Status<\/code>: The validation job status (uploaded).<\/li>\n\n\n\n<li><code>Result<\/code>: The outcome of email validation:<\/li>\n\n\n\n<li>catch_all: No addresses are from catch-all domains.\n<ul class=\"wp-block-list\">\n<li><code>deliverable<\/code>: Three addresses are valid and deliverable.<\/li>\n\n\n\n<li><code>do_not_send<\/code>: No addresses are flagged as \u00abdo not send.\u00bb<\/li>\n\n\n\n<li><code>undeliverable<\/code>: One address is invalid or undeliverable.<\/li>\n\n\n\n<li><code>unknown<\/code>: Six addresses couldn&#8217;t be verified.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>Risk<\/code>: A breakdown of email addresses by risk:\n<ul class=\"wp-block-list\">\n<li><code>high<\/code>: One address is high-risk and likely undeliverable or problematic.<\/li>\n\n\n\n<li><code>low<\/code>: Three addresses are considered low-risk and safe to use.<\/li>\n\n\n\n<li><code>medium<\/code>: No addresses are medium-risk and might require caution.<\/li>\n\n\n\n<li><code>unknown<\/code>: Six addresses couldn&#8217;t be classified.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> You can find a more comprehensive response in the JSON\/CSV reports, which you can download using the links in <b>download_url<\/b>. Using this information, you can clean up your list and take more actionable steps to ensure your mailing list is free of invalid emails, thus increasing your deliverability rates when you <a href='https:\/\/www.mailgun.com\/blog\/email\/how-to-send-transactional-email-in-a-nodejs-app-using-the-mailgun-api\/'>send transactional emails<\/a> or email campaigns.<\/div>\r\n    <\/div>\r\n\n<h2 class=\"wp-block-heading\">Error handling and debugging<\/h2>\n\n<p class=\"wp-block-paragraph\">When using the Mailgun API for bulk email validation, you may encounter a few common errors. Here&#8217;s a breakdown of these errors and tips on how to troubleshoot them:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><b>List already exists<\/b>: This 409 status code error indicates a validation job with the same listId as the one you&#8217;re trying to create already exists. You can fix this error by changing the listId and retrying your request.<\/li>\n\n\n\n<li><b>List CSV file missing<\/b>: This 400 status code error indicates that the API couldn&#8217;t find the CSV file in your request because you&#8217;re using the wrong file key. Make sure your file key is set to file, then try again.<\/li>\n\n\n\n<li><b>CSV File must contain the key email or email_address<\/b>: This 400 status code error indicates that your CSV file is missing an email or email_address column header. You can fix this error by editing your CSV file to contain either of these headers.<\/li>\n\n\n\n<li><b>CSV file is malformed<\/b>: This 400 status code error indicates that your file is in an unsupported format. Make sure that the file containing your emails is in CSV or gzip format.<\/li>\n\n\n\n<li><b>unauthorized<\/b>: This 401 status code error indicates an issue with your authentication credentials. You can fix this by ensuring your API keys are valid.<\/li>\n<\/ul>\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Resolving Mailgun API errors for bulk email validation often involves checking file formats and naming collisions, headers, and authentication credentials. Ensuring your CSV files are correctly structured and using valid API keys will help avoid these common issues.<\/div>\r\n    <\/div>\r\n\n<h2 class=\"wp-block-heading\">Best practices for bulk email validation<\/h2>\n\n<p class=\"wp-block-paragraph\">To ensure your bulk validation jobs work as expected, here are a few best practices you can follow:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><b>Respect API limits<\/b>: Make sure you adhere to the limits imposed by the Mailgun API to ensure that all your requests are processed. For instance, CSV files must not exceed 25 MB; files larger than this will trigger a 400 response. Additionally, the maximum number of validation jobs that can run in parallel is five. Exceeding this limit will result in a 400 response.<\/li>\n\n\n\n<li><b>Use batching to avoid API limits<\/b>: If you&#8217;re validating a large data set of emails, batch them into groups to manage the file size, but watch out for parallel processing limits.<\/li>\n\n\n\n<li><b>Check for specific status codes<\/b>: Different errors require different handling strategies. For instance, a 400 Bad Request likely indicates an issue with the request format; do not retry. Instead, log the error and fix the request. A 500 Internal Server Error indicates a server-side issue, and you can retry after a backoff period.<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\">Wrapping up<\/h2>\n\n<p class=\"wp-block-paragraph\">In this tutorial, you explored how to verify emails using Node.js and the Mailgun API. You learned how to create mailing lists, add members to those lists, and validate the email addresses in bulk.<\/p>\n\n<p class=\"wp-block-paragraph\">Regular bulk email validation can significantly improve your email deliverability rates, maintain a clean, effective mailing list, ensure your messages reach their intended recipients, and help you maintain a good sender reputation.<\/p>\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> To customize your email processes further, check out <a href='https:\/\/www.mailgun.com\/blog\/email\/scheduled-email-delivery-mailgun-nodejs\/'>this article<\/a> teaching you how to schedule email delivery. You can also learn how to automate your email workflow in cloud monitoring in <a href='https:\/\/www.mailgun.com\/blog\/it-and-engineering\/how-node-js-app-cloud-monitoring-uses-the-mailgun-api\/'>this article<\/a>.<\/div>\r\n    <\/div>\r\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_faa7af75e4199146664fae114d1c15a5\">\r\n                    <p class=\"text-uppercase section-caption text-body-color\">\r\n                Sign Up            <\/p>\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_faa7af75e4199146664fae114d1c15a5\">\r\n                It&#8217;s easy to get started. And it&#8217;s free.            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">See what you can accomplish with the world\u2019s best email delivery platform.<\/div>\r\n                            <\/div>\r\n        \r\n        <div class=\"text-start mt-5\"><a href=\"https:\/\/signup.mailgun.com\/new\/signup\"  class=\"btn btn-secondary\" >Get started<\/a><\/div>\r\n    <\/aside>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Protege tu reputaci\u00f3n como remitente y optimiza la entregabilidad del email validando direcciones de email con Node.js y la API de validaci\u00f3n de emails masiva de Mailgun. Esta gu\u00eda te muestra c\u00f3mo verificar listas grandes de direcciones de email para reducir los rebotes y garantizar que tus mensajes lleguen a bandejas de entrada activas.<\/p>\n","protected":false},"author":12,"featured_media":3952,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"blog_category":[19],"class_list":["post-19932","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-dev-life"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C\u00f3mo verificar listas de contactos con Node.js y Mailgun - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Aprende a validar listas de contactos grandes usando Node.js y la API de validaci\u00f3n masiva de Mailgun. Reduce las tasas de rebote, protege tu reputaci\u00f3n como remitente y mejora la entregabilidad.\" \/>\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.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo verificar listas de contactos con Node.js y Mailgun - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Aprende a validar listas de contactos grandes usando Node.js y la API de validaci\u00f3n masiva de Mailgun. Reduce las tasas de rebote, protege tu reputaci\u00f3n como remitente y mejora la entregabilidad.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T22:53:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/dev-life\\\/verificar-email-con-nodejs\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/dev-life\\\/verificar-email-con-nodejs\\\/\",\"name\":\"C\u00f3mo verificar listas de contactos con Node.js y Mailgun - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/dev-life\\\/verificar-email-con-nodejs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/dev-life\\\/verificar-email-con-nodejs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"datePublished\":\"2024-11-21T00:00:00+00:00\",\"dateModified\":\"2026-09-14T22:53:18+00:00\",\"description\":\"Aprende a validar listas de contactos grandes usando Node.js y la API de validaci\u00f3n masiva de Mailgun. Reduce las tasas de rebote, protege tu reputaci\u00f3n como remitente y mejora la entregabilidad.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/dev-life\\\/verificar-email-con-nodejs\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/dev-life\\\/verificar-email-con-nodejs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/dev-life\\\/verificar-email-con-nodejs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/dev-life\\\/verificar-email-con-nodejs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Verificaci\u00f3n de emails con node.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Potentes API de email transaccional que te permiten enviar, recibir y hacer seguimiento de emails, creadas pensando en los desarrolladores. \u00a1Descubre m\u00e1s!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo verificar listas de contactos con Node.js y Mailgun - Transactional Email API Service For Developers | Mailgun","description":"Aprende a validar listas de contactos grandes usando Node.js y la API de validaci\u00f3n masiva de Mailgun. Reduce las tasas de rebote, protege tu reputaci\u00f3n como remitente y mejora la entregabilidad.","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.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo verificar listas de contactos con Node.js y Mailgun - Transactional Email API Service For Developers | Mailgun","og_description":"Aprende a validar listas de contactos grandes usando Node.js y la API de validaci\u00f3n masiva de Mailgun. Reduce las tasas de rebote, protege tu reputaci\u00f3n como remitente y mejora la entregabilidad.","og_url":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-09-14T22:53:18+00:00","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/","url":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/","name":"C\u00f3mo verificar listas de contactos con Node.js y Mailgun - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","datePublished":"2024-11-21T00:00:00+00:00","dateModified":"2026-09-14T22:53:18+00:00","description":"Aprende a validar listas de contactos grandes usando Node.js y la API de validaci\u00f3n masiva de Mailgun. Reduce las tasas de rebote, protege tu reputaci\u00f3n como remitente y mejora la entregabilidad.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/es\/blog\/dev-life\/verificar-email-con-nodejs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/es\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/es\/blog\/"},{"@type":"ListItem","position":3,"name":"Verificaci\u00f3n de emails con node.js"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/es\/#website","url":"https:\/\/www.mailgun.com\/es\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Potentes API de email transaccional que te permiten enviar, recibir y hacer seguimiento de emails, creadas pensando en los desarrolladores. \u00a1Descubre m\u00e1s!","publisher":{"@id":"https:\/\/www.mailgun.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/es\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.mailgun.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/es\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog\/19932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":3,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog\/19932\/revisions"}],"predecessor-version":[{"id":19975,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog\/19932\/revisions\/19975"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/media\/3952"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/media?parent=19932"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/blog_category?post=19932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}