/api/v6/urlshortener/linksListar enlaces cortos
Tus enlaces paginados, con búsqueda, filtros, orden y sus contadores de visitas.
Alcance y límites
API key con el servicio urlshortener habilitado
30 solicitudes por minuto
- Hasta 100 ítems por página; un valor mayor se recorta a 100.
totales exacto hasta 10.000; por encima,totalIsExactesfalse.- Con
pagese llega hasta el enlace 10.000; para seguir,cursor. - Una búsqueda o un orden demasiado costosos para una organización muy grande se detienen a los pocos segundos con
504.
Lista los enlaces de tu organización —nunca los eliminados— con sus contadores ya consolidados. Por defecto, del más nuevo al más viejo. Todos los filtros son opcionales y se combinan entre sí.
status conserva su significado de siempre: active incluye los vencidos, porque vencer no cambia el estado guardado. Para separar los vigentes de los vencidos usa state.
Para recorrer muchos enlaces, pagina con `cursor`. Cada respuesta trae nextCursor mientras haya más: pásalo en la siguiente petición, con los mismos filtros, sort y order, y la página empieza justo después del último enlace de la anterior. page sigue funcionando como siempre, pero solo hasta el enlace 10.000 (con perPage=100, hasta la página 100); más allá responde 400 y hay que seguir con cursor, que no tiene tope.
`total` es exacto hasta 10.000. Si los enlaces que cumplen los filtros son más, total llega en 10000 y totalIsExact en false: «más de 10.000». hasMore dice siempre, sin error, si hay otra página.
Parámetros de consulta
pagecursor se ignora.Por defecto: 1
perPagePor defecto: 20
cursornextCursor de la respuesta anterior, tal cual. La página empieza justo después del último enlace de esa respuesta. Tiene que ir con el mismo sort y order; un cursor que no es de esta organización o de este orden responde 400.searchh0b.co/a1b2c3d o https://h0b.co/a1b2c3d), trae exactamente ese enlace, también si su dominio ya no es de tu organización (domainStatus: released).domaindomainStatus: released) no entran aunque se llamen igual: para encontrar uno, pega su URL corta en search.stateactive (activo y sin vencer), expired (activo con el vencimiento ya pasado: ya no redirige), disabled o blocked (bloqueado por Hablame).activeexpireddisabledblockedstatusactive incluye los vencidos. Se conserva por compatibilidad; prefiere state.activedisabledblockedkindaliasgeneratedtrafficnone: los que nunca han recibido una visita. some: los que han recibido al menos una.nonesomecreatedFromAAAA-MM-DD, hora de Colombia), incluido.createdToAAAA-MM-DD, hora de Colombia), incluido.sortlastClick y expires, los enlaces sin ese dato van al final en los dos sentidos.createdclickslastClickexpiresPor defecto: created
orderdescascPor defecto: desc
Respuestas
Página de enlaces.
{
"success": true,
"data": {
"items": [
{
"domain": "h0b.co",
"code": "a1b2c3d",
"shortUrl": "https://h0b.co/a1b2c3d",
"longUrl": "https://example.com/landing",
"isAlias": false,
"status": "active",
"domainStatus": "active",
"expiresAt": null,
"createdAt": "2026-09-20T15:04:05Z",
"clicks": 128,
"uniqueClicks": 96,
"firstClickAt": "2026-09-20T15:31:40Z",
"lastClickAt": "2026-09-23T18:22:10Z"
}
],
"page": 1,
"perPage": 20,
"total": 1,
"totalIsExact": true,
"hasMore": false,
"nextCursor": null
},
"meta": {
"requestId": "8f0c0e2a4b1d4c8fae2b7a91e0c5d3f6",
"timestamp": "2026-09-23T18:30:00+00:00",
"responseTimeMs": 7.2
}
}Un filtro trae un valor que no existe (el mensaje dice cuál y qué valores acepta), una fecha que no es AAAA-MM-DD, una page más allá del enlace 10.000 o un cursor que no vale.
Credenciales inválidas o faltantes.
La API key no tiene habilitado el acortador (o está apagado para tu organización), la key no se puede usar desde la red de la petición, o la organización no está activa.
Se excedió el límite de solicitudes.
La consulta tardó demasiado y la detuvimos. Pasa con consultas muy grandes para organizaciones con muchos enlaces: acótala (menos días, menos secciones, más filtros). Repetirla igual no ayuda.
Errores posibles
Códigos que este endpoint puede devolver en error.code. El detalle completo está en el catálogo.
AUTH_REQUIREDNo se envió un token Bearer y cada llamada lo requiere.401AUTH_INVALID_KEYLa API key no se reconoce: formato equivocado, revocada o vencida.403AUTH_SERVICE_NOT_ALLOWEDLa key no tiene permitido el servicio detrás de este endpoint.403AUTH_IP_NOT_ALLOWEDLa key solo funciona desde ciertas redes y tu IP no está entre ellas.403ACCOUNT_NOT_ACTIVETu organización está suspendida o cerrada.400VALIDATION_INVALID_PARAMETERUn parámetro o un campo del cuerpo no es válido.429RATE_TPS_EXCEEDEDExcediste el cupo de tu organización para este endpoint.504INFRA_DB_QUERY_TIMEOUTUna consulta interna tardó demasiado y se cortó.