API del acortador de URLs

Crea enlaces cortos de iny.one desde tus propios scripts, backends o automatizaciones con un solo POST JSON. La API aplica el mismo etiquetado UTM, la misma revisión de seguridad y la misma analítica que el acortador web — y, como todo aquí, nunca pone una página de anuncios delante de tus visitantes.

Endpoint

Un solo endpoint hace el trabajo. Envía la URL de destino más un objeto utm con source, medium y campaign; pasa strings vacíos en los campos UTM que no quieras etiquetar.

POST https://iny.one/api/shorten

Request

url string · requerido
URL de destino. Solo http(s); a los dominios sin protocolo se les añade https://. Se rechazan direcciones IP e iny.one mismo.
utm.source string · requerido (puede ir vacío)
De dónde viene el tráfico, p. ej. newsletter, google. Se sanitiza a letras, números, guiones y guiones bajos.
utm.medium string · requerido (puede ir vacío)
Tipo de canal, p. ej. email, cpc, social.
utm.campaign string · requerido (puede ir vacío)
Nombre de campaña, p. ej. lanzamiento_julio.

cURL

curl -X POST https://iny.one/api/shorten \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/landing",
    "utm": {
      "source": "newsletter",
      "medium": "email",
      "campaign": "july_launch"
    }
  }'

JavaScript (fetch)

const res = await fetch("https://iny.one/api/shorten", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://example.com/landing",
    utm: { source: "newsletter", medium: "email", campaign: "july_launch" },
  }),
});

const json = await res.json();
// json.data.short -> "https://iny.one/abc1234"

Respuesta

Las llamadas exitosas devuelven HTTP 200 con el enlace corto en data.short. Los problemas de validación devuelven 422, y alcanzar tu cuota mensual devuelve 429 — ambos con el mismo formato de error.

200 OK

{
  "success": true,
  "data": {
    "short": "https://iny.one/abc1234"
  },
  "meta": {
    "requestId": "3f6f4c1e-…",
    "timestamp": "2026-07-21T12:00:00.000Z"
  }
}

422 / 429

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "…",
    "status": 429,
    "type": "…"
  },
  "meta": { "requestId": "…", "timestamp": "…" }
}

Límites de uso

NivelLímiteNotas
Anónimo (por IP)5 enlaces / mesLos enlaces expiran a los 180 días
Cuenta gratuita50 enlaces / mesLos enlaces no expiran; incluye panel de analítica
Basic1.000 enlaces / mesAñade utm_content y utm_term
Pro10.000 enlaces / mesAñade utm_id

Bueno saberlo

  • Solo POST con cuerpo JSON — no existe un endpoint GET /shorten?url=, así los destinos no se filtran en logs ni referrers.
  • Los dominios de destino se revisan contra una lista de dominios inseguros antes de crear el enlace.
  • Las llamadas autenticadas hoy reutilizan la sesión web (cookies). Las API keys dedicadas están en el roadmap.
  • Las redirecciones responden con HTTP 307 y quedan excluidas del índice de búsqueda, así tu página de destino conserva las señales SEO.

Preguntas frecuentes del API

¿La API es gratis?

Sí, dentro de los mismos límites mensuales que la app web — mira la tabla de arriba. Sin tarjeta para los niveles anónimo y gratuito.

¿Necesito una API key?

No para uso anónimo. Las API keys dedicadas están planificadas; hoy las llamadas autenticadas usan la misma sesión que la web.

¿Hay endpoint GET?

No — solo POST JSON. Así las URLs y los valores UTM no quedan en logs ni referrers.

¿Los enlaces creados por API expiran?

Los anónimos expiran a los 180 días; los creados con sesión iniciada no expiran.

¿Necesitas más volumen? Compara planes¿Prefieres el formulario web? Acorta una URL

API de acortador de URLs gratis — crea enlaces con un POST | iny.one