API Documentation
Build on Europe's fastest URL infrastructure. RESTful JSON API with sub-30ms redirects, zero-cookie analytics, and 100% EU data residency — enforceable by contract.
Authentication
All API requests require an API key passed via the Authorization header. API keys are scoped per project and can be rotated at any time.
curl -X GET "https://api.trckl.eu/v1/links" \
-H "Authorization: Bearer trckl_sk_live_your_api_key" \
-H "Content-Type: application/json"
💡 All API traffic is encrypted end-to-end and never leaves EU infrastructure.
Endpoints
/v1/links
Create a short link
Creates a new short link. The destination URL is validated and the short code is generated automatically or can be specified as a custom alias.
Request
curl -X POST "https://api.trckl.eu/v1/links" \
-H "Authorization: Bearer trckl_sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/my-long-page",
"alias": "my-link",
"domain": "trckl.eu",
"tags": ["campaign-q2", "newsletter"]
}'
Response 201
{
"id": "lnk_eu_a1b2c3d4",
"short_url": "https://trckl.eu/my-link",
"destination": "https://example.com/my-long-page",
"created_at": "2026-04-08T10:30:00Z",
"clicks": 0,
"tags": ["campaign-q2", "newsletter"],
"data_residency": "EU"
}
/v1/links/{link_id}
Retrieve a link
Retrieves the details of an existing short link, including click count, creation date, and tags.
/v1/links
List all links
Returns a paginated list of all short links in your project. Supports filtering by tag, domain, and date range.
/v1/links/{link_id}
Update a link
Updates the destination URL, tags, or routing rules of an existing short link. The short code remains unchanged.
/v1/links/{link_id}
Delete a link
Permanently deletes a short link. All analytics data associated with this link is also deleted within 24 hours, as required by GDPR data minimization principles.
/v1/links/{link_id}/analytics
Link analytics
Returns privacy-safe analytics for a link: click count, geographic distribution (country-level only), device types, and referrer domains. No PII is ever collected or returned.
Response 200
{
"link_id": "lnk_eu_a1b2c3d4",
"period": "30d",
"total_clicks": 1247,
"countries": { "DE": 412, "FR": 298, "IT": 187, "NL": 134 },
"devices": { "desktop": 723, "mobile": 489, "tablet": 35 },
"referrers": { "linkedin.com": 342, "direct": 298 },
"data_residency": "EU",
"pii_collected": false
}
SDK Examples
import { Trckl } from '@trckl/sdk';
const trckl = new Trckl({
apiKey: 'trckl_sk_live_...'
});
const link = await trckl.links.create({
url: 'https://example.com',
tags: ['newsletter']
});
console.log(link.short_url);
// → https://trckl.eu/abc123
from trckl import Trckl
client = Trckl(
api_key="trckl_sk_live_..."
)
link = client.links.create(
url="https://example.com",
tags=["newsletter"]
)
print(link.short_url)
# → https://trckl.eu/abc123
Rate Limits & Data Residency
Rate Limits
Free: 60 requests/minute
Pro: 600 requests/minute
Enterprise: Custom
Rate limit headers are included in every response: X-RateLimit-Remaining
Data Residency
All API traffic is routed through EU-only infrastructure.
Every response includes a X-Data-Residency: EU header confirming data location.
No API request ever touches infrastructure outside the European Union.
Ready to build?
Join the private beta to get your API key and start creating GDPR-native short links in minutes. Full SDK documentation and onboarding guide included.
rocket_launch Get API Access →