Marejeo ya API

REST API
Jenga juu ya viungo vyako.

Thibitisha utambulisho kwa tokeni ya API, orodhesha na uunde viungo, soma ziara, na ujisajili kwa webhook.

URL ya msingi https://letl.ink/api/v1 HTTPS pekee

Mipango Growth Ultimate
Kwenye ukurasa huu

Kuanza

REST API inapatikana kwenye Growth na Ultimate. Maombi huenda kwa https://letl.ink/api/v1 kupitia HTTPS. Eneo la kazi lililo kwenye Free au Solo hupokea 403 plan_required kutoka /api/v1; endpoint ya MCP inadhibitiwa kando kwenye Ultimate.

  1. Fungua Miunganisho → REST API (wamiliki na wasimamizi wa eneo la kazi pekee).
  2. Tengeneza tokeni. Haiishi muda wake.
  3. Ihifadhi kama nenosiri. Tokeni moja inahudumia REST API, seva ya MCP na kila jukwaa la kiotomatiki lililounganishwa na eneo hili la kazi, kwa hivyo kuitengeneza upya kunazibatilisha zote kwa wakati mmoja.

Wanachama wanaweza kunakili tokeni iliyopo ikiwa imetengenezwa; wamiliki na wasimamizi pekee wanaweza kuibadilisha.

Uthibitishaji

Tuma tokeni kama X-API-KEY au kama Authorization: Bearer. Zote mbili zinakubalika kwenye /api/v1 na kwenye /mcp. Ombi lisilo na tokeni kabisa hurudisha 401 unauthenticated.

GET Mimi ni nani?
curl -H "X-API-KEY: YOUR_TOKEN" \
  https://letl.ink/api/v1/auth/me

Kichwa sawia: Authorization: Bearer YOUR_TOKEN

Kanuni

Haya yanatumika kwa kila endpoint iliyo hapa chini.

Bahasha ya jibu

Kila jibu lililofaulu ni kitu cha JSON chenye ufunguo data, na ufunguo meta pale kuna jambo la kusema kuhusu matokeo — ukurasa, kipindi cha tarehe kilichotumika, kama jiografia ilijumuishwa. Kila kushindwa ni kitu chenye ufunguo error kinachobeba code thabiti, message inayosomeka na binadamu, na wakati mwingine details. Fanya maamuzi kwa code, kamwe si kwa maandishi ya ujumbe.

Maumbo
// success
{ "data": { … }, "meta": { … } }

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

Kurasa

Endpoint za orodha zinakubali limit (1–200, chaguo-msingi 50) na offset. Kizuizi cha meta huripoti total, has_more na next_offset, hivyo unaweza kupitia kurasa bila kufanya hesabu: endelea kuita kwa offset = meta.next_offset hadi has_more iwe false.

Kupitia kila kiungo
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

Kupanga, kuchuja na kutafuta

GET /links inakubali sort (created_at, clicks, short_code, title, updated_at), direction (asc/desc), search (hulinganisha msimbo mfupi, kichwa na anwani lengwa), type, archived, favorite na domain. Thamani zisizojulikana hukataliwa kwa invalid_parameter pamoja na orodha ya zinazoruhusiwa, badala ya kupuuzwa kimya kimya.

Vipindi vya tarehe

start_date na end_date hutumia YYYY-MM-DD na zinajumuisha siku zote mbili. Kipindi hubanwa kwenye kikomo cha uhifadhi cha mpango wako — kuomba historia ya mwaka mzima kwa mpango wenye uhifadhi wa siku 30 hurudisha siku 30 zilizopo, na meta.date_range inakuonyesha kipindi kilichotumika kwa kweli.

Vikomo vya maombi

Maombi 600 kwa dakika kwa kila akaunti, kwa dirisha linalosogea. Kila jibu lina X-RateLimit-Limit, X-RateLimit-Remaining na X-RateLimit-Reset (muhuri wa muda wa Unix). Kuzidi kikomo hurudisha 429 rate_limited pamoja na kichwa Retry-After kwa sekunde. Subiri kulingana na Retry-After badala ya kujaribu tena mara moja.

Vichwa kwenye kila jibu
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 586
X-RateLimit-Reset: 1789000816

Matoleo ya API

Njia inabeba toleo. Kuongeza sehemu kwenye jibu au kigezo kipya cha hiari si badiliko linalovunja na kunaweza kutokea wakati wowote, kwa hivyo changanua kwa tahadhari na upuuze vitufe usivyovitambua. Chochote kitakachobadilisha au kuondoa sehemu iliyopo kitatolewa chini ya kiambishi kipya cha toleo.

Endpoint

Akaunti

GET /me Jaribio la muunganisho

Utambulisho, eneo la kazi, mpango na kila haki ambayo mpango huo unabeba. Njia rahisi zaidi ya kuthibitisha tokeni na kugundua kile akaunti inaruhusiwa kufanya kabla ya kujaribu.

GET cURL
curl -H "X-API-KEY: YOUR_TOKEN" \
  https://letl.ink/api/v1/me
Jibu 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

Kiasi cha kila kiwango kilichotumika mwezi huu wa malipo. Kitumie kumwonya mteja kabla hajafikia kikomo cha mibofyo inayofuatiliwa — baada ya hapo uelekezaji bado hufanya kazi, lakini mibofyo huacha kurekodiwa.

Jibu 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

Vikoa maalum vya eneo la kazi na kama kila kimoja kimekamilisha uthibitishaji wa DNS. Vikoa vilivyothibitishwa pekee ndivyo vinaweza kutumika kama sehemu ya domain wakati wa kuunda kiungo.

GET /integrations

Kila muunganisho ambao bidhaa inatoa, kama mpango wako unaujumuisha, kama eneo hili la kazi limeuunganisha, na jinsi uwasilishaji unavyoendelea — hali ya mwisho, hitilafu ya mwisho na idadi ya kushindwa mfululizo. Inafaa kwa kufuatilia maeneo mengi ya kazi.

Viungo

Takwimu

GET /analytics/summary

Namba kuu za eneo lote la kazi: mibofyo ya muda wote na ndani ya kipindi, wageni wa kipekee, skani za QR, siku ya kilele, na mgawanyo kwa saa ya siku na siku ya wiki. Hupokea days (chaguo-msingi 30, hubanwa kwenye uhifadhi wako).

Jibu 200 (kwa ufupi)
{
  "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

Idadi ya mibofyo ya kila siku, tayari kwa chati. Tuma link_id ili kuiwekea kiungo kimoja, na days kuweka kipindi. Siku zisizo na trafiki hurudishwa kama sifuri badala ya kuachwa, hivyo mfululizo huwa endelevu kila mara.

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

Mibofyo iliyopangwa kwa kipimo kimoja, pamoja na mgao wa kila safu katika jumla.

Vigezo vya hoja (query)

  • dimension string

    channel, referrer, device, browser, os, brand, variation au country. browser, os, brand na variation zinahitaji link_id.

    Inahitajika
  • link_id integer

    Weka kikomo kwa kiungo kimoja. Liache kwa eneo lote la kazi.

    Hiari
  • limit integer

    1–100. Chaguo-msingi ni 10.

    Hiari
Jibu 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 Kwa kurasa

Mtiririko ghafi wa ziara kwenye kila kiungo katika eneo la kazi, za karibuni kwanza. Hiki ndicho kibadala cha kisasa cha GET /visits: data ile ile, bahasha ya kawaida, na uwezo wa limit na offset.

Jibu 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 }
}

Webhook

GET /hooks

Endpoint za webhook zilizosajiliwa kwenye akaunti hii.

POST /hooks

Sajili endpoint ya HTTPS ili kupokea data ya JSON kwa kila mbofyo uliorekodiwa. Hadi 25 kwa kila akaunti. Uwasilishaji ulioshindwa hujaribiwa upya kiotomatiki.

Mwili wa JSON

  • target_url

    Lazima iwe https://.

    Inahitajika
  • event

    Chaguo-msingi ni link_visited, ambalo kwa sasa ndilo tukio pekee.

    Hiari
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}

Ondoa endpoint ya webhook. POST /hooks/subscribe na DELETE /hooks/unsubscribe/{id} bado vinapatikana kwa mtiririko wa REST Hook wa Zapier.

Ya zamani

GET /auth/me Ya zamani

Jaribio la awali la muunganisho: hurudisha user id yako, barua pepe na id/jina la eneo la kazi kama kitu bapa. GET /me hurudisha utambulisho huo huo pamoja na vikomo vya mpango wako na feature flags, na ndilo chaguo bora kwa msimbo mpya.

GET cURL
curl -H "X-API-KEY: YOUR_TOKEN" \
  https://letl.ink/api/v1/auth/me
Jibu 200
{
  "id": 1,
  "email": "[email protected]",
  "workspace_id": 12,
  "workspace_name": "My Workspace"
}
GET /visits Ya zamani

Ziara 50 za hivi karibuni katika eneo la kazi kama safu tupu ya JSON — bila bahasha — zikitumia majina ya sehemu visit_id, visit_time, link_shortcode na visitor_*. Hiki ndicho hatua ya "perform list" ya REST Hook ya Zapier husoma, kwa hivyo muundo wake umegandishwa. Tumia GET /events kwa kazi mpya.

POST /hooks/subscribe Zapier

Usajili wa REST Hook. Hupokea target_url na event ya hiari (chaguo-msingi link_visited) na hurudisha usajili ulioundwa moja kwa moja, bila bahasha. POST /hooks ni operesheni ile ile katika muundo wa kawaida.

DELETE /hooks/unsubscribe/{id} Zapier

Kujiondoa kwenye REST Hook, hurudisha {"success": true}. DELETE /hooks/{id} ndiyo sawa nayo katika muundo wa kawaida.

Hitilafu

  • 400 invalid_request

    Mwili haukuwa kitu cha JSON, au sehemu inayohitajika ilikosekana.

  • 400 invalid_parameter

    Kigezo cha hoja kilikuwa na muundo mbovu au nje ya seti inayoruhusiwa. details.parameter inataja kigezo chenye tatizo.

  • 401 unauthenticated

    Hakuna tokeni iliyotumwa. Ongeza X-API-KEY au Authorization: Bearer.

  • 401 invalid_token

    Tokeni hailingani na akaunti yoyote. Huenda imetengenezwa upya.

  • 403 plan_required

    Mpango wa akaunti haujumuishi endpoint au kipengele hiki. details.upgrade_url inaelekeza kwenye malipo.

  • 403 forbidden

    Umethibitishwa, lakini huruhusiwi — kwa mfano mwanachama anayejaribu kitendo cha mmiliki pekee.

  • 404 not_found

    Hakuna rasilimali kama hiyo katika eneo hili la kazi. Vitambulisho kutoka eneo jingine la kazi huripotiwa kama havikupatikana badala ya kukatazwa.

  • 409 conflict

    Ombi linagongana na hali ya sasa — kikomo cha webhook kimefikiwa, au akaunti bado haina eneo la kazi.

  • 422

    Hurudishwa na POST /links/bulk pale kila safu katika kundi imeshindwa. Kagua meta.errors.

  • 429 rate_limited

    Zaidi ya maombi 600 katika dakika iliyopita. Subiri sekunde za Retry-After.

Endpoint za zamani GET /visits na GET /links/{id}/visits hurudisha safu tupu ya JSON yenye majina yao ya sehemu na zimegandishwa kwa ajili ya miunganisho ya Zapier iliyokwisha jengwa juu yake. Msimbo mpya unapaswa kutumia GET /events na GET /links/{id}/events, zinazotumia bahasha ya kawaida na kuruhusu kurasa.

Bado una maswali?

Tuko hapa kusaidia. Wasiliana nasi na tutakujibu haraka iwezekanavyo.