Integrate Fetch into your applications with our robust, RESTful API. Designed to be simple yet powerful.
Welcome to the Fetch API documentation. Our API allows you to programmatically create short URLs, manage domains, and retrieve detailed analytics for your links.
The API is organized around REST. It uses predictable, resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes.
https://fetch.click/api/v1
All API endpoints are relative to this base URL.
The Fetch API uses Bearer Tokens to authenticate requests. You can view and manage your API keys in your dashboard settings.
Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.
Authentication to the API is performed via HTTP Bearer Auth. Provide your API key as the
bearer token value in the Authorization header.
Authorization: Bearer YOUR_API_KEY
Creates a new shortened URL for the provided destination URL.
| Parameter | Description |
|---|---|
|
url
string Required
|
The long destination URL you want to shorten. Must be a valid, fully-qualified URL including http:// or https://. |
|
notes
string Optional
|
Internal notes or tags to help identify this link in your dashboard. |
|
private
boolean Optional
|
If set to true, the click statistics for this link will remain private and hidden from public view. Default is false. |
{
"url": "https://example.com/very/long",
"notes": "Marketing campaign Q4",
"private": false
}
{
"success": true,
"data": {
"short_url": "https://fetch.click/abc123",
"watch_url": "https://fetch.click/watch/xyz",
"code": "abc123",
"created_at": "2026-01-27T20:00:00Z"
}
}
Creates a new dynamic Smart QR Code for a provided destination URL.
| Parameter | Description |
|---|---|
|
url
string Required
|
The long destination URL. Must be a valid, fully-qualified URL. |
|
name
string Required
|
The name/label for this Smart QR asset (e.g., "Main Entrance Sticker"). |
{
"url": "https://example.com/promo",
"name": "Summer Flyer #1"
}
Retrieves detailed click statistics and analytics for a specific shortened URL.
| Parameter | Description |
|---|---|
|
code
string Required
|
The unique alias code of the shortened URL (e.g., 'abc123'). |
{
"success": true,
"data": {
"code": "abc123",
"original_url": "https://example.com/very/long",
"clicks": 1234,
"created_at": "2026-01-27T20:00:00Z",
"analytics": {
"devices": { "Mobile": 850, "Desktop": 384 },
"browsers": { "Chrome": 600, "Safari": 400, "Firefox": 234 },
"countries": { "US": 500, "UK": 300, "CA": 434 }
}
}
}
To ensure system stability, the API enforces rate limits on requests. Exceeding these limits
will result in a 429 Too Many Requests response.
Rate limit status is returned in the HTTP headers of every API response:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 99
X-RateLimit-Reset: 1643299200
Fetch uses conventional HTTP response codes to indicate the success or failure of an API request.
| HTTP Status | Description |
|---|---|
|
200 - OK
|
Everything worked as expected. |
|
400 - Bad Request
|
The request was unacceptable, often due to missing a required parameter. |
|
401 - Unauthorized
|
No valid API key provided. |
|
403 - Forbidden
|
The API key doesn't have permissions to perform the request. |
|
404 - Not Found
|
The requested resource doesn't exist. |
|
429 - Too Many Requests
|
Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. |
|
500, 502, 503, 504 - Server Errors
|
Something went wrong on our end. |