Total Enlaces
0
Total Tags
0
Total Grupos
0
Tendencia Global de Clics
Navegadores Populares
Tags más usados
Grupos más usados
Total Clicks
0
Último Clic
-
Top País
-
Tendencia de clics (Histórico)
Configuración del Link
Países
Navegadores
Dispositivos
Top Sources (UTM)
Top Mediums (UTM)
Top Campaigns (UTM)
Referrers
JAMRdev URL Shortener - API Documentation
Para Desarrolladores: Guía completa para integrar tu aplicación con JAMRdev URL Shortener
Tabla de Contenidos
Introducción
La API de JAMRdev URL Shortener te permite crear, gestionar y analizar enlaces acortados desde tu propia aplicación. Puedes crear enlaces individuales o en masa, organizarlos con tags y grupos, y obtener estadísticas detalladas.
Base URL
https://short.jamrdev.com.ar
Autenticación
La API utiliza Clerk para autenticación. Necesitas un token Bearer para todas las peticiones.
¿Cómo obtener tu token?
Opción 1: Desde el Navegador (Testing)
- 1. Abre las DevTools (F12)
- 2. Ve a la pestaña Console
- 3. Ejecuta:
await window.Clerk.session.getToken() - 4. Copia el token resultante
Usar el Token en tus Peticiones
Authorization: Bearer TU_TOKEN_AQUI
Endpoints Disponibles
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /api/shorten | Crear un enlace acortado |
| GET | /api/links | Obtener todos tus enlaces |
| PATCH | /api/links/:id | Actualizar un enlace |
| DELETE | /api/links/:id | Eliminar un enlace |
| GET | /api/analytics | Analíticas globales |
| GET | /api/analytics/:slug | Analíticas de un enlace específico |
Crear Enlaces (Individual)
Endpoint
POST /api/shorten
Request Body
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| url | string | Sí | URL a acortar |
| customSlug | string | No | Slug personalizado |
| tags | array | No | Array de tags |
| group | string | No | Nombre del grupo |
async function crearEnlace(url, customSlug = null, tags = [], group = null) {
const token = await window.Clerk.session.getToken();
const response = await fetch('https://short.jamrdev.com.ar/api/shorten', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({ url, customSlug, tags, group })
});
const data = await response.json();
console.log(`Enlace creado: https://short.jamrdev.com.ar/${data.slug}`);
return data;
}
Crear Enlaces en Masa
Para crear múltiples enlaces, usa Promise.all para ejecutar peticiones en paralelo:
async function crearEnlacesEnMasa(enlaces) {
const token = await window.Clerk.session.getToken();
const promesas = enlaces.map(enlace =>
fetch('https://short.jamrdev.com.ar/api/shorten', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(enlace)
})
.then(res => res.json())
.catch(err => ({ error: err.message, url: enlace.url }))
);
const resultados = await Promise.all(promesas);
console.log(`Resultados: ${resultados.filter(r => !r.error).length} enlaces creados`);
return resultados;
}
// Uso
const enlaces = [
{ url: 'https://ejemplo.com/pagina1', tags: ['blog'] },
{ url: 'https://ejemplo.com/pagina2', tags: ['blog'] },
{ url: 'https://ejemplo.com/pagina3', tags: ['blog'], group: 'Blog 2024' }
];
crearEnlacesEnMasa(enlaces);
Analíticas
Analíticas Globales
GET /api/analytics
Obtén estadísticas de todos tus enlaces
Analíticas por Enlace
GET /api/analytics/:slug
Estadísticas de un enlace específico
Códigos de Error
| Código | Significado | Solución |
|---|---|---|
| 400 | Bad Request | Verifica que todos los campos requeridos sean válidos |
| 401 | Unauthorized | Token inválido o expirado. Obtén uno nuevo |
| 404 | Not Found | El recurso no existe |
| 409 | Conflict | Slug ya en uso. Elige otro |
| 500 | Server Error | Error interno. Intenta más tarde |
Ejemplos Completos
Ejemplo 1: Obtener Estadísticas
async function obtenerEstadisticas() {
const token = await window.Clerk.session.getToken();
const res = await fetch('https://short.jamrdev.com.ar/api/analytics', {
headers: { 'Authorization': `Bearer ${token}` }
});
const stats = await res.json();
console.log('Total clicks:', stats.totalClicks);
console.log('Top países:', stats.countries);
return stats;
}
Ejemplo 2: Obtener Tus Enlaces
async function obtenerMisEnlaces() {
const token = await window.Clerk.session.getToken();
const res = await fetch('https://short.jamrdev.com.ar/api/links', {
headers: { 'Authorization': `Bearer ${token}` }
});
const enlaces = await res.json();
console.log(`Tienes ${enlaces.length} enlaces`);
return enlaces;
}
Tips y Mejores Prácticas
- Manejo de Errores: Siempre implementa try-catch para errores de red
- Rate Limiting: Máximo 5-10 peticiones concurrentes
- Tokens: Los tokens de Clerk expiran, renuévalos automáticamente
- Slugs: Verifica disponibilidad antes de crear con slug personalizado
Soporte
¿Necesitas ayuda? Contacta al equipo de JAMRdev
Email: soporte@jamrdev.com.ar
Versión de la API: 1.0