Redirects · redirect.index
GET/redirectredirect.index
List redirects
Returns the workspace redirects inside a data array, with the same filter[...] and sort support as short links.
- Base URL
- https://api.redirhub.com/v1
- Auth
- Bearer token
- Idempotent
- Yes
- Returns
- application/json
The request
Call GET /redirect with your bearer token. Narrow or order the result with the query parameters below.
# List redirects
curl "https://api.redirhub.com/v1/redirect" \
-H "Authorization: Bearer $REDIRHUB_TOKEN"Query parameters
| Parameter | Description |
|---|---|
| sortoptionalstring | Sort results by field. Prefix with - for descending order. Available sorts: id, created_at, updated_atid-idcreated_at-created_atupdated_at-updated_at |
| filteroptionalobject | Filter results by one or more fields. Available filters: id, host, tld, handler, destination, search, tags, traffic, dns_correct, created_after, created_before |
| filter[id]optionalstring | |
| filter[host]optionalstring | A hostname already connected to the workspace. See List hostnames. |
| filter[tld]optionalstring | |
| filter[handler]optionalstring | |
| filter[destination]optionalstring | Where matching traffic is sent. |
| filter[search]optionalstring | |
| filter[tags]optionalstring | Freeform labels. Filter on them with filter[tags]. |
| filter[traffic]optionalstring | |
| filter[dns_correct]optionalstring | |
| filter[created_after]optionalstring | |
| filter[created_before]optionalstring |
The response
A 200 carries the payload inside a data array — the same shape the list endpoints return, so one parser handles both.
{
"data": [
{
"id": "9f2a7c31-4b8e-4a02-9d1f-0c6b7e5a1d44",
"tld": "string",
"host": "go.acme.com",
"url": "https://go.acme.com/spring-sale",
"https": true,
"file": null,
"destination": "https://acme.com/campaigns/spring",
"destinations": [
"https://acme.com/campaigns/spring"
],
"destination_routing": "weighted",
"plugins": [
"analytics"
],
"type": "link",
"title": "Spring Sale 2026",
"description": "Landing page for the spring campaign",
"status": "301",
"forward_path": true,
"forward_query": true,
"utm": {
"source": "string",
"medium": "string",
"campaign": "string",
"term": "string",
"content": "string"
},
"monitor": "false",
"is_notify": false,
"is_switch_unbroken_destination": false,
"tags": [
"campaign",
"q2"
],
"created_by": "user@acme.com",
"created_via": "api",
"created_at": "2026-08-01T09:14:22Z",
"updated_at": "2026-08-01T09:14:22Z",
"expired_at": null
}
],
"meta": {
"cursor": {
"current": null,
"prev": "string",
"next": "string",
"count": 1
}
}
}Status codes
200
SuccessA cursor-paginated page of redirects. Follow
meta.cursor.next for the next page.401
UnauthenticatedUnauthenticated
429
Too many requestsToo many requests
What usually comes next
One call is rarely the whole job. These are the endpoints most integrations reach for around this one.
