API Integration – Dynamic Link Creation
This document describes the Dynamic Link Creation API, which allows you to create dynamic links programmatically. This API is commonly used for in-app sharing, automatic link generation, and marketing campaign integrations.
By using this API, you can generate fully configured dynamic links without accessing the dashboard.
Overview
The Dynamic Link Creation API enables you to:
- Automatically create dynamic links
- Apply platform-specific behaviors (iOS / Android)
- Configure deep linking and fallback behaviors
- Customize social preview content
- Track marketing performance using UTM parameters
This API is designed for backend systems, in-app sharing flows, and automated campaign pipelines.
Use Cases
- Creating customized links for each marketing campaign
- Direct user navigation to specific in-app content (deep linking)
- User acquisition path analysis and optimization
- Enhanced social sharing capabilities
Key Features
- Platform-specific detailed option settings (iOS, Android)
- App Store / Play Store or alternative URL redirect when the app is not installed
- Customized preview content (title, description, image) for social sharing
- Marketing campaign tracking through UTM parameters
- Per-project link management using API keys
Endpoint
Create Dynamic Link
POST
https://api.limelink.org/api/v1/core/link
Headers
| Header Name | Type | Required | Description |
|---|---|---|---|
| X-API-KEY | string | Yes | API key for project authentication |
| Content-Type | string | Yes | Must be application/json |
Request Parameters
Root Level Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| dynamic_link_suffix | string (max 50) | Yes | Unique identifier for the short URL path |
| dynamic_link_url | string (max 500) | Yes | Target URL for desktop or fallback |
| dynamic_link_name | string (max 100) | Yes | Link name for management and identification |
| project_id | string | Yes | Project ID the link belongs to |
| stats_flag | boolean | Optional | Enable analytics tracking |
apple_options (object)
| Name | Type | Required | Description |
|---|---|---|---|
| application_id | string (max 100) | Conditional | Application ID registered in the dashboard |
| request_uri | string | Optional | Deep link path inside the app |
| not_installed_options.custom_url | string (max 500) | Conditional | Redirect URL when the app is not installed |
not_installed_options.custom_urlis required whennot_installed_optionsis provided.
android_options (object)
| Name | Type | Required | Description |
|---|---|---|---|
| application_id | string (max 100) | Conditional | Application ID registered in the dashboard |
| request_uri | string | Optional | Deep link path inside the app |
| not_installed_options.custom_url | string (max 500) | Conditional | Redirect URL when the app is not installed |
not_installed_options.custom_urlis required whennot_installed_optionsis provided.
additional_options (object)
| Name | Type | Required | Description |
|---|---|---|---|
| preview_title | string (max 100) | Conditional | Social preview title |
| preview_description | string (max 200) | Conditional | Social preview description |
| preview_image_url | string (max 500) | Conditional | Social preview image URL |
| utm_source | string | Optional | UTM source parameter |
| utm_medium | string | Optional | UTM medium parameter |
| utm_campaign | string | Optional | UTM campaign parameter |
All preview fields are required when
additional_optionsis used.
Response
Success Response
{
"id": "string",
"dynamic_link_suffix": "string",
"dynamic_link_url": "string",
"dynamic_link_name": "string",
"apple_options": {},
"android_options": {},
"additional_options": {},
"project_id": "string",
"stats_flag": false,
"created_at": "string",
"updated_at": null
}
Example Request
curl -X POST \
'https://api.limelink.org/api/v1/core/link' \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: your_project_api_key_here' \
-d '{
"dynamic_link_suffix": "my-promo",
"dynamic_link_url": "https://example.com/product/123",
"dynamic_link_name": "My Product Promotion",
"apple_options": {
"application_id": "f8b2d4e1-9c7a-4f6e-b3d8-2a1e9c4f7b6d",
"not_installed_options": {
"custom_url": "https://apps.apple.com/app/id123456789"
},
"request_uri": "product/123"
},
"android_options": {
"application_id": "a3f7c9b2-6e4d-4a8c-9f1b-8d5e2c9a7f3b",
"not_installed_options": {
"custom_url": "https://play.google.com/store/apps/details?id=com.example.androidapp"
},
"request_uri": "product/123"
},
"additional_options": {
"preview_title": "Special Offer!",
"preview_description": "Get 20% off on our new product.",
"preview_image_url": "https://example.com/images/promo-preview.png",
"utm_source": "newsletter",
"utm_medium": "email",
"utm_campaign": "q4_promo"
},
"project_id": "project_abcdef123456",
"stats_flag": true
}'
Security Warning
⚠️ Important: API Key Security
Server-Side Only
- Do NOT expose your API key in client-side code (JavaScript, mobile apps, etc.)
- API keys should only be stored and used on your backend server
- Client applications should call your own server, which then calls the LimeLink API
Recommended Architecture
[Mobile App / Web Client] → [Your Backend Server] → [LimeLink API]
↑
API Key stored here
Why This Matters
If your API key is exposed in client-side code:
- Anyone can extract the key from your app or website
- Unauthorized users can create links under your project
- Your API quota may be exhausted by malicious actors
Disclaimer
LimeLink is not responsible for any damages, unauthorized access, or misuse resulting from API key exposure.
Users are solely responsible for:
- Securely storing and managing their API keys
- Implementing proper server-side architecture
- Any consequences arising from API key leakage or misuse
By using this API, you acknowledge and accept full responsibility for the security of your API credentials.
Notes
- This API is typically used for in-app sharing and automated link generation
- API access is project-based and secured via API keys
- Rate limiting and validation rules may apply
- More API endpoints may be added in future updates