Acortador de URL

Descargar tipos de TypeScript

SDK

Además de la API REST, el SDK oficial para TypeScript y JavaScript gestiona la autenticación, la paginación y el filtrado de campos de las URLs. Úsalo desde tu servidor para no exponer la API key.

Instalación

Instala el SDK de acortador de URLs desde npm. Puedes usar @ircg/uss para este servicio o @ircg/sdk para todos los servicios de IRCG.

typescript
	# Solo este servicio
	npm install @ircg/uss
	# O el meta-paquete
	npm install @ircg/sdk

Uso básico

Inicializa USSClient en tu servidor con una API key obtenida del entorno y crea una URL corta. Los métodos seguros devuelven error en vez de lanzar una excepción.

typescript
	// server.ts / server.js
	import { USSClient } from '@ircg/uss'
	
	const apiKey = process.env.IRCG_USS_API_KEY
	if (!apiKey) throw new Error('Configura IRCG_USS_API_KEY en el servidor')
	const uss = new USSClient({ apiKey, lang: 'es' })
	
	// Solicita únicamente los campos que necesita tu backend.
	const { shortenedUrl, error } = await uss.create({
		url: 'https://example.com/a/very/long/path',
		fields: ['urlKey', 'originalUrl'],
	})
	if (error) throw new Error(error.message)
	console.log('https://ircg.dev/l/' + shortenedUrl.urlKey)

Dry run

Configura dryRun: true para simular todas las operaciones remotas sin realizar solicitudes HTTP ni consumir créditos. Las listas regresan vacías y el cliente no conserva URLs acortadas entre llamadas.

typescript
	// server.ts / server.js
	import { USSClient } from '@ircg/uss'
	
	// Simula la operación sin realizar una solicitud HTTP ni consumir créditos.
	const uss = new USSClient({ apiKey: 'unused', dryRun: true, lang: 'es' })
	const { shortenedUrl, error } = await uss.create({
		url: 'https://example.com/a/very/long/path',
		fields: ['urlKey', 'originalUrl'],
	})
	if (error) throw new Error(error.message)
	console.log(shortenedUrl.urlKey) // "DR"

API REST

MétodoRutaDescripción
GET/api/v1/urlsListar URLs acortadas.
POST/api/v1/urlsAcortar una URL.
GET/api/v1/urls/:urlKeyConsultar una URL acortada.
PUT/api/v1/urls/:urlKeyActualizar una URL acortada.
DELETE/api/v1/urls/:urlKeyEliminar una URL acortada.

Listar URLs acortadas GET

typescript
	// server.ts / server.js
	import { USSClient } from '@ircg/uss'
	
	const apiKey = process.env.IRCG_USS_API_KEY
	if (!apiKey) throw new Error('Configura IRCG_USS_API_KEY en el servidor')
	const uss = new USSClient({ apiKey, lang: 'es' })
	
	// SDK
	const {
		shortenedUrls: sdkUrls,
		totalAmount: sdkTotalAmount,
		error,
	} = await uss.getAll({ page: 1, amount: 50, fields: ['urlKey', 'originalUrl', 'visits'] })
	if (error) throw new Error(error.message)
	console.log(sdkUrls, sdkTotalAmount)
	
	// REST
	const fieldsQuery = encodeURIComponent(JSON.stringify(["urlKey", "originalUrl", "visits"]))
	const response = await fetch('https://ircg.dev/api/v1/urls?fields=' + fieldsQuery, {
		headers: { Authorization: `Bearer ${apiKey}`,
			'Accept-Language': 'es' },
	})
	if (!response.ok) throw new Error(`List failed: ${response.status}`)
	const { shortenedUrls: restUrls, totalAmount: restTotalAmount } = await response.json()
	console.log(restUrls, restTotalAmount)

Parámetros opcionales

https://ircg.dev/api/v1/urls?fields=["urlKey","originalUrl","visits"]&amount=100&page=3&ascending=true

ParámetroTipoValores permitidosPor defectoDescripción
fieldsstringArreglo JSON de nombres de camposTodos los campos

Especifica qué campos incluir en la respuesta. Campos disponibles: id, serviceId, urlKey, originalUrl, createdAt, updatedAt, visits y active.

Ejemplo: ?fields=["urlKey","originalUrl","visits"]

amountnumber1 - 10050Útil para la paginación.
pagenumber1 - 999991Útil para la paginación.
ascendingboolean

true

false

falseOrdena la lista tomando en cuenta la fecha de creación (createdAt).

Respuestas

Acortar URL POST

typescript
	// server.ts / server.js
	import { USSClient } from '@ircg/uss'
	
	const apiKey = process.env.IRCG_USS_API_KEY
	if (!apiKey) throw new Error('Configura IRCG_USS_API_KEY en el servidor')
	const uss = new USSClient({ apiKey, lang: 'es' })
	
	// SDK
	const { shortenedUrl: sdkUrl, error } = await uss.create({
		url: 'https://example.com/docs',
		fields: ['urlKey', 'originalUrl'],
	})
	if (error) throw new Error(error.message)
	console.log(sdkUrl.urlKey)
	
	// REST
	const fieldsQuery = encodeURIComponent(JSON.stringify(["urlKey", "originalUrl"]))
	const response = await fetch('https://ircg.dev/api/v1/urls?fields=' + fieldsQuery, {
		method: 'POST',
		headers: { Authorization: `Bearer ${apiKey}`,
			'Accept-Language': 'es', 'Content-Type': 'application/json' },
		body: JSON.stringify({ url: 'https://example.com/docs' }),
	})
	if (!response.ok) throw new Error(`Create failed: ${response.status}`)
	const { shortenedUrl: restUrl } = await response.json()
	console.log(restUrl.urlKey)

Parámetros opcionales

https://ircg.dev/api/v1/urls?fields=["urlKey","originalUrl"]

ParámetroTipoValores permitidosPor defectoDescripción
fieldsstringArreglo JSON de nombres de camposTodos los campos

Especifica qué campos incluir en la respuesta. Campos disponibles: id, serviceId, urlKey, originalUrl, createdAt, updatedAt, visits y active.

Ejemplo: ?fields=["urlKey","originalUrl","visits"]

Cuerpo

CampoTipoRequeridoPor defectoDescripción
urlstring-

La URL que se requiere acortar.

Debe empezar por "https".

Respuestas

Obtener URL acortada GET

typescript
	// server.ts / server.js
	import { USSClient } from '@ircg/uss'
	
	const apiKey = process.env.IRCG_USS_API_KEY
	if (!apiKey) throw new Error('Configura IRCG_USS_API_KEY en el servidor')
	const uss = new USSClient({ apiKey, lang: 'es' })
	const urlKey = '2F'
	
	// SDK
	const { shortenedUrl: sdkUrl, error } = await uss.getByKey({
		urlKey,
		fields: ['urlKey', 'originalUrl', 'visits'],
	})
	if (error) throw new Error(error.message)
	console.log(sdkUrl)
	
	// REST
	const fieldsQuery = encodeURIComponent(JSON.stringify(["urlKey", "originalUrl", "visits"]))
	const response = await fetch(`https://ircg.dev/api/v1/urls/${urlKey}?fields=${fieldsQuery}`, {
		headers: { Authorization: `Bearer ${apiKey}`,
			'Accept-Language': 'es' },
	})
	if (!response.ok) throw new Error(`Read failed: ${response.status}`)
	const { shortenedUrl: restUrl } = await response.json()
	console.log(restUrl)

Segmento de ruta

https://ircg.dev/api/v1/urls/${urlKey}

https://ircg.dev/api/v1/urls/1C

SegmentoTipoDescripción
urlKeystringFunciona como identificador único de cada URL acortada.

Parámetros opcionales

https://ircg.dev/api/v1/urls/1C?fields=["urlKey","originalUrl","visits"]

ParámetroTipoValores permitidosPor defectoDescripción
fieldsstringArreglo JSON de nombres de camposTodos los campos

Especifica qué campos incluir en la respuesta. Campos disponibles: id, serviceId, urlKey, originalUrl, createdAt, updatedAt, visits y active.

Ejemplo: ?fields=["urlKey","originalUrl","visits"]

Respuestas

Actualizar URL acortada PUT

Se puede actualizar el campo active, al tener el valor false ya no ocurren las redirecciones.

typescript
	// server.ts / server.js
	import { USSClient } from '@ircg/uss'
	
	const apiKey = process.env.IRCG_USS_API_KEY
	if (!apiKey) throw new Error('Configura IRCG_USS_API_KEY en el servidor')
	const uss = new USSClient({ apiKey, lang: 'es' })
	const urlKey = '2F'
	
	// SDK
	const { shortenedUrl: sdkUrl, error } = await uss.update({
		urlKey,
		active: false,
		fields: ['urlKey', 'active', 'updatedAt'],
	})
	if (error) throw new Error(error.message)
	console.log(sdkUrl)
	
	// REST
	const fieldsQuery = encodeURIComponent(JSON.stringify(["urlKey", "active", "updatedAt"]))
	const response = await fetch(`https://ircg.dev/api/v1/urls/${urlKey}?fields=${fieldsQuery}`, {
		method: 'PUT',
		headers: { Authorization: `Bearer ${apiKey}`,
			'Accept-Language': 'es', 'Content-Type': 'application/json' },
		body: JSON.stringify({ active: false }),
	})
	if (!response.ok) throw new Error(`Update failed: ${response.status}`)
	const { shortenedUrl: restUrl } = await response.json()
	console.log(restUrl)

Segmento de ruta

https://ircg.dev/api/v1/urls/${urlKey}

https://ircg.dev/api/v1/urls/2M

SegmentoTipoDescripción
urlKeystringFunciona como identificador único de cada URL acortada.

Parámetros opcionales

https://ircg.dev/api/v1/urls/2M?fields=["urlKey","originalUrl"]

ParámetroTipoValores permitidosPor defectoDescripción
fieldsstringArreglo JSON de nombres de camposTodos los campos

Especifica qué campos incluir en la respuesta. Campos disponibles: id, serviceId, urlKey, originalUrl, createdAt, updatedAt, visits y active.

Ejemplo: ?fields=["urlKey","originalUrl","visits"]

Cuerpo

CampoTipoRequeridoPor defectoDescripción
activebooleanNofalseIndica si la redirección está activa o no.

Respuestas

Eliminar URL acortada DELETE

typescript
	// server.ts / server.js
	import { USSClient } from '@ircg/uss'
	
	const apiKey = process.env.IRCG_USS_API_KEY
	if (!apiKey) throw new Error('Configura IRCG_USS_API_KEY en el servidor')
	const uss = new USSClient({ apiKey, lang: 'es' })
	const urlKey = 'abc123'
	
	// SDK
	const { success, error } = await uss.delete({ urlKey })
	if (error) throw new Error(error.message)
	console.log(success)
	
	// REST
	const response = await fetch(`https://ircg.dev/api/v1/urls/${urlKey}`, {
		method: 'DELETE',
		headers: { Authorization: `Bearer ${apiKey}`,
			'Accept-Language': 'es' },
	})
	if (!response.ok) throw new Error(`Delete failed: ${response.status}`)
	console.log(response.status)

Segmento de ruta

https://ircg.dev/api/v1/urls/abc123

SegmentoTipoDescripción
urlKeystringFunciona como identificador único de cada URL acortada.

Respuestas

Límites y costos

  • Crear URLs cortas y procesar sus visitas no consumen créditos.
  • El límite predeterminado es de 60 solicitudes por 60 segundos y 1,000 por 3,600 segundos por API key; ambas ventanas se aplican de forma independiente. Puedes solicitar cambios a esos límites desde el panel.

Reportar abuso