<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 2FASMS</title>
    <description>The latest articles on DEV Community by 2FASMS (@2fasms).</description>
    <link>https://dev.to/2fasms</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4221981%2Fa981556b-d9d4-4b58-8a86-719a0b8145c1.png</url>
      <title>DEV Community: 2FASMS</title>
      <link>https://dev.to/2fasms</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/2fasms"/>
    <language>en</language>
    <item>
      <title>Cómo obtener números de verificación por SMS con la API de 2FASMS</title>
      <dc:creator>2FASMS</dc:creator>
      <pubDate>Thu, 05 Nov 2026 07:05:52 +0000</pubDate>
      <link>https://dev.to/2fasms/como-obtener-numeros-de-verificacion-por-sms-con-la-api-de-2fasms-375a</link>
      <guid>https://dev.to/2fasms/como-obtener-numeros-de-verificacion-por-sms-con-la-api-de-2fasms-375a</guid>
      <description>&lt;p&gt;¿Necesitas un número de teléfono para recibir un código de verificación por SMS y quieres hacerlo desde código en lugar de navegar por una web? Este tutorial muestra cómo usar la API REST de 2FASMS para consultar tu saldo, listar los servicios disponibles, comprar un número virtual y leer el código SMS.&lt;/p&gt;

&lt;p&gt;Todas las peticiones usan &lt;code&gt;curl&lt;/code&gt;, así que puedes seguirlo desde cualquier terminal. Al final hay una colección de Postman lista para usar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requisitos previos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Una cuenta de 2FASMS&lt;/li&gt;
&lt;li&gt;Tu clave de API, que aparece en los ajustes de tu cuenta&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Guarda la clave en una variable de entorno para no pegarla en los comandos ni subirla por error a un repositorio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"YOUR_API_KEY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La URL base de todas las peticiones es &lt;code&gt;https://api.2fasms.com&lt;/code&gt;. Los endpoints autenticados esperan tu clave en la cabecera &lt;code&gt;Authorization&lt;/code&gt; como token Bearer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 1: Consultar tu saldo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/get_balance"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Respuesta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"balance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;25.50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"user_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si falta la clave obtienes un &lt;code&gt;400&lt;/code&gt;, y si la clave no es válida, un &lt;code&gt;401&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 2: Listar los servicios disponibles
&lt;/h2&gt;

&lt;p&gt;Este endpoint no requiere autenticación. Añade el slug de un país para ver los servicios de ese país:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/services?country=france"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Respuesta (abreviada):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"france"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"services"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"whatsapp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"providers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"provider_5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"provider_7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"provider_9"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"min_price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;15.20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"max_price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;33.50&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"total"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;89&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"from_cache"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El campo &lt;code&gt;name&lt;/code&gt; es el slug del servicio que usarás en el siguiente paso. Para ver la lista de países y sus slugs, llama a &lt;code&gt;GET /order/api/countries&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 3: Comprar un número
&lt;/h2&gt;

&lt;p&gt;Envía un &lt;code&gt;POST&lt;/code&gt; con los slugs del país y del servicio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"country":"france","service":"whatsapp"}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/get_number"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Respuesta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"orderId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12345&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"number"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"+33123456789"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ok"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Guarda el &lt;code&gt;orderId&lt;/code&gt;: lo necesitas para leer el SMS. Usa el &lt;code&gt;number&lt;/code&gt; en la aplicación o web donde quieres recibir el código.&lt;/p&gt;

&lt;p&gt;Posibles errores: &lt;code&gt;400&lt;/code&gt; por parámetros inválidos, &lt;code&gt;406&lt;/code&gt; por saldo insuficiente y &lt;code&gt;500&lt;/code&gt; si el servicio o el país no están disponibles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 4: Leer el código SMS
&lt;/h2&gt;

&lt;p&gt;Cuando hayas solicitado el código en el servicio de destino, consulta el pedido:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"orderId":12345}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/check_order"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cuando llega el SMS, la respuesta contiene el código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"success"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"orderId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12345&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"sms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123456"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este pequeño bucle de shell consulta cada 5 segundos durante 2 minutos como máximo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;seq &lt;/span&gt;1 24&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"orderId":12345}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/check_order"&lt;/span&gt;
  &lt;span class="nb"&gt;echo
  sleep &lt;/span&gt;5
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Obtienes un &lt;code&gt;404&lt;/code&gt; si el pedido no existe y un &lt;code&gt;400&lt;/code&gt; si falta &lt;code&gt;orderId&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Webhook en lugar de consultar cada pocos segundos
&lt;/h3&gt;

&lt;p&gt;Puedes registrar un endpoint HTTPS y 2FASMS enviará con &lt;code&gt;POST&lt;/code&gt; cada SMS recibido:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"url":"https://your-app.com/sms-hook"}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/user/webhook"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El contenido incluye el ID del pedido, el servicio, el país, el texto completo del SMS, el &lt;code&gt;code&lt;/code&gt; extraído, el número y la hora de recepción. Las entregas fallidas (respuestas que no son 2xx) se reintentan hasta 3 veces. Envía una &lt;code&gt;url&lt;/code&gt; vacía para desactivar el webhook.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 5: Finalizar el pedido
&lt;/h2&gt;

&lt;p&gt;Cuando termines, cierra el pedido:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"orderId":12345}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/finish_order"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"order has been finished"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Un &lt;code&gt;406&lt;/code&gt; significa que el pedido ya estaba cancelado o caducado, o que el SMS sigue pendiente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pruébalo en Postman
&lt;/h2&gt;

&lt;p&gt;He reunido las cuatro peticiones principales (saldo, servicios, compra de número y lectura del SMS) en una colección pública de Postman. La clave es una variable &lt;code&gt;{{api_key}}&lt;/code&gt;: solo tienes que poner la tuya.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://documenter.getpostman.com/view/59423970/2sBYHXRJZs" rel="noopener noreferrer"&gt;https://documenter.getpostman.com/view/59423970/2sBYHXRJZs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Para terminar
&lt;/h2&gt;

&lt;p&gt;Este es el flujo completo: saldo, servicios, número, código. A partir de aquí puedes integrarlo en tu suite de pruebas, en la automatización de registros de tu entorno de staging o en cualquier flujo que necesite un número temporal.&lt;/p&gt;

&lt;p&gt;Puedes crear una cuenta y obtener tu clave de API aquí: &lt;a href="https://2fasms.com/?ref=dev-tuto" rel="noopener noreferrer"&gt;https://2fasms.com/?ref=dev-tuto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Divulgación: trabajo en el equipo de 2FASMS.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>automation</category>
      <category>spanish</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to get SMS verification numbers with the 2FASMS API</title>
      <dc:creator>2FASMS</dc:creator>
      <pubDate>Tue, 03 Nov 2026 13:25:28 +0000</pubDate>
      <link>https://dev.to/2fasms/how-to-get-sms-verification-numbers-with-the-2fasms-api-3dkn</link>
      <guid>https://dev.to/2fasms/how-to-get-sms-verification-numbers-with-the-2fasms-api-3dkn</guid>
      <description>&lt;p&gt;Need a phone number to receive an SMS verification code, and want to do it from code instead of clicking through a website? This tutorial shows how to use the 2FASMS REST API to check your balance, list available services, buy a virtual number and read the SMS code.&lt;/p&gt;

&lt;p&gt;All requests below use &lt;code&gt;curl&lt;/code&gt;, so you can follow along from any terminal. A ready-made Postman collection is linked at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A 2FASMS account&lt;/li&gt;
&lt;li&gt;Your API key, shown in your account settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Store the key in an environment variable so you never paste it into commands or commit it by accident:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"YOUR_API_KEY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The base URL for every request is &lt;code&gt;https://api.2fasms.com&lt;/code&gt;. Authenticated endpoints expect your key in the &lt;code&gt;Authorization&lt;/code&gt; header as a Bearer token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Check your balance
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/get_balance"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"balance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;25.50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"user_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the key is missing you get a &lt;code&gt;400&lt;/code&gt;, and an invalid key returns a &lt;code&gt;401&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: List the available services
&lt;/h2&gt;

&lt;p&gt;This endpoint does not need authentication. Pass an optional &lt;code&gt;country&lt;/code&gt; slug to get the services for one country:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/services?country=france"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response (shortened):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"france"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"services"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"whatsapp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"providers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"provider_5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"provider_7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"provider_9"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"min_price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;15.20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"max_price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;33.50&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"total"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;89&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"from_cache"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;name&lt;/code&gt; field is the service slug you will use in the next step. If you want the list of countries and their slugs, call &lt;code&gt;GET /order/api/countries&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Buy a number
&lt;/h2&gt;

&lt;p&gt;Send a &lt;code&gt;POST&lt;/code&gt; with the country and service slugs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"country":"france","service":"whatsapp"}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/get_number"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"orderId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12345&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"number"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"+33123456789"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ok"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep the &lt;code&gt;orderId&lt;/code&gt;: you need it to read the SMS. Use the &lt;code&gt;number&lt;/code&gt; in the app or website where you want to receive the code.&lt;/p&gt;

&lt;p&gt;Possible errors: &lt;code&gt;400&lt;/code&gt; for invalid parameters, &lt;code&gt;406&lt;/code&gt; for insufficient funds, and &lt;code&gt;500&lt;/code&gt; if the service or country is unavailable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Read the SMS code
&lt;/h2&gt;

&lt;p&gt;Once you have requested the code on the target service, poll the order:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"orderId":12345}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/check_order"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the SMS has arrived, the response contains the code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"success"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"orderId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12345&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"sms"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123456"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is a small shell loop that polls every 5 seconds, for up to 2 minutes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;seq &lt;/span&gt;1 24&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"orderId":12345}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/check_order"&lt;/span&gt;
  &lt;span class="nb"&gt;echo
  sleep &lt;/span&gt;5
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get a &lt;code&gt;404&lt;/code&gt; if the order does not exist and a &lt;code&gt;400&lt;/code&gt; if &lt;code&gt;orderId&lt;/code&gt; is missing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prefer a webhook to polling
&lt;/h3&gt;

&lt;p&gt;Instead of polling, you can register an HTTPS endpoint and 2FASMS will &lt;code&gt;POST&lt;/code&gt; each received SMS to it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"url":"https://your-app.com/sms-hook"}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/user/webhook"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The payload contains the order ID, service, country, the full SMS text, the extracted &lt;code&gt;code&lt;/code&gt;, the number and the reception time. Failed deliveries (non-2xx responses) are retried up to 3 times. Send an empty &lt;code&gt;url&lt;/code&gt; to disable the webhook.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Finish the order
&lt;/h2&gt;

&lt;p&gt;When you are done, close the order:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"orderId":12345}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     &lt;span class="s2"&gt;"https://api.2fasms.com/order/api/finish_order"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"order has been finished"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A &lt;code&gt;406&lt;/code&gt; means the order was already cancelled or expired, or that the SMS is still pending.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it in Postman
&lt;/h2&gt;

&lt;p&gt;I put the four main requests (balance, services, buy a number, read the SMS) in a public Postman collection. The key is a &lt;code&gt;{{api_key}}&lt;/code&gt; variable, so just set it to your own key:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://documenter.getpostman.com/view/59423970/2sBYHXRJZs" rel="noopener noreferrer"&gt;https://documenter.getpostman.com/view/59423970/2sBYHXRJZs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;That is the whole flow: balance, services, number, code. From here you can plug it into your own test suite, a signup automation for your staging environment, or any workflow that needs a throwaway number.&lt;/p&gt;

&lt;p&gt;You can create an account and get your API key here: &lt;a href="https://2fasms.com/?ref=dev-tuto" rel="noopener noreferrer"&gt;2FASMS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I work on the 2FASMS team.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>api</category>
    </item>
    <item>
      <title>Getting Started with API Integration: A Beginner-Friendly Guide</title>
      <dc:creator>2FASMS</dc:creator>
      <pubDate>Tue, 03 Nov 2026 05:32:54 +0000</pubDate>
      <link>https://dev.to/2fasms/getting-started-with-api-integration-a-beginner-friendly-guide-1p9b</link>
      <guid>https://dev.to/2fasms/getting-started-with-api-integration-a-beginner-friendly-guide-1p9b</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;APIs (Application Programming Interfaces) allow different software applications to communicate and exchange information. They are widely used in web development, mobile applications, automation, and software integration.&lt;/p&gt;

&lt;p&gt;In this tutorial, we will explore the basic concepts of API integration and learn how to test API requests using Postman.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What Is an API?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An API is a set of rules that allows one application to interact with another application.&lt;/p&gt;

&lt;p&gt;For example, a mobile application can use an API to retrieve information from a remote server and display it to users.&lt;/p&gt;

&lt;p&gt;APIs help developers:&lt;/p&gt;

&lt;p&gt;Connect different applications.&lt;/p&gt;

&lt;p&gt;Retrieve and send data.&lt;/p&gt;

&lt;p&gt;Automate repetitive operations.&lt;/p&gt;

&lt;p&gt;Integrate external services into their projects.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understanding HTTP Methods&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most REST APIs use HTTP methods to define the type of operation being performed.&lt;/p&gt;

&lt;p&gt;Common methods include:&lt;/p&gt;

&lt;p&gt;GET – Retrieve information from a server.&lt;/p&gt;

&lt;p&gt;POST – Submit new information.&lt;/p&gt;

&lt;p&gt;PUT – Replace existing information.&lt;/p&gt;

&lt;p&gt;PATCH – Update specific information.&lt;/p&gt;

&lt;p&gt;DELETE – Request the removal of information.&lt;/p&gt;

&lt;p&gt;The method you choose depends on the API endpoint and its documentation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understanding API Endpoints&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An endpoint is a specific URL through which an application accesses an API resource.&lt;/p&gt;

&lt;p&gt;For example, a documentation website might provide an endpoint such as:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api.example.com/v1/resources" rel="noopener noreferrer"&gt;https://api.example.com/v1/resources&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is only an illustrative URL, not a working 2FASMS endpoint.&lt;/p&gt;

&lt;p&gt;Before sending a request, always check the official API documentation for:&lt;/p&gt;

&lt;p&gt;The endpoint URL.&lt;/p&gt;

&lt;p&gt;The required HTTP method.&lt;/p&gt;

&lt;p&gt;Authentication requirements.&lt;/p&gt;

&lt;p&gt;Request parameters.&lt;/p&gt;

&lt;p&gt;Expected response format.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Testing API Requests with Postman&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Postman is a popular tool for testing and documenting APIs.&lt;/p&gt;

&lt;p&gt;Here is a basic workflow:&lt;/p&gt;

&lt;p&gt;Open Postman.&lt;/p&gt;

&lt;p&gt;Create a new HTTP request.&lt;/p&gt;

&lt;p&gt;Select the appropriate HTTP method.&lt;/p&gt;

&lt;p&gt;Enter the API endpoint.&lt;/p&gt;

&lt;p&gt;Add the required headers and parameters.&lt;/p&gt;

&lt;p&gt;Send the request.&lt;/p&gt;

&lt;p&gt;Review the server response.&lt;/p&gt;

&lt;p&gt;Postman helps developers understand how an API behaves before integrating it into an application.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understanding API Responses&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An API commonly returns data in JSON format.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "success": true,&lt;br&gt;
  "message": "Request completed successfully",&lt;br&gt;
  "data": {&lt;br&gt;
    "status": "active"&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This is an illustrative response. Actual response fields depend on the API.&lt;/p&gt;

&lt;p&gt;Developers should also check HTTP status codes:&lt;/p&gt;

&lt;p&gt;200 OK – The request was successful.&lt;/p&gt;

&lt;p&gt;201 Created – A resource was created.&lt;/p&gt;

&lt;p&gt;400 Bad Request – The request contains invalid information.&lt;/p&gt;

&lt;p&gt;401 Unauthorized – Authentication is required or invalid.&lt;/p&gt;

&lt;p&gt;403 Forbidden – Access is not permitted.&lt;/p&gt;

&lt;p&gt;404 Not Found – The requested resource was not found.&lt;/p&gt;

&lt;p&gt;500 Internal Server Error – The server encountered an error.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;API Security Best Practices&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Security is an essential part of API development.&lt;/p&gt;

&lt;p&gt;Follow these practices:&lt;/p&gt;

&lt;p&gt;Keep API keys and tokens private.&lt;/p&gt;

&lt;p&gt;Use HTTPS when communicating with APIs.&lt;/p&gt;

&lt;p&gt;Never publish passwords or secret credentials.&lt;/p&gt;

&lt;p&gt;Validate incoming data.&lt;/p&gt;

&lt;p&gt;Follow the authentication requirements of the API provider.&lt;/p&gt;

&lt;p&gt;Read the official documentation before integrating a service.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Understanding APIs is an important skill for modern developers. With tools such as Postman, developers can test requests, inspect responses, and prepare integrations more efficiently.&lt;/p&gt;

&lt;p&gt;Start with simple requests, read the documentation carefully, and build your API integration step by step.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
