Encurtar URLs em massa com a API URLW: guia e exemplos

Encurte centenas de URLs numa única requisição com a API batch do URLW. Guia completo com exemplos curl, boas práticas e gestão de erros.

Tem um catálogo de 500 produtos, 1 000 artigos de blogue ou um ficheiro CSV de links para encurtar urgentemente? A API URLW disponibiliza um endpoint batch que lhe permite processar centenas de URLs numa única requisição HTTP, com desempenho e fiabilidade otimizados.

Quando utilizar o encurtamento em massa

O processamento em massa é particularmente adequado nestas situações:

  • Migração a partir de outro serviço: importa todos os seus links Bitly ou TinyURL existentes para o URLW
  • Catálogo de e-commerce: encurta o URL de cada ficha de produto para as suas campanhas SMS ou de email marketing
  • Conteúdo editorial: um media ou blogue pretende encurtar todos os seus artigos para as redes sociais
  • Campanha multi-segmentos: cria links personalizados para cada segmento da sua base de clientes (500 segmentos = 500 links)
  • Automatização de pipeline: um fluxo de trabalho automatizado gera links curtos para novos conteúdos publicados diariamente

O endpoint batch da API URLW

O endpoint POST /api/v1/links/batch aceita um array JSON de URLs a encurtar. Cada elemento pode especificar um URL, um slug opcional, um domínio personalizado e metadados.

Limites a conhecer:

  • Máximo de 100 URLs por requisição batch (para volumes superiores, segmente em várias requisições)
  • O limite de velocidade do seu plano aplica-se por requisição, não por URL no batch
  • Os erros são retornados por URL (um URL inválido não bloqueia os outros)

Exemplo completo com curl

Eis um exemplo de requisição batch encurtando 3 URLs de uma só vez:

curl -X POST https://urlw.fr/api/v1/links/batch \
-H "Authorization: Bearer A_SUA_CHAVE_API" \
-H "Content-Type: application/json" \
-d '{
"links": [
  {
    "url": "https://exemplo.com/produto/cadeira-escritorio-ergonomica",
    "slug": "cadeira-escritorio",
    "domain": "go.a-sua-loja.fr"
  },
  {
    "url": "https://exemplo.com/produto/secretaria-standing-ajustavel",
    "slug": "secretaria-standing"
  },
  {
    "url": "https://exemplo.com/produto/candeeiro-led-escritorio",
    "slug": "candeeiro-led"
  }
]
}'

Resposta JSON (HTTP 207 Multi-Status):

{
"results": [
{
  "status": 201,
  "link": {
    "id": "lnk_001",
    "short_url": "https://go.a-sua-loja.fr/cadeira-escritorio",
    "slug": "cadeira-escritorio"
  }
},
{
  "status": 201,
  "link": {
    "id": "lnk_002",
    "short_url": "https://urlw.fr/secretaria-standing",
    "slug": "secretaria-standing"
  }
},
{
  "status": 422,
  "error": {
    "code": "SLUG_TAKEN",
    "message": "O slug 'candeeiro-led' já está em uso"
  }
}
]
}

Script bash para encurtar um ficheiro CSV em massa

Para processar um ficheiro CSV de vários milhares de URLs, eis uma abordagem com bash e o comando split:

#!/bin/bash
# Divide o CSV em lotes de 100 URLs e chama a API URLW para cada lote

INPUT_FILE="urls_a_encurtar.csv"
API_KEY="${URLW_API_KEY}"
OUTPUT_FILE="links_curtos_gerados.csv"

# Ler o CSV linha por linha e construir lotes de 100
python3 - <<'EOF'
import json, csv, subprocess, sys

with open('urls_a_encurtar.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"Processamento do lote {i//batch_size + 1} ({len(batch)} URLs)...")
# Chamada API aqui com subprocess.run ou requests
EOF

Para volumes muito grandes (10 000+ URLs), prefira um script Python ou Node.js com gestão assíncrona e retry automático em caso de erros 429. Consulte a documentação API URLW para os detalhes completos do endpoint batch. Crie a sua conta para começar.

Experimente o URLW gratuitamente

50 links curtos, API REST incluída, sem cartão de crédito necessário.