API குறிப்பு

REST API
உங்கள் இணைப்புகளின் மீது உருவாக்குங்கள்.

API டோக்கன் மூலம் அங்கீகரிக்கவும், இணைப்புகளைப் பட்டியலிட்டு உருவாக்கவும், வருகைகளைப் படிக்கவும், வெப்ஹூக்குகளுக்குப் பதிவு செய்யவும்.

அடிப்படை URL https://letl.ink/api/v1 HTTPS மட்டும்

திட்டங்கள் Growth Ultimate
இந்தப் பக்கத்தில்

தொடங்குதல்

REST API Growth மற்றும் Ultimate-இல் கிடைக்கும். கோரிக்கைகள் HTTPS வழியாக https://letl.ink/api/v1-க்குச் செல்லும். Free அல்லது Solo-வில் உள்ள பணியிடம் /api/v1-இலிருந்து 403 plan_required பெறும்; MCP எண்ட்பாயிண்ட் Ultimate-இல் தனியாகக் கட்டுப்படுத்தப்படுகிறது.

  1. ஒருங்கிணைப்புகள் → REST API-ஐத் திறங்கள் (பணியிட உரிமையாளர்களும் நிர்வாகிகளும் மட்டும்).
  2. டோக்கனை உருவாக்கவும். அது காலாவதியாகாது.
  3. இதைக் கடவுச்சொல் போலப் பாதுகாப்பாக வையுங்கள். ஒரே டோக்கன் REST API, MCP சர்வர் மற்றும் இந்தப் பணியிடத்துடன் இணைக்கப்பட்ட ஒவ்வொரு தானியங்கித் தளத்துக்கும் சேவை செய்கிறது, எனவே அதை மீண்டும் உருவாக்கினால் அவை அனைத்தும் ஒரே நேரத்தில் செல்லாததாகிவிடும்.

டோக்கன் உருவாக்கப்பட்டிருந்தால் உறுப்பினர்கள் அதை நகலெடுக்கலாம்; உரிமையாளர்களும் நிர்வாகிகளும் மட்டுமே அதை மாற்ற முடியும்.

அங்கீகாரம்

டோக்கனை X-API-KEY ஆக அல்லது Authorization: Bearer ஆக அனுப்புங்கள். /api/v1 மற்றும் /mcp இரண்டிலும் இரண்டும் ஏற்கப்படும். டோக்கனே இல்லாத கோரிக்கை 401 unauthenticated-ஐத் திருப்பி அனுப்பும்.

GET நான் யார்?
curl -H "X-API-KEY: YOUR_TOKEN" \
  https://letl.ink/api/v1/auth/me

சமமான header: Authorization: Bearer YOUR_TOKEN

மரபுகள்

இவை கீழே உள்ள ஒவ்வொரு எண்ட்பாயிண்டுக்கும் பொருந்தும்.

பதில் உறை

ஒவ்வொரு வெற்றிகரமான பதிலும் data விசை கொண்ட JSON பொருள்; முடிவைப் பற்றிச் சொல்ல ஏதாவது இருந்தால் — பக்கமாக்கல், தீர்மானிக்கப்பட்ட தேதிக் காலவரம்பு, புவியியல் சேர்க்கப்பட்டதா — meta விசையும் இருக்கும். ஒவ்வொரு தோல்வியும் நிலையான code, மனிதர் படிக்கக்கூடிய message, சில நேரங்களில் details கொண்ட error விசையுடன் கூடிய பொருள். செய்தி உரையை அல்ல, எப்போதும் code-ஐ வைத்தே கிளைபிரியுங்கள்.

வடிவங்கள்
// success
{ "data": { … }, "meta": { … } }

// failure
{ "error": { "code": "invalid_parameter",
             "message": "sort must be one of: created_at, clicks.",
             "details": { "parameter": "sort" } } }

பக்கமாக்கல்

பட்டியல் எண்ட்பாயிண்ட்கள் limit (1–200, இயல்புநிலை 50) மற்றும் offset-ஐ ஏற்கின்றன. meta பகுதி total, has_more மற்றும் next_offset-ஐத் தெரிவிக்கிறது, எனவே கணக்கிடாமலேயே பக்கம் பக்கமாகப் பெறலாம்: has_more false ஆகும் வரை offset = meta.next_offset உடன் அழைத்துக்கொண்டே இருங்கள்.

ஒவ்வொரு இணைப்பையும் பக்கம் பக்கமாகப் பெறுதல்
offset=0
while [ "$offset" != "null" ]; do
  page=$(curl -s -H "X-API-KEY: $TOKEN" \
    "https://letl.ink/api/v1/links?limit=200&offset=$offset")
  echo "$page" | jq -c '.data[]'
  offset=$(echo "$page" | jq -r '.meta.next_offset')
done

வரிசைப்படுத்தல், வடிகட்டுதல் மற்றும் தேடல்

GET /links இவற்றை ஏற்கிறது: sort (created_at, clicks, short_code, title, updated_at), direction (asc/desc), search (சுருக்கக் குறியீடு, தலைப்பு மற்றும் இலக்கில் பொருத்தும்), type, archived, favorite மற்றும் domain. தெரியாத மதிப்புகள் அமைதியாகப் புறக்கணிக்கப்படாமல், invalid_parameter மற்றும் அனுமதிக்கப்பட்டவற்றின் பட்டியலுடன் நிராகரிக்கப்படும்.

தேதிக் காலவரம்புகள்

start_date மற்றும் end_date YYYY-MM-DD வடிவத்தைப் பயன்படுத்துகின்றன, இரு நாட்களும் உட்பட. காலவரம்பு உங்கள் திட்டத்தின் தக்கவைப்பு வரம்புக்குள் சுருக்கப்படும் — 30 நாள் தக்கவைப்புத் திட்டத்தில் ஒரு ஆண்டு வரலாற்றைக் கேட்டால் அதனிடம் உள்ள 30 நாட்களே கிடைக்கும்; உண்மையில் பயன்படுத்தப்பட்ட காலவரம்பை meta.date_range சொல்லும்.

கோரிக்கை வரம்புகள்

ஒரு கணக்குக்கு நிமிடத்துக்கு 600 கோரிக்கைகள், நகரும் காலவரம்பில். ஒவ்வொரு பதிலிலும் X-RateLimit-Limit, X-RateLimit-Remaining மற்றும் X-RateLimit-Reset (Unix நேரமுத்திரை) இருக்கும். வரம்பைத் தாண்டினால் வினாடிகளில் Retry-After header உடன் 429 rate_limited திரும்பும். உடனே மீண்டும் முயலாமல், Retry-After வரை காத்திருங்கள்.

ஒவ்வொரு பதிலிலும் உள்ள headers
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 586
X-RateLimit-Reset: 1789000816

பதிப்பாக்கம்

பாதையில் பதிப்பு உள்ளது. பதிலில் ஒரு புலத்தைச் சேர்ப்பதோ புதிய விருப்ப அளவுருவைச் சேர்ப்பதோ உடைக்கும் மாற்றம் அல்ல, அது எப்போது வேண்டுமானாலும் நடக்கலாம், எனவே கவனமாகப் பகுத்து, அடையாளம் தெரியாத விசைகளைப் புறக்கணியுங்கள். ஏற்கெனவே உள்ள புலத்தை மாற்றும் அல்லது நீக்கும் எதுவும் புதிய பதிப்பு முன்னொட்டின் கீழ் வெளியிடப்படும்.

எண்ட்பாயிண்ட்கள்

கணக்கு

GET /me இணைப்புச் சோதனை

அடையாளம், பணியிடம், திட்டம் மற்றும் அந்தத் திட்டத்தின் ஒவ்வொரு உரிமையும். டோக்கனைச் சரிபார்க்கவும், முயலும் முன் கணக்கு என்ன செய்ய அனுமதிக்கப்பட்டுள்ளது என்பதை அறியவும் மிக எளிய வழி.

GET cURL
curl -H "X-API-KEY: YOUR_TOKEN" \
  https://letl.ink/api/v1/me
பதில் 200
{
  "data": {
    "user": { "id": 1, "email": "[email protected]", "name": "You" },
    "workspace": { "id": 12, "name": "My Workspace", "block_bots": true },
    "plan": {
      "id": "growth",
      "name": "Growth",
      "limits": {
        "links": 200,
        "monthly_clicks": 100000,
        "custom_domains": 3,
        "qr_codes": 30,
        "retention_days": 365
      },
      "features": {
        "api": true,
        "webhooks": true,
        "integrations": true,
        "ai_access": false,
        "geo_analytics": false,
        "smart_link_types": true
      }
    },
    "base_domain": "letl.ink"
  }
}
GET /usage

இந்த பில்லிங் மாதத்தில் ஒவ்வொரு ஒதுக்கீட்டிலும் எவ்வளவு பயன்படுத்தப்பட்டது. கண்காணிக்கப்படும் கிளிக் வரம்பை அடையும் முன் வாடிக்கையாளரை எச்சரிக்க இதைப் பயன்படுத்துங்கள் — அதைத் தாண்டினால் திசைதிருப்பல் செயல்படும், ஆனால் கிளிக்குகள் பதிவாவது நின்றுவிடும்.

பதில் 200
{
  "data": {
    "links": { "used": 42, "limit": 200, "remaining": 158, "percent_used": 21.0 },
    "clicks_this_month": { "used": 8140, "limit": 100000, "remaining": 91860, "percent_used": 8.1 },
    "custom_domains": { "used": 1, "limit": 3, "remaining": 2, "percent_used": 33.3 },
    "qr_codes": { "used": 4, "limit": 30, "remaining": 26, "percent_used": 13.3 }
  },
  "meta": { "plan": "growth", "period": "2026-09" }
}
GET /domains

பணியிடத்தில் உள்ள தனிப்பயன் டொமைன்கள், ஒவ்வொன்றும் DNS சரிபார்ப்பை முடித்ததா என்பதுடன். சரிபார்க்கப்பட்ட டொமைன்களை மட்டுமே இணைப்பை உருவாக்கும்போது domain புலமாகப் பயன்படுத்தலாம்.

GET /integrations

தயாரிப்பு வழங்கும் ஒவ்வொரு ஒருங்கிணைப்பும், உங்கள் திட்டத்தில் அது உள்ளதா, இந்தப் பணியிடம் அதை இணைத்துள்ளதா, டெலிவரி எப்படி நடக்கிறது — கடைசி நிலை, கடைசிப் பிழை மற்றும் தொடர்ச்சியான தோல்வி எண்ணிக்கை. பல பணியிடங்களைக் கண்காணிக்கப் பயனுள்ளது.

இணைப்புகள்

பகுப்பாய்வு

GET /analytics/summary

முழுப் பணியிடத்துக்குமான முக்கிய எண்கள்: எல்லா நேரமும் மற்றும் காலத்துக்குள் உள்ள கிளிக்குகள், தனித்துவப் பார்வையாளர்கள், QR ஸ்கேன்கள், உச்ச நாள், மற்றும் நாளின் மணி நேர, வாரநாள் பரவல்கள். days-ஐ ஏற்கிறது (இயல்புநிலை 30, உங்கள் தக்கவைப்புக்குள் கட்டுப்படுத்தப்படும்).

பதில் 200 (சுருக்கமாக)
{
  "data": {
    "window_days": 30,
    "clicks": {
      "total": 24592, "window": 8140, "last_7_days": 2103,
      "daily_average": 271,
      "peak_day": { "date": "Sep 02", "clicks": 612 }
    },
    "visitors": { "unique_total": 18204, "unique_window": 6021 },
    "qr": { "scans_total": 940, "scans_window": 310 },
    "timing": {
      "by_hour": [12, 4, 2, …],
      "by_weekday": [1420, 1610, 1585, 1490, 1310, 480, 245],
      "peak_hour": { "peakHour": 14, "peakValue": 812, "label": "14:00–14:59" },
      "peak_weekday": { "peakDay": 1, "peakValue": 1610, "label": "Tuesday" }
    },
    "links": { "active": 42, "limit": 200 }
  },
  "meta": { "plan": "growth", "geo_included": true, "retention_days": 365 }
}
GET /analytics/timeseries

வரைபடத்துக்குத் தயாரான தினசரிக் கிளிக் எண்ணிக்கைகள். ஒரு இணைப்புக்கு மட்டுப்படுத்த link_id-ஐயும், காலவரம்பை அமைக்க days-ஐயும் அனுப்பவும். ட்ராஃபிக் இல்லாத நாட்கள் விடுபடாமல் பூஜ்ஜியமாகத் திருப்பப்படும், எனவே தொடர் எப்போதும் இடைவெளியின்றி இருக்கும்.

பதில் 200
{
  "data": [
    { "date": "Sep 04", "clicks": 22 },
    { "date": "Sep 05", "clicks": 11 }
  ],
  "meta": { "window_days": 7, "total": 33, "link_id": null }
}
GET /analytics/breakdown

ஒரு பரிமாணத்தின்படி குழுவாக்கப்பட்ட கிளிக்குகள், ஒவ்வொரு வரிசையின் மொத்தப் பங்குடன்.

Query அளவுருக்கள்

  • dimension string

    channel, referrer, device, browser, os, brand, variation அல்லது country. browser, os, brand மற்றும் variation-க்கு link_id தேவை.

    தேவை
  • link_id integer

    ஒரு இணைப்புக்கு மட்டும் வரம்பிடுங்கள். முழுப் பணியிடத்துக்கும் இதை விட்டுவிடுங்கள்.

    விருப்பத்தேர்வு
  • limit integer

    1–100. இயல்புநிலை 10.

    விருப்பத்தேர்வு
பதில் 200
{
  "data": [
    { "label": "Search", "value": 215, "share": 33.1 },
    { "label": "Social", "value": 201, "share": 30.9 },
    { "label": "Direct / none", "value": 142, "share": 21.8 }
  ],
  "meta": { "dimension": "channel", "link_id": 49, "total": 650 }
}
GET /events பக்கங்களாகப் பிரிக்கப்பட்டது

பணியிடத்தின் எல்லா இணைப்புகளிலும் உள்ள மூல வருகை ஊட்டம், புதியவை முதலில். இது GET /visits-க்கான நவீன மாற்று: அதே தரவு, நிலையான உறை, limit மற்றும் offset ஆதரவு.

பதில் 200
{
  "data": [
    {
      "id": 2691,
      "link_id": 49,
      "short_code": "spring",
      "occurred_at": "2026-09-10T22:45:33+00:00",
      "ip_address": "203.0.113.7",
      "referrer": "https://twitter.com/",
      "browser": "Chrome",
      "os": "iOS",
      "device_type": "mobile",
      "device_brand": "Apple",
      "country": "US",
      "variation": "control"
    }
  ],
  "meta": { "limit": 50, "returned": 50, "geo_included": true }
}

வெப்ஹூக்குகள்

GET /hooks

இந்தக் கணக்கில் பதிவுசெய்யப்பட்ட வெப்ஹூக் எண்ட்பாயிண்ட்கள்.

POST /hooks

பதிவுசெய்யப்படும் ஒவ்வொரு கிளிக்கிலும் JSON பேலோடைப் பெற HTTPS எண்ட்பாயிண்டைப் பதிவுசெய்யுங்கள். ஒரு கணக்குக்கு 25 வரை. தோல்வியடைந்த டெலிவரிகள் தானாக மீண்டும் முயற்சிக்கப்படும்.

JSON body

  • target_url

    https:// ஆக இருக்க வேண்டும்.

    தேவை
  • event

    இயல்புநிலை link_visited, இதுவே தற்போதுள்ள ஒரே நிகழ்வு.

    விருப்பத்தேர்வு
POST cURL
curl -X POST https://letl.ink/api/v1/hooks \
  -H "X-API-KEY: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"target_url": "https://example.com/hooks/clicks"}'
DELETE /hooks/{id}

ஒரு வெப்ஹூக் எண்ட்பாயிண்டை அகற்றுதல். Zapier-இன் REST Hook ஓட்டத்துக்கு POST /hooks/subscribe மற்றும் DELETE /hooks/unsubscribe/{id} தொடர்ந்து கிடைக்கும்.

பழைய முறை

GET /auth/me பழைய முறை

அசல் இணைப்புச் சோதனை: உங்கள் பயனர் ID, மின்னஞ்சல் மற்றும் பணியிட ID/பெயரைத் தட்டையான பொருளாகத் திருப்பி அனுப்புகிறது. GET /me அதே அடையாளத்துடன் உங்கள் திட்ட வரம்புகளையும் அம்சக் கொடிகளையும் திருப்பி அனுப்புகிறது, புதிய குறியீட்டுக்கு அதுவே சிறந்த தேர்வு.

GET cURL
curl -H "X-API-KEY: YOUR_TOKEN" \
  https://letl.ink/api/v1/auth/me
பதில் 200
{
  "id": 1,
  "email": "[email protected]",
  "workspace_id": 12,
  "workspace_name": "My Workspace"
}
GET /visits பழைய முறை

பணியிடம் முழுவதும் சமீபத்திய 50 வருகைகள், visit_id, visit_time, link_shortcode மற்றும் visitor_* புலப் பெயர்களுடன் வெறும் JSON அணியாக — உறை இல்லாமல். Zapier-இன் REST Hook "perform list" படி இதைத்தான் படிக்கிறது, எனவே இதன் வடிவம் நிலையாக்கப்பட்டுள்ளது. புதிய பணிகளுக்கு GET /events-ஐப் பயன்படுத்துங்கள்.

POST /hooks/subscribe Zapier

REST Hook சந்தா. target_url மற்றும் விருப்பமான event-ஐ (இயல்புநிலை link_visited) ஏற்று, உருவாக்கப்பட்ட சந்தாவை உறை இல்லாமல் நேரடியாகத் திருப்பி அனுப்புகிறது. POST /hooks நிலையான வடிவில் அதே செயல்பாடு.

DELETE /hooks/unsubscribe/{id} Zapier

REST Hook சந்தா நீக்கம், {"success": true}-ஐத் திருப்பி அனுப்புகிறது. DELETE /hooks/{id} நிலையான வடிவில் இதற்குச் சமமானது.

பிழைகள்

  • 400 invalid_request

    உடல் JSON பொருளாக இல்லை, அல்லது தேவையான புலம் விடுபட்டிருந்தது.

  • 400 invalid_parameter

    ஒரு வினவல் அளவுரு தவறான வடிவில் அல்லது அனுமதிக்கப்பட்ட தொகுப்புக்கு வெளியே இருந்தது. details.parameter அதைக் குறிப்பிடும்.

  • 401 unauthenticated

    டோக்கன் எதுவும் அனுப்பப்படவில்லை. X-API-KEY அல்லது Authorization: Bearer-ஐச் சேருங்கள்.

  • 401 invalid_token

    டோக்கன் எந்தக் கணக்குடனும் பொருந்தவில்லை. அது மீண்டும் உருவாக்கப்பட்டிருக்கலாம்.

  • 403 plan_required

    கணக்கின் திட்டத்தில் இந்த எண்ட்பாயிண்ட் அல்லது அம்சம் இல்லை. details.upgrade_url பில்லிங்கைச் சுட்டுகிறது.

  • 403 forbidden

    அங்கீகரிக்கப்பட்டது, ஆனால் அனுமதி இல்லை — எ.கா. உரிமையாளருக்கு மட்டுமான செயலை ஒரு உறுப்பினர் முயல்வது.

  • 404 not_found

    இந்தப் பணியிடத்தில் அத்தகைய வளம் இல்லை. வேறொரு பணியிடத்தின் id-கள் தடைசெய்யப்பட்டவை எனக் காட்டப்படாமல், கிடைக்கவில்லை எனவே தெரிவிக்கப்படும்.

  • 409 conflict

    கோரிக்கை தற்போதைய நிலையுடன் முரண்படுகிறது — வெப்ஹூக் வரம்பு எட்டப்பட்டது, அல்லது கணக்குக்கு இன்னும் பணியிடம் இல்லை.

  • 422

    தொகுப்பில் உள்ள ஒவ்வொரு வரிசையும் தோல்வியடைந்தால் POST /links/bulk இதைத் திருப்பி அனுப்பும். meta.errors-ஐப் பாருங்கள்.

  • 429 rate_limited

    கடந்த நிமிடத்தில் 600-க்கும் மேற்பட்ட கோரிக்கைகள். Retry-After விநாடிகள் காத்திருங்கள்.

பழைய GET /visits மற்றும் GET /links/{id}/visits எண்ட்பாயிண்ட்கள் தங்களுக்கே உரிய புலப் பெயர்களுடன் வெறும் JSON அணியைத் திருப்பி அனுப்புகின்றன, அவற்றின் மீது ஏற்கெனவே கட்டமைக்கப்பட்ட Zapier ஒருங்கிணைப்புகளுக்காக நிலையாக்கப்பட்டுள்ளன. புதிய குறியீடு GET /events மற்றும் GET /links/{id}/events-ஐப் பயன்படுத்த வேண்டும், அவை நிலையான உறையைப் பயன்படுத்துகின்றன, பக்கமாக்கலை ஆதரிக்கின்றன.

இன்னும் கேள்விகள் உள்ளனவா?

உதவ நாங்கள் இருக்கிறோம். எங்களைத் தொடர்புகொள்ளுங்கள், முடிந்தவரை விரைவில் பதிலளிப்போம்.