API Documentation
Integrate Links DNA into your applications with our RESTful API
Enterprise Feature: API access requires an Enterprise plan
API Reference
Getting Started
Base URL
https://yourdomain.com/api/v1/
Rate Limits
- Standard: 1,000 requests per hour
- Enterprise: 10,000 requests per hour
- Burst: Up to 50 requests per minute
Response Format
All API responses are in JSON format with the following structure:
{ "success": true, "data": {...}, "message": "Operation completed successfully", "timestamp": "2024-01-01T12:00:00Z" }
Authentication
API Key Authentication
Include your API key in the request headers:
Authorization: Bearer YOUR_API_KEY Content-Type: application/json
Getting Your API Key: Contact our enterprise team to receive your API credentials after upgrading to an Enterprise plan.
Error Responses
Error responses include standard HTTP status codes:
Status Code | Meaning | Description |
---|---|---|
401 | Unauthorized | Invalid or missing API key |
403 | Forbidden | Access denied for this resource |
429 | Rate Limited | Too many requests |
500 | Server Error | Internal server error |
API Endpoints
Links Management
/api/v1/links
Create a new tracked link
Request Body:
{ "original_url": "https://example.com", "name": "My Campaign Link", "custom_variables": { "campaign": "summer2024", "source": "email" } }
Response:
{ "success": true, "data": { "id": "abc123", "short_url": "https://yourdomain.com/abc123", "original_url": "https://example.com", "name": "My Campaign Link", "created_at": "2024-01-01T12:00:00Z", "total_clicks": 0 } }
/api/v1/links
Retrieve all your links with pagination
Query Parameters:
page
- Page number (default: 1)limit
- Results per page (default: 50, max: 100)search
- Search by link name
/api/v1/links/{id}/analytics
Get detailed analytics for a specific link
Query Parameters:
start_date
- Filter from date (YYYY-MM-DD)end_date
- Filter to date (YYYY-MM-DD)group_by
- Group results by: hour, day, week, month
Analytics & Reporting
/api/v1/analytics/dashboard
Get overview statistics for your account
Response:
{ "success": true, "data": { "total_links": 25, "total_clicks": 1547, "unique_visitors": 892, "top_countries": ["United States", "Canada", "United Kingdom"], "performance_trend": "up", "ai_insights": [ "Your links perform 40% better on weekdays", "Mobile users show higher engagement rates" ] } }
/api/v1/analytics/export
Export analytics data in CSV format
Request Body:
{ "link_ids": ["abc123", "def456"], "start_date": "2024-01-01", "end_date": "2024-01-31", "format": "csv" }
Code Examples
Python Example
import requests # Configuration API_KEY = "your_api_key_here" BASE_URL = "https://yourdomain.com/api/v1" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # Create a new link def create_link(original_url, name, variables=None): data = { "original_url": original_url, "name": name } if variables: data["custom_variables"] = variables response = requests.post( f"{BASE_URL}/links", json=data, headers=headers ) return response.json() # Get analytics def get_analytics(link_id): response = requests.get( f"{BASE_URL}/links/{link_id}/analytics", headers=headers ) return response.json() # Example usage link = create_link( "https://example.com", "My Campaign", {"campaign": "summer", "source": "email"} ) print(f"Created link: {link['data']['short_url']}") analytics = get_analytics(link['data']['id']) print(f"Total clicks: {analytics['data']['total_clicks']}")
JavaScript Example
// Configuration const API_KEY = 'your_api_key_here'; const BASE_URL = 'https://yourdomain.com/api/v1'; const headers = { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }; // Create a new link async function createLink(originalUrl, name, variables = {}) { const response = await fetch(`${BASE_URL}/links`, { method: 'POST', headers: headers, body: JSON.stringify({ original_url: originalUrl, name: name, custom_variables: variables }) }); return await response.json(); } // Get analytics async function getAnalytics(linkId) { const response = await fetch(`${BASE_URL}/links/${linkId}/analytics`, { headers: headers }); return await response.json(); } // Example usage (async () => { try { const link = await createLink( 'https://example.com', 'My Campaign', { campaign: 'summer', source: 'email' } ); console.log(`Created link: ${link.data.short_url}`); const analytics = await getAnalytics(link.data.id); console.log(`Total clicks: ${analytics.data.total_clicks}`); } catch (error) { console.error('API Error:', error); } })();
Webhooks
Real-time Event Notifications
Receive instant notifications when events occur on your links.
Available Events:
- link.clicked - A link was clicked
- link.created - A new link was created
- analytics.daily - Daily analytics summary
- insights.generated - New AI insights available
Webhook Payload Example:
{ "event": "link.clicked", "timestamp": "2024-01-01T12:00:00Z", "data": { "link_id": "abc123", "visitor_id": "visitor_xyz", "country": "United States", "device_type": "Mobile", "custom_variables": { "campaign": "summer", "source": "email" } } }
Setting Up Webhooks
Configure webhook endpoints through your Enterprise dashboard or contact our support team.
Security: All webhooks include a signature header for verification. Contact support for webhook signature validation details.
Need API Access?
Upgrade to Enterprise to unlock full API capabilities and dedicated support.