WA Lookup Referencia de la API

Todos los endpoints comparten una clave API y un saldo.

ElementoValor
URL basehttps://walookup.com
Cabecera de autenticaciónX-API-Key: sk_your_api_key
Estructura de la respuesta{ code, msg, data }

Los precios no se indican aquí; cada producto se factura por verificación correcta. Ver precios

Autenticación

Use una clave API creada en Configuración y envíela con cada solicitud en la cabecera X-API-Key.

Cabecera de autenticación
X-API-Key: sk_your_api_key

Mantenga su clave API en secretoLlame siempre a este endpoint desde su servidor. Cualquiera que tenga la clave puede gastar su saldo.

Verificaciones síncronas

POST/api/v1/checkPOST/api/v1/batch-check

Envíe un identificador, o hasta 100 en una sola solicitud, y lea el resultado en la misma respuesta. Sin sondeo ni callbacks. Un resultado indeterminado devuelve 422 con el código 42200 y no se cobra. Una solicitud múltiple conserva el orden de entrada, factura cada identificador de forma independiente y dispone de 300 segundos para finalizar; si no lo consigue, toda la solicitud falla y se reembolsan todos los cargos.

Parámetros

CampoTipoDescripción
service_typestringCódigo de producto, uno de los productos indicados a continuación.
identifierstringVerificación individual: un número de teléfono en formato E.164, con o sin el + inicial. El servidor lo normaliza.
identifiersstring[]Verificación múltiple: de 1 a 100 números de teléfono. La respuesta conserva este orden.

Verificación de registro en WhatsApp

wsteléfono

Confirme si un número está registrado en WhatsApp: útil para revisar una lista de contactos antes de enviar mensajes.

Verificación individual

POST/api/v1/check
Solicitud
curl -X POST "https://walookup.com/api/v1/check" \
  -H "X-API-Key: sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "service_type": "ws", "identifier": "+17253100591" }'
{
  "code": 0,
  "msg": "ok",
  "data": {
    "service_type": "ws",
    "identifier": "+17253100591",
    "registered": true
  }
}
Campos de la respuesta
CampoTipoDescripción
registeredbooleanSi el número está registrado en WhatsApp.

Verificación múltiple

POST/api/v1/batch-check
Solicitud
curl -X POST "https://walookup.com/api/v1/batch-check" \
  -H "X-API-Key: sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "service_type": "ws", "identifiers": ["+17253100591", "+14155550000", "12345"] }'
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "service_type": "ws",
    "total": 3,
    "succeeded": 2,
    "failed": 1,
    "results": [
      {
        "identifier": "+17253100591",
        "exists": true,
        "registered": true
      },
      {
        "identifier": "+14155550000",
        "exists": true,
        "registered": false
      },
      {
        "identifier": "12345",
        "exists": false
      }
    ]
  }
}
Campos de la respuesta
CampoTipoDescripción
existsbooleanSi este número produjo un resultado. false significa que el formato no era válido, que el resultado fue indeterminado o que la verificación falló; cuando es false, no aparece ninguno de los campos siguientes.
registeredbooleanSi el número está registrado (registered). Solo aparece cuando exists es true, con el mismo significado que en la verificación individual.

Verificación de avatar de WhatsApp

ws_avatarteléfono

Compruebe si un número está registrado en WhatsApp y obtenga los campos de avatar: avatar (si se obtuvo uno) y avatar_url.

Verificación individual

POST/api/v1/check
Solicitud
curl -X POST "https://walookup.com/api/v1/check" \
  -H "X-API-Key: sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "service_type": "ws_avatar", "identifier": "+17253100591" }'
{
  "code": 0,
  "msg": "ok",
  "data": {
    "service_type": "ws_avatar",
    "identifier": "+17253100591",
    "registered": true,
    "avatar": true,
    "avatar_url": "<image url>"
  }
}
Campos de la respuesta
CampoTipoDescripción
registeredbooleanSi el número está registrado en WhatsApp.
avatarbooleanSi la cuenta tiene un avatar configurado. avatar_url puede seguir vacío cuando la imagen no está disponible.
avatar_urlstringLa URL del avatar; una cadena vacía cuando no hay ninguna URL disponible.

Verificación múltiple

POST/api/v1/batch-check
Solicitud
curl -X POST "https://walookup.com/api/v1/batch-check" \
  -H "X-API-Key: sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "service_type": "ws_avatar", "identifiers": ["+17253100591", "+14155550000", "12345"] }'
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "service_type": "ws_avatar",
    "total": 3,
    "succeeded": 2,
    "failed": 1,
    "results": [
      {
        "identifier": "+17253100591",
        "exists": true,
        "registered": true,
        "avatar": true,
        "avatar_url": "<image url>"
      },
      {
        "identifier": "+14155550000",
        "exists": true,
        "registered": false,
        "avatar": false,
        "avatar_url": ""
      },
      {
        "identifier": "12345",
        "exists": false
      }
    ]
  }
}
Campos de la respuesta
CampoTipoDescripción
existsbooleanSi este número produjo un resultado. false significa que el formato no era válido, que el resultado fue indeterminado o que la verificación falló; cuando es false, no aparece ninguno de los campos siguientes.
registeredbooleanSi el número está registrado (registered). Solo aparece cuando exists es true, con el mismo significado que en la verificación individual.
avatarbooleanSi la cuenta tiene un avatar configurado. avatar_url puede seguir vacío cuando la imagen no está disponible.
avatar_urlstringLa URL del avatar; una cadena vacía cuando no hay ninguna URL disponible.

Verificación de cuenta de WhatsApp Business

ws_businessteléfono

Verifique el registro e identifique si el número usa una cuenta de WhatsApp Business.

Verificación individual

POST/api/v1/check
Solicitud
curl -X POST "https://walookup.com/api/v1/check" \
  -H "X-API-Key: sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "service_type": "ws_business", "identifier": "+17253100591" }'
{
  "code": 0,
  "msg": "ok",
  "data": {
    "service_type": "ws_business",
    "identifier": "+17253100591",
    "registered": true,
    "business": true
  }
}
Campos de la respuesta
CampoTipoDescripción
registeredbooleanSi el número está registrado en WhatsApp.
businessbooleanSi la cuenta es una cuenta de WhatsApp Business.

Verificación múltiple

POST/api/v1/batch-check
Solicitud
curl -X POST "https://walookup.com/api/v1/batch-check" \
  -H "X-API-Key: sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "service_type": "ws_business", "identifiers": ["+17253100591", "+14155550000", "12345"] }'
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "service_type": "ws_business",
    "total": 3,
    "succeeded": 2,
    "failed": 1,
    "results": [
      {
        "identifier": "+17253100591",
        "exists": true,
        "registered": true,
        "business": true
      },
      {
        "identifier": "+14155550000",
        "exists": true,
        "registered": false,
        "business": false
      },
      {
        "identifier": "12345",
        "exists": false
      }
    ]
  }
}
Campos de la respuesta
CampoTipoDescripción
existsbooleanSi este número produjo un resultado. false significa que el formato no era válido, que el resultado fue indeterminado o que la verificación falló; cuando es false, no aparece ninguno de los campos siguientes.
registeredbooleanSi el número está registrado (registered). Solo aparece cuando exists es true, con el mismo significado que en la verificación individual.
businessbooleanSi la cuenta es una cuenta de WhatsApp Business.

Verificaciones asíncronas

POST/api/v1/bulk-tasksGET/api/v1/bulk-tasks/{id}

Suba un archivo y obtenga al instante un ID de tarea; después, consulte ese ID hasta que se complete correctamente. La respuesta correcta incluye result_url, el enlace de descarga del resultado. Solo existen dos acciones: enviar y consultar. No sondee más de una vez cada 30 segundos.

Parámetros

CampoTipoDescripción
service_typestringCódigo de producto masivo, uno de los productos indicados a continuación.
countrystringCódigo ISO 3166-1, como US. Obligatorio para las tareas de números: cada número debe incluir su código de país y pertenecer a este país (los que no lo cumplan se excluyen y no se cobran); también selecciona el enrutamiento. En multipart debe ir antes de file.
filefileUn archivo .txt o .csv con un identificador por línea, de hasta max_file_bytes (20MB por defecto).
Idempotency-KeyheaderOpcional, hasta 128 caracteres. Repetir la misma clave devuelve la tarea original en lugar de crear una segunda.

Verificación masiva de registro en WhatsApp

ws_batchteléfono1000–500.000 por tarea

Suba un archivo completo de números, averigüe cuáles están registrados en WhatsApp y descargue el archivo de resultados cuando termine.

Enviar una tarea

POST/api/v1/bulk-tasks
Solicitud
curl -X POST "https://walookup.com/api/v1/bulk-tasks" \
  -H "X-API-Key: sk_your_api_key" \
  -F service_type=ws_batch \
  -F country=US \
  -F file=@numbers.txt
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
    "product": "ws_batch",
    "status": "processing",
    "country": "US",
    "submitted_lines": 1015,
    "total": 1015,
    "invalid_cnt": 0,
    "no_code_cnt": 0,
    "other_country_cnt": 0,
    "duplicate_cnt": 0,
    "preparing": true,
    "created_at": "2026-09-08T09:30:00Z"
  }
}

Consultar la tarea

GET/api/v1/bulk-tasks/{id}
Solicitud
curl "https://walookup.com/api/v1/bulk-tasks/3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13" \
  -H "X-API-Key: sk_your_api_key"
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
    "product": "ws_batch",
    "status": "success",
    "country": "US",
    "submitted_lines": 1015,
    "total": 1000,
    "invalid_cnt": 3,
    "no_code_cnt": 0,
    "other_country_cnt": 0,
    "duplicate_cnt": 12,
    "preparing": false,
    "success_cnt": 990,
    "failure_cnt": 10,
    "result_url": "https://…/result.csv",
    "created_at": "2026-09-08T09:30:00Z"
  }
}
Columnas del resultado
Campoejemplo:Descripción
identifier17253100591El número enviado como dígitos sin formato con el código de país, sin signo más ni espacios (p. ej., 17253100591).
activatedtrueSi el número está registrado en WhatsApp: true o false.

Verificación masiva de avatar de WhatsApp

ws_avatar_batchteléfono1000–500.000 por tarea

Verifique en toda una lista el registro en WhatsApp y el avatar: si cada número registrado tiene un avatar configurado, además de la URL del avatar.

Enviar una tarea

POST/api/v1/bulk-tasks
Solicitud
curl -X POST "https://walookup.com/api/v1/bulk-tasks" \
  -H "X-API-Key: sk_your_api_key" \
  -F service_type=ws_avatar_batch \
  -F country=US \
  -F file=@numbers.txt
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
    "product": "ws_avatar_batch",
    "status": "processing",
    "country": "US",
    "submitted_lines": 1015,
    "total": 1015,
    "invalid_cnt": 0,
    "no_code_cnt": 0,
    "other_country_cnt": 0,
    "duplicate_cnt": 0,
    "preparing": true,
    "created_at": "2026-09-08T09:30:00Z"
  }
}

Consultar la tarea

GET/api/v1/bulk-tasks/{id}
Solicitud
curl "https://walookup.com/api/v1/bulk-tasks/3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13" \
  -H "X-API-Key: sk_your_api_key"
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
    "product": "ws_avatar_batch",
    "status": "success",
    "country": "US",
    "submitted_lines": 1015,
    "total": 1000,
    "invalid_cnt": 3,
    "no_code_cnt": 0,
    "other_country_cnt": 0,
    "duplicate_cnt": 12,
    "preparing": false,
    "success_cnt": 990,
    "failure_cnt": 10,
    "result_url": "https://…/result.csv",
    "created_at": "2026-09-08T09:30:00Z"
  }
}
Columnas del resultado
Campoejemplo:Descripción
identifier17253100591El número enviado como dígitos sin formato con el código de país, sin signo más ni espacios (p. ej., 17253100591).
activatedtrueSi el número está registrado en WhatsApp: true o false. Cuando no es true, todas las demás columnas de esa fila se dejan vacías.
avatartrueSi la cuenta tiene un avatar configurado: true o false. avatar_url puede seguir vacío cuando la imagen no está disponible.
avatar_urlhttps://pps.whatsapp.net/v/example.jpgLa URL del avatar; vacía cuando no hay ninguna URL disponible.

Verificación masiva Business de WhatsApp

ws_business_batchteléfono1000–500.000 por tarea

Verifique en toda una lista las cuentas de WhatsApp Business: si cada número está en WhatsApp y si esa cuenta es una cuenta de WhatsApp Business.

Enviar una tarea

POST/api/v1/bulk-tasks
Solicitud
curl -X POST "https://walookup.com/api/v1/bulk-tasks" \
  -H "X-API-Key: sk_your_api_key" \
  -F service_type=ws_business_batch \
  -F country=US \
  -F file=@numbers.txt
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
    "product": "ws_business_batch",
    "status": "processing",
    "country": "US",
    "submitted_lines": 1015,
    "total": 1015,
    "invalid_cnt": 0,
    "no_code_cnt": 0,
    "other_country_cnt": 0,
    "duplicate_cnt": 0,
    "preparing": true,
    "created_at": "2026-09-08T09:30:00Z"
  }
}

Consultar la tarea

GET/api/v1/bulk-tasks/{id}
Solicitud
curl "https://walookup.com/api/v1/bulk-tasks/3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13" \
  -H "X-API-Key: sk_your_api_key"
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
    "product": "ws_business_batch",
    "status": "success",
    "country": "US",
    "submitted_lines": 1015,
    "total": 1000,
    "invalid_cnt": 3,
    "no_code_cnt": 0,
    "other_country_cnt": 0,
    "duplicate_cnt": 12,
    "preparing": false,
    "success_cnt": 990,
    "failure_cnt": 10,
    "result_url": "https://…/result.csv",
    "created_at": "2026-09-08T09:30:00Z"
  }
}
Columnas del resultado
Campoejemplo:Descripción
identifier17253100591El número enviado como dígitos sin formato con el código de país, sin signo más ni espacios (p. ej., 17253100591).
activatedtrueSi el número está registrado en WhatsApp: true o false. Cuando no es true, todas las demás columnas de esa fila se dejan vacías.
businessfalseSi la cuenta es una cuenta de WhatsApp Business: true o false.

Verificación masiva de actividad en WhatsApp

ws_active_batchteléfono1000–500.000 por tarea

Estado de registro más días de actividad (días desde la última actividad del número), para distinguir los números vivos de los inactivos en toda una lista.

Enviar una tarea

POST/api/v1/bulk-tasks
Solicitud
curl -X POST "https://walookup.com/api/v1/bulk-tasks" \
  -H "X-API-Key: sk_your_api_key" \
  -F service_type=ws_active_batch \
  -F country=US \
  -F file=@numbers.txt
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
    "product": "ws_active_batch",
    "status": "processing",
    "country": "US",
    "submitted_lines": 1015,
    "total": 1015,
    "invalid_cnt": 0,
    "no_code_cnt": 0,
    "other_country_cnt": 0,
    "duplicate_cnt": 0,
    "preparing": true,
    "created_at": "2026-09-08T09:30:00Z"
  }
}

Consultar la tarea

GET/api/v1/bulk-tasks/{id}
Solicitud
curl "https://walookup.com/api/v1/bulk-tasks/3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13" \
  -H "X-API-Key: sk_your_api_key"
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "id": "3f9c2a7d8e4b4c1a9f0e6b2d5c8a7e13",
    "product": "ws_active_batch",
    "status": "success",
    "country": "US",
    "submitted_lines": 1015,
    "total": 1000,
    "invalid_cnt": 3,
    "no_code_cnt": 0,
    "other_country_cnt": 0,
    "duplicate_cnt": 12,
    "preparing": false,
    "success_cnt": 990,
    "failure_cnt": 10,
    "result_url": "https://…/result.csv",
    "created_at": "2026-09-08T09:30:00Z"
  }
}
Columnas del resultado
Campoejemplo:Descripción
identifier17253100591El número enviado como dígitos sin formato con el código de país, sin signo más ni espacios (p. ej., 17253100591).
activatedtrueSi el número está registrado en WhatsApp: true o false. Cuando no es true, todas las demás columnas de esa fila se dejan vacías.
activedays9Días desde la última actividad del número: cuanto menor, más reciente.

Saldo

GET/api/v1/balance

Consulte el saldo actual de la cuenta en micros de USD. Solo lectura: no crea ningún registro de verificación ni cobra nada.

Saldo

GET/api/v1/balance
Solicitud
curl "https://walookup.com/api/v1/balance" \
  -H "X-API-Key: sk_your_api_key"
Respuesta
{
  "code": 0,
  "msg": "ok",
  "data": {
    "balance_micros": 12500000
  }
}

Concurrencia, tiempos de espera y comportamiento de reintento

Las verificaciones son síncronas. Use el código devuelto para decidir si acepta el resultado o reintenta.

CampoDescripción
5 solicitudes simultáneas por usuarioLas verificaciones individuales y múltiples comparten este límite, y una solicitud múltiple cuenta como una sola solicitud, independientemente de cuántos números incluya. Además, solo se ejecuta una verificación múltiple por cuenta a la vez; una segunda se rechaza hasta que termine la primera. Alcanzar cualquiera de los dos límites devuelve de inmediato el code 42901 sin cargo, junto con una cabecera Retry-After: vuelva a enviar la solicitud cuando termine una solicitud en curso.
60 s individual, 300 s múltipleSuperar el tiempo límite devuelve el code 50400 sin cargo. Una verificación múltiple que supera el tiempo de espera falla en su totalidad: no hay resultados parciales y se reembolsa el importe completo.
Una verificación múltiple admite hasta 100 númerosLos resultados conservan el orden y la longitud del envío. Solo se ejecuta una verificación múltiple por cuenta a la vez; envíe el siguiente lote cuando el anterior haya devuelto sus resultados.

Códigos de error

CódigoDescripción
40000Tipo de servicio no compatible o campos de la solicitud en conflicto
40001Cuerpo JSON no válido
40002Número no válido
40100Clave API ausente o no válida
40200Saldo insuficiente
42200No se ha podido determinar el número en este momento. No se devuelve data y la solicitud no se cobra
42900Se ha agotado una cuota de uso o hay demasiados pedidos sin finalizar
42901Las cinco plazas de solicitudes simultáneas están ocupadas o ya hay una verificación múltiple en ejecución en esta cuenta; envíe la solicitud cuando termine una solicitud en curso. La solicitud rechazada no se cobra e incluye una cabecera Retry-After
50303El servicio está a plena capacidad en este momento; no se cobra. Espere los segundos indicados en Retry-After y vuelva a enviar la misma solicitud
50400La verificación no finalizó dentro de su tiempo de espera y no se cobra; reinténtela. Si se agota el tiempo de un lote, falla el lote completo y se reembolsa el importe total
50300Mantenimiento del servicio de validación