List Your URLs
List all URLs owned by the authenticated user.
Returns a paginated list of shortened URLs with support for filtering, sorting, and full-text search on aliases and destination URLs.
Authentication: Required.
API Key Scope: urls:manage, urls:read, or admin:all
Rate Limits: 60/min, 5,000/day
Pagination: Use page and pageSize query params. Response includes
hasNext boolean and total count.
Sorting: Sort by created_at, last_click, or total_clicks in
ascending or descending order.
Filtering: Pass a JSON-encoded filter parameter with fields like
status, createdAfter, createdBefore, passwordSet, maxClicksSet,
and search.
Authorizations
API key authentication. Pass your key as: Bearer spoo_<your_key>
Query Parameters
Page number (default: 1)
x >= 11
Items per page (default: 20, max: 100)
1 <= x <= 10020
Field to sort by
created_at, last_click, total_clicks Sort direction
ascending, asc, 1, descending, desc, -1 JSON string containing filter criteria for URLs. Format: {"field": value}
Available filter fields:
- status — Filter by URL status (
"ACTIVE"or"INACTIVE") - createdAfter — Filter URLs created after this date (ISO 8601 datetime or Unix timestamp)
- createdBefore — Filter URLs created before this date (ISO 8601 datetime or Unix timestamp)
- passwordSet — Filter by password protection (boolean:
true/false) - maxClicksSet — Filter by click limit presence (boolean:
true/false) - search — Search in alias or long_url (case-insensitive string)
Value formats:
- status: String —
"ACTIVE"or"INACTIVE"(case-sensitive) - createdAfter / createdBefore: ISO 8601 datetime string (e.g.,
"2024-01-01T00:00:00Z") or Unix timestamp (e.g.,1704067200) - passwordSet / maxClicksSet: Boolean —
trueorfalse - search: String — case-insensitive search term
Examples:
{"status": "ACTIVE"}— Only active URLs{"passwordSet": true}— Only password-protected URLs{"createdAfter": "2024-01-01T00:00:00Z"}— URLs created after Jan 1, 2024{"status": "ACTIVE", "maxClicksSet": true}— Active URLs with click limits{"search": "example"}— URLs containing "example" in alias or long_url{"createdAfter": "2024-01-01", "createdBefore": "2024-12-31", "status": "ACTIVE"}— Active URLs from 2024
"{\"status\":\"ACTIVE\"}"
Alias for filter parameter.
Response
Successful Response
Response body for GET /api/v1/urls.
Uses camelCase field names to match the existing Flask endpoint exactly. Field names are camelCase here (not snake_case + alias) because this is a response-only model — we build it explicitly in the route handler.

