API v2 + SDK de TypeScript

API y SDK de Revolink
Gestiona tus enlaces desde el código

Crea enlaces con reglas de enrutamiento, gestiona etiquetas y dominios propios y lee las analíticas de clics con una API REST con especificación OpenAPI 3.1 o con el SDK de TypeScript tipado y sin dependencias.

Crea una clave en Perfil → API

Última actualización: noviembre de 2026

terminal
npm install revolink

Instalación en una línea

Funciona en Node.js 18+ y en cualquier entorno con fetch global. Sin dependencias y con tipos TypeScript completos generados a partir de la especificación de la API.

Inicio rápido

De cero a tu primer enlace corto en tres pasos.

1

Crea una clave de API

En Revolink abre Perfil → API y crea una clave. Elige solo los permisos que necesita.

2

Copia el id de tu espacio de trabajo

El id del espacio se envía con cada petición, así que la clave siempre actúa en un solo espacio.

3

Crea un enlace

Inicializa el cliente con la clave y el id del espacio y llama a links.create.

Guarda la clave en tu servidor. Quien la tenga puede actuar en tu espacio dentro de los permisos de la clave.

Integra tu proyecto sin esfuerzo

Con el SDK de Revolink creas enlaces cortos con reglas de enrutamiento en pocas líneas de código.

index.ts
import {Revolink} from 'revolink';

const revolink = new Revolink({
  apiKey: process.env.REVOLINK_API_KEY!,
  workspaceId: process.env.REVOLINK_WORKSPACE_ID!,
});

const {shortLink} = await revolink.links.create({
  url: 'https://example.com',
});
console.log(shortLink); // https://rvlnk.link/k3x9a

Explora los endpoints de la API

Petición

TypeScript
await revolink.links.create({
  url: 'https://example.com',
});

Respuesta

JSON
{
  id: "65f1c0a2e4b0a1d2c3b4a5f6",
  name: "example.com",
  domain: "rvlnk.link",
  slug: "k3x9a",
  shortLink: "https://rvlnk.link/k3x9a",
  url: "https://example.com",
  active: true,
  clicks: 0,
  ...
}

Qué cubre el SDK

Cuatro recursos y una llamada me. Cada método corresponde a un endpoint REST.

RecursoMétodosQué hace
revolink.links
createupsertgetlistiterateupdatedeletecreateManyupdateManydeleteMany
Crear, leer, actualizar y eliminar enlaces, upsert por slug, listar con filtros y paginación, recorrer todas las páginas y operar en lote (hasta 100 por llamada).
revolink.tags
listgetcreateupdatedelete
Crear, listar, renombrar y eliminar etiquetas.
revolink.domains
listgetcreatedelete
Añadir un dominio propio, comprobar su estado de verificación y eliminarlo.
revolink.analytics
linkworkspace
Analíticas de clics de un enlace o de todo el espacio en un intervalo de fechas.
revolink.me()
Quién actúa con la clave, el espacio de trabajo y los permisos de la clave.

Enrutamiento inteligente desde código

Envía a distintos visitantes a distintos destinos. Exactamente una regla es la predeterminada; las demás se aplican según país, dispositivo, sistema operativo y otras condiciones.

routing.ts
await revolink.links.create({
  name: 'App download',
  rules: [
    {isDefault: true, targetUrl: 'https://example.com/download'},
    {
      isDefault: false,
      targetUrl: 'https://apps.apple.com/app/id1',
      device: ['mobile'],
      os: ['iOS'],
    },
  ],
});

Claves de API y permisos

Cada clave lleva scopes. Un endpoint responde 403 si falta el scope que necesita, así que da a cada integración solo lo que usa.

Cabeceras de autenticación

Authorization: Bearer <key>

Envía la clave como token bearer.

X-Api-Key

O envía la clave en esta cabecera.

X-Workspace-Id

Obligatoria. El espacio de trabajo en el que actúa la petición. El propietario de la clave debe ser miembro.

Scopes

ScopePermite
links:readListar y leer enlaces
links:writeCrear, hacer upsert y actualizar enlaces
links:deleteEliminar enlaces
links:bulkCrear, actualizar y eliminar en lote (hasta 100 enlaces por petición)
analytics:readLeer analíticas de clics
tags:readListar y leer etiquetas
tags:writeCrear y actualizar etiquetas
tags:deleteEliminar etiquetas
domains:readListar y leer dominios propios
domains:writeAñadir dominios propios
domains:deleteEliminar dominios propios

Las llamadas a la API cuentan para la cuota mensual de API del plan del propietario del espacio. Cuando un límite del plan detiene una petición, el código de error es license_limit_reached.

Errores y reintentos

Cada petición fallida lanza un RevolinkError con el estado HTTP, un código legible por máquina y un mensaje que indica qué corregir.

errors.ts
import {RevolinkError} from 'revolink';

try {
  await revolink.links.create({url: 'https://example.com', slug: 'taken'});
} catch (error) {
  if (error instanceof RevolinkError) {
    error.status;              // 409
    error.code;                // 'conflict'
    error.licenseLimitReached; // true when the plan's limit stopped the request
    error.requiredPermission;  // e.g. 'tags:write' when the key lacks a scope
    error.retryAfter;          // seconds, on 429
  }
}

Reintentos que nunca duplican un enlace

Un 429 siempre se reintenta tras la espera indicada por Retry-After. Los errores de red y las respuestas 5xx se reintentan solo para GET, PUT y DELETE. Un POST o PATCH que pudo haberse procesado nunca se repite, así que un enlace no se crea dos veces. Valores por defecto: 30 segundos de tiempo de espera por intento y 2 reintentos; maxRetries en 0 desactiva los reintentos.

CódigoSignificado
invalid_requestLa petición es incorrecta (400). El mensaje dice qué falla.
unauthorizedFalta la clave, o es inválida o ha caducado (401).
forbiddenA la clave le falta un permiso, o tu rol no puede hacerlo (403).
license_limit_reachedSe alcanzó el límite del plan: enlaces, etiquetas, dominios o llamadas a la API (403).
not_foundNo existe ese elemento en este espacio (404).
conflictYa existe, por ejemplo un slug o un nombre de etiqueta ocupado (409).
rate_limitedMás de 300 peticiones por minuto para la clave (429).
network_errorSin respuesta: fallo de red o tiempo de espera agotado (el estado es 0).

Preguntas frecuentes

¿Es obligatorio usar el SDK?

No. El SDK es una capa fina y tipada sobre la API REST. Puedes llamar directamente a https://api.revolink.link/apiv2 desde cualquier lenguaje con una clave de API y la cabecera X-Workspace-Id, o generar un cliente a partir de la especificación OpenAPI 3.1.

¿Qué entornos admite el SDK?

Node.js 18 o superior y cualquier entorno con fetch global. No tiene dependencias e incluye compilaciones ESM y CommonJS con tipos TypeScript generados a partir de la especificación de la API.

¿Cuáles son los límites de peticiones?

Las peticiones están limitadas a 300 por minuto por clave de API. Por encima, la API responde 429 con una cabecera Retry-After, y el SDK espera y reintenta por sí solo. Aparte, las llamadas a la API cuentan para la cuota mensual del plan del propietario del espacio.

¿Qué pasa con la API v1?

La API v1 está congelada y sus respuestas incluyen cabeceras Deprecation. Las nuevas integraciones deberían usar la API v2.

¿Puede el SDK crear enlaces duplicados al reintentar?

No. Un POST o PATCH que pudo haberse procesado nunca se reintenta. Solo se reintentan las respuestas 429 y las peticiones idempotentes (GET, PUT, DELETE).

¿Puedo usar Revolink desde un agente de IA?

Sí. El servidor MCP de Revolink permite a Claude, Cursor y otros clientes MCP gestionar enlaces en lenguaje natural. El SDK es la opción para tu propio código y tus scripts.

¿Listo para empezar con Revolink?

Únete a equipos y creadores que controlan cada clic con enrutamiento inteligente. Lanza campañas más inteligentes, optimiza el tráfico en tiempo real y crece sin límites.

Empieza gratis

Plan gratuito · Sin tarjeta de crédito · Cancela cuando quieras

¿Ya tienes enlaces? Impórtalos