Acortador de URL
Descargar tipos de TypeScriptSDK
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.
# Solo este servicio
npm install @ircg/uss
# O el meta-paquete
npm install @ircg/sdkUso 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.
// 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.
// 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étodo | Ruta | Descripción |
|---|---|---|
| GET | /api/v1/urls | Listar URLs acortadas. |
| POST | /api/v1/urls | Acortar una URL. |
| GET | /api/v1/urls/:urlKey | Consultar una URL acortada. |
| PUT | /api/v1/urls/:urlKey | Actualizar una URL acortada. |
| DELETE | /api/v1/urls/:urlKey | Eliminar una URL acortada. |
Listar URLs acortadas GET
// 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ámetro | Tipo | Valores permitidos | Por defecto | Descripción |
|---|---|---|---|---|
| fields | string | Arreglo JSON de nombres de campos | Todos los campos | Especifica qué campos incluir en la respuesta. Campos disponibles: Ejemplo: |
| amount | number | 1 - 100 | 50 | Útil para la paginación. |
| page | number | 1 - 99999 | 1 | Útil para la paginación. |
| ascending | boolean | true false | false | Ordena la lista tomando en cuenta la fecha de creación (createdAt). |
Respuestas
Acortar URL POST
// 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ámetro | Tipo | Valores permitidos | Por defecto | Descripción |
|---|---|---|---|---|
| fields | string | Arreglo JSON de nombres de campos | Todos los campos | Especifica qué campos incluir en la respuesta. Campos disponibles: Ejemplo: |
Cuerpo
| Campo | Tipo | Requerido | Por defecto | Descripción |
|---|---|---|---|---|
| url | string | Sí | - | La URL que se requiere acortar. Debe empezar por "https". |
Respuestas
Obtener URL acortada GET
// 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
| Segmento | Tipo | Descripción |
|---|---|---|
| urlKey | string | Funciona como identificador único de cada URL acortada. |
Parámetros opcionales
https://ircg.dev/api/v1/urls/1C?fields=["urlKey","originalUrl","visits"]
| Parámetro | Tipo | Valores permitidos | Por defecto | Descripción |
|---|---|---|---|---|
| fields | string | Arreglo JSON de nombres de campos | Todos los campos | Especifica qué campos incluir en la respuesta. Campos disponibles: Ejemplo: |
Respuestas
Actualizar URL acortada PUT
Se puede actualizar el campo active, al tener el valor false ya no ocurren las redirecciones.
// 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
| Segmento | Tipo | Descripción |
|---|---|---|
| urlKey | string | Funciona como identificador único de cada URL acortada. |
Parámetros opcionales
https://ircg.dev/api/v1/urls/2M?fields=["urlKey","originalUrl"]
| Parámetro | Tipo | Valores permitidos | Por defecto | Descripción |
|---|---|---|---|---|
| fields | string | Arreglo JSON de nombres de campos | Todos los campos | Especifica qué campos incluir en la respuesta. Campos disponibles: Ejemplo: |
Cuerpo
| Campo | Tipo | Requerido | Por defecto | Descripción |
|---|---|---|---|---|
| active | boolean | No | false | Indica si la redirección está activa o no. |
Respuestas
Eliminar URL acortada DELETE
// 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
| Segmento | Tipo | Descripción |
|---|---|---|
| urlKey | string | Funciona 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.