Linklet API

Request formats, providers, job status, and errors.

The public API is available at https://api.linklet.workers.dev.

Quickstart

Create a key in the dashboard, then send it as a Bearer token. Never place your key in a URL or client-side app.

curl -X POST https://api.linklet.workers.dev/v1/generate \
  -H "Authorization: Bearer $LINKLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "sslip",
    "ip": "34.73.99.76",
    "amount": 5
  }'

A successful request returns 202 Accepted with a job ID and status URL.

Authentication

Every API request requires your key in the HTTP Authorization header.

Authorization: Bearer lkt_live_your_key

Keys are displayed once. Linklet stores only a cryptographic hash, so a lost key must be rotated.

Generate links

POSThttps://api.linklet.workers.dev/v1/generate

File-based request

FieldTypeDescription
providerstringThe provider name.
fileNamestringPlain .svg, .html, or supported .zip filename.
contentTypestringMIME type for the uploaded content.
contentBase64stringFile contents encoded as base64.
amountintegerNumber of links to generate.
{
  "provider": "cdn",
  "fileName": "lesson.svg",
  "contentType": "image/svg+xml",
  "contentBase64": "PHN2ZyB4bWxucz0uLi4+",
  "amount": 3
}

IP-domain request

sslip and envpm use an IPv4 address instead of a file.

{ "provider": "sslip", "ip": "34.73.99.76", "amount": 5 }

Check job status

GEThttps://api.linklet.workers.dev/v1/generate/{jobId}

Poll the returned statusUrl until status is complete or failed. Completed links appear in results.

{
  "id": "d8c79e7c-...",
  "provider": "sslip",
  "status": "complete",
  "requested": 5,
  "completed": 5,
  "results": [ ... ],
  "failures": []
}

Providers

ProviderMaximumInput
cdnQueue limitSVG / HTML
uploadcare1,000File
imagekit1,000File
surge30SVG / HTML / ZIP
cloudflare2,000SVG / HTML
freedns500SVG / HTML
padlet1SVG
gglscript1,000SVG / HTML
envpm1IPv4 + optional name
sslip5IPv4

Account and global queue limits may be lower during heavy traffic.

Link Drops

GEThttps://api.linklet.workers.dev/v1/drops/daily

GEThttps://api.linklet.workers.dev/v1/drops/hourly

Omit period for the latest, or use ?period=YYYY-MM-DD for daily and ?period=YYYY-MM-DD-HH for hourly drops. Hourly periods use Pacific time.

Errors and limits

400Invalid request body or options.
401Missing, invalid, or revoked key.
413Request body too large.
429Rate or queue limit reached.
502 / 503Generation service unavailable.

Rate-limit responses include Retry-After. Do not retry in a tight loop.