Acortar URLs en masa con la API de URLW: guía y ejemplos

Acorte cientos de URLs en una sola solicitud gracias a la API batch de URLW. Guía completa con ejemplos curl, buenas prácticas y gestión de errores.

¿Tiene un catálogo de 500 productos, 1 000 artículos de blog o un archivo CSV de enlaces que acortar urgentemente? La API de URLW ofrece un endpoint batch que le permite procesar cientos de URLs en una sola solicitud HTTP, con un rendimiento y una fiabilidad óptimos.

Cuándo usar el acortamiento en masa

El procesamiento en masa es especialmente adecuado en estas situaciones:

  • Migración desde otro servicio: importa todos sus enlaces de Bitly o TinyURL existentes a URLW
  • Catálogo de e-commerce: acorta la URL de cada ficha de producto para sus campañas de SMS o email marketing
  • Contenido editorial: un medio o blog desea acortar todos sus artículos para sus redes sociales
  • Campaña multi-segmento: crea enlaces personalizados para cada segmento de su base de clientes (500 segmentos = 500 enlaces)
  • Automatización de pipeline: un flujo de trabajo automatizado genera enlaces cortos para nuevos contenidos publicados cada día

El endpoint batch de la API de URLW

El endpoint POST /api/v1/links/batch acepta un array JSON de URLs a acortar. Cada elemento puede especificar una URL, un slug opcional, un dominio personalizado y metadatos.

Límites a tener en cuenta:

  • Máximo 100 URLs por solicitud batch (para volúmenes superiores, segmente en varias solicitudes)
  • El rate limit de su plan se aplica por solicitud, no por URL en el batch
  • Los errores se devuelven por URL (una URL inválida no bloquea las demás)

Ejemplo completo con curl

A continuación se muestra un ejemplo de solicitud batch que acorta 3 URLs en una sola vez:

curl -X POST https://urlw.fr/api/v1/links/batch \
-H "Authorization: Bearer SU_CLAVE_API" \
-H "Content-Type: application/json" \
-d '{
"links": [
  {
    "url": "https://ejemplo.com/producto/silla-oficina-ergonomica",
    "slug": "silla-oficina",
    "domain": "go.su-tienda.es"
  },
  {
    "url": "https://ejemplo.com/producto/escritorio-standing-ajustable",
    "slug": "escritorio-standing"
  },
  {
    "url": "https://ejemplo.com/producto/lampara-led-escritorio",
    "slug": "lampara-led"
  }
]
}'

Respuesta JSON (HTTP 207 Multi-Status):

{
"results": [
{
  "status": 201,
  "link": {
    "id": "lnk_001",
    "short_url": "https://go.su-tienda.es/silla-oficina",
    "slug": "silla-oficina"
  }
},
{
  "status": 201,
  "link": {
    "id": "lnk_002",
    "short_url": "https://urlw.fr/escritorio-standing",
    "slug": "escritorio-standing"
  }
},
{
  "status": 422,
  "error": {
    "code": "SLUG_TAKEN",
    "message": "El slug 'lampara-led' ya está en uso"
  }
}
]
}

Script bash para acortar un archivo CSV en masa

Para procesar un archivo CSV de varios miles de URLs, aquí hay un enfoque con bash y el comando split:

#!/bin/bash
# Divide el CSV en lotes de 100 URLs y llama a la API de URLW para cada lote

INPUT_FILE="urls_a_acortar.csv"
API_KEY="${URLW_API_KEY}"
OUTPUT_FILE="enlaces_cortos_generados.csv"

# Leer el CSV línea por línea y construir batches de 100
python3 - <<'EOF'
import json, csv, subprocess, sys

with open('urls_a_acortar.csv') as f:
urls = [row[0] for row in csv.reader(f) if row]

batch_size = 100
for i in range(0, len(urls), batch_size):
batch = [{"url": u} for u in urls[i:i+batch_size]]
payload = json.dumps({"links": batch})
print(f"Procesando lote {i//batch_size + 1} ({len(batch)} URLs)...")
# Llamada API aquí con subprocess.run o requests
EOF

Para volúmenes muy grandes (10 000+ URLs), prefiera un script Python o Node.js con gestión asíncrona y reintento automático en errores 429. Consulte la documentación de la API de URLW para los detalles completos del endpoint batch. Cree su cuenta para empezar.

Pruebe URLW gratis

50 enlaces cortos, API REST incluida, sin tarjeta de crédito.