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.

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 con tu API key y crea una URL corta. Los métodos seguros devuelven error en vez de lanzar una excepción.

typescript
	import { USSClient } from '@ircg/uss'
	
	const uss = new USSClient({ apiKey: API_KEY, lang: 'es' })
	const result = await uss.create({
		url: 'https://example.com/a/very/long/path',
		fields: ['urlKey', 'originalUrl'],
	})
	if (result.error) throw new Error(result.error.message)
	console.log('https://ircg.dev/l/' + result.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
	const uss = new USSClient({ apiKey: 'unused', dryRun: true })
	const result = await uss.create({
		url: 'https://example.com/a/very/long/path',
		fields: ['urlKey', 'originalUrl'],
	})
	if (result.error) throw new Error(result.error.message)
	console.log(result.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
	import { USSClient } from '@ircg/uss'
	
	const uss = new USSClient({ apiKey: API_KEY, lang: 'es' })
	const result = await uss.getAll({ page: 1, amount: 50, fields: ['urlKey', 'originalUrl', 'visits'] })
	if (result.error) throw new Error(result.error.message)
	console.log(result.shortenedUrls, result.totalAmount)
	
	const response = await fetch('https://ircg.dev/api/v1/urls?fields=%5B%22urlKey%22%2C%22originalUrl%22%2C%22visits%22%5D', {
		headers: { Authorization: `Bearer ${API_KEY}`,
			'Accept-Language': 'es' },
	})
	if (!response.ok) throw new Error(`List failed: ${response.status}`)
	const data = await response.json()
	console.log(data.shortenedUrls, data.totalAmount)

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
	import { USSClient } from '@ircg/uss'
	
	const uss = new USSClient({ apiKey: API_KEY, lang: 'es' })
	const result = await uss.create({ url: 'https://example.com/docs', fields: ['urlKey', 'originalUrl'] })
	if (result.error) throw new Error(result.error.message)
	console.log(result.shortenedUrl.urlKey)
	
	const response = await fetch('https://ircg.dev/api/v1/urls?fields=%5B%22urlKey%22%2C%22originalUrl%22%5D', {
		method: 'POST',
		headers: { Authorization: `Bearer ${API_KEY}`,
			'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 data = await response.json()
	console.log(data.shortenedUrl.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
	import { USSClient } from '@ircg/uss'
	
	const uss = new USSClient({ apiKey: API_KEY, lang: 'es' })
	const urlKey = '2F'
	const result = await uss.getByKey({ urlKey, fields: ['urlKey', 'originalUrl', 'visits'] })
	if (result.error) throw new Error(result.error.message)
	console.log(result.shortenedUrl)
	
	const response = await fetch(`https://ircg.dev/api/v1/urls/${urlKey}?fields=%5B%22urlKey%22%2C%22originalUrl%22%2C%22visits%22%5D`, {
		headers: { Authorization: `Bearer ${API_KEY}`,
			'Accept-Language': 'es' },
	})
	if (!response.ok) throw new Error(`Read failed: ${response.status}`)
	const data = await response.json()
	console.log(data.shortenedUrl)

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
	import { USSClient } from '@ircg/uss'
	
	const uss = new USSClient({ apiKey: API_KEY, lang: 'es' })
	const urlKey = '2F'
	const result = await uss.update({ urlKey, active: false, fields: ['urlKey', 'active', 'updatedAt'] })
	if (result.error) throw new Error(result.error.message)
	if ('shortenedUrl' in result) console.log(result.shortenedUrl)
	
	const response = await fetch(`https://ircg.dev/api/v1/urls/${urlKey}?fields=%5B%22urlKey%22%2C%22active%22%2C%22updatedAt%22%5D`, {
		method: 'PUT',
		headers: { Authorization: `Bearer ${API_KEY}`,
			'Accept-Language': 'es', 'Content-Type': 'application/json' },
		body: JSON.stringify({ active: false }),
	})
	if (!response.ok) throw new Error(`Update failed: ${response.status}`)
	console.log((await response.json()).shortenedUrl)

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
	import { USSClient } from '@ircg/uss'
	
	const uss = new USSClient({ apiKey: API_KEY, lang: 'es' })
	const urlKey = 'abc123'
	const result = await uss.delete({ urlKey })
	if (result.error) throw new Error(result.error.message)
	console.log(result.success)
	
	const response = await fetch(`https://ircg.dev/api/v1/urls/${urlKey}`, {
		method: 'DELETE',
		headers: { Authorization: `Bearer ${API_KEY}`,
			'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