/api/v6/urlshortener/linksList short links
Your links, paginated, with search, filters, sorting and their visit counters.
Scope and limits
API key with the urlshortener service enabled
30 requests per minute
- Up to 100 items per page; a larger value is capped at 100.
totalis exact up to 10,000; above that,totalIsExactisfalse.- With
pageyou reach up to link 10,000; to go further,cursor. - A search or a sort too expensive for a very large organization is stopped after a few seconds with
504.
Lists your organization’s links —never deleted ones— with their counters already consolidated. By default, newest first. Every filter is optional and they combine with each other.
status keeps its original meaning: active includes expired links, because expiring does not change the stored status. To separate current links from expired ones use state.
To walk through many links, paginate with `cursor`. Each response carries nextCursor while there are more: pass it in the next request, with the same filters, sort and order, and the page starts right after the last link of the previous one. page keeps working as always, but only up to link 10,000 (with perPage=100, up to page 100); beyond that it returns 400 and you continue with cursor, which has no cap.
`total` is exact up to 10,000. If more links match the filters, total comes as 10000 and totalIsExact as false: “more than 10,000”. hasMore always tells, without error, whether there is another page.
Query parameters
pagecursor.Default: 1
perPageDefault: 20
cursornextCursor of the previous response, as is. The page starts right after the last link of that response. It must go with the same sort and order; a cursor that is not from this organization or this order returns 400.searchh0b.co/a1b2c3d or https://h0b.co/a1b2c3d), it returns exactly that link, also if its domain no longer belongs to your organization (domainStatus: released).domaindomainStatus: released) are not included even if they have the same name: to find one, paste its short URL in search.stateactive (active and not expired), expired (active with its expiry already past: it no longer redirects), disabled or blocked (blocked by Hablame).activeexpireddisabledblockedstatusactive includes expired links. Kept for compatibility; prefer state.activedisabledblockedkindaliasgeneratedtrafficnone: links that never received a visit. some: links that received at least one.nonesomecreatedFromYYYY-MM-DD, Colombia time), inclusive.createdToYYYY-MM-DD, Colombia time), inclusive.sortlastClick and expires, links without that value go last in both directions.createdclickslastClickexpiresDefault: created
orderdescascDefault: desc
Responses
Page of links.
{
"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
}
}A filter carries a value that does not exist (the message says which one and what it accepts), a date that is not YYYY-MM-DD, a page beyond link 10,000 or a cursor that is not valid.
Invalid or missing credentials.
The API key does not have the URL shortener enabled (or it is turned off for your organization), the key cannot be used from the request network, or the organization is not active.
Request limit exceeded.
The query took too long and we stopped it. It happens with very large queries for organizations with many links: narrow it (fewer days, fewer sections, more filters). Repeating it as is does not help.
Possible errors
Codes this endpoint can return in error.code. The full detail lives in the catalog.
AUTH_REQUIREDNo Bearer token was sent, and every call requires one.401AUTH_INVALID_KEYThe API key is not recognized: wrong format, revoked or expired.403AUTH_SERVICE_NOT_ALLOWEDThe key is not allowed to use the service behind this endpoint.403AUTH_IP_NOT_ALLOWEDThe key only works from certain networks and your IP is not one of them.403ACCOUNT_NOT_ACTIVEYour organization is suspended or closed.400VALIDATION_INVALID_PARAMETERA parameter or a body field is not valid.429RATE_TPS_EXCEEDEDYou exceeded your organization quota for this endpoint.504INFRA_DB_QUERY_TIMEOUTAn internal query took too long and was cut off.