← Documentation

API reference

Every endpoint this installation serves, generated from the routes themselves.

Authenticate with Authorization: Bearer <api key> or a signed-in session cookie. Create keys in the dashboard under Integrations & API.

Domains

GET /api/domains — List domains
curl -X GET 'https://shortfreeurl.com/api/domains' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains — Create a domain

Body fields: mode, subdomain, base, hostname, unicodeHostname

curl -X POST 'https://shortfreeurl.com/api/domains' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"mode":"…","subdomain":"…","base":"…","hostname":"…"}'
DELETE /api/domains/:id — Delete domains by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/domains/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/domains/:id — Get domain details by ID

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/domains/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains/:id/certificate — Custom SSL certificate upload

Path parameters: id

Body fields: certificate, privateKey

curl -X POST 'https://shortfreeurl.com/api/domains/:id/certificate' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"certificate":"…","privateKey":"…"}'
DELETE /api/domains/:id/certificate — Remove the uploaded SSL certificate (the domain returns to its automatic certificate)

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/domains/:id/certificate' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains/:id/delete-old-links — Create or update domains by ID delete old links

Path parameters: id

Body fields: before, preview

curl -X POST 'https://shortfreeurl.com/api/domains/:id/delete-old-links' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"before":"…","preview":"…"}'
POST /api/domains/:id/delete-statistics — Danger zone

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/domains/:id/delete-statistics' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains/:id/favorite — Create or update domains by ID favorite

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/domains/:id/favorite' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains/:id/settings — Update domain settings

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/domains/:id/settings' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains/:id/signing-key — Signature key

Path parameters: id

Body fields: action

curl -X POST 'https://shortfreeurl.com/api/domains/:id/signing-key' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"action":"…"}'
POST /api/domains/:id/transfer — Create or update domains by ID transfer

Path parameters: id

Body fields: email

curl -X POST 'https://shortfreeurl.com/api/domains/:id/transfer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…"}'
POST /api/domains/:id/verify — DNS refresh / verification

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/domains/:id/verify' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/domains/:id/webhook/log — Get domains by ID webhook log

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/domains/:id/webhook/log' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains/:id/webhook/test — Webhooks: test + delivery log

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/domains/:id/webhook/test' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains/checkout — Create or update domains checkout

Body fields: quoteId, gateway, registrant, consent

curl -X POST 'https://shortfreeurl.com/api/domains/checkout' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"quoteId":"…","gateway":"…","registrant":"…","consent":"…"}'
POST /api/domains/orders/:id/verify — Create or update domains orders by ID verify

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/domains/orders/:id/verify' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/domains/search — Domain purchase search (registrar integration point)

Query parameters: q

curl -X GET 'https://shortfreeurl.com/api/domains/search' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/domains/settings/:id — Update domain settings (alias)

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/domains/settings/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/domains/shared — Shared domains offered by the operator
curl -X GET 'https://shortfreeurl.com/api/domains/shared' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/domains/shared/check — Is a free subdomain available on a shared domain?

Query parameters: subdomain, base

curl -X GET 'https://shortfreeurl.com/api/domains/shared/check' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"

Folders

GET /api/folders — Folders
curl -X GET 'https://shortfreeurl.com/api/folders' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/folders — Create or update folders

Body fields: name, color, icon, defaults

curl -X POST 'https://shortfreeurl.com/api/folders' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"…","color":"…","icon":"…","defaults":"…"}'
DELETE /api/folders/:id — Delete folders by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/folders/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/folders/:id — Create or update folders by ID

Path parameters: id

Body fields: defaults

curl -X POST 'https://shortfreeurl.com/api/folders/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"defaults":"…"}'

Tags

GET /api/tags — Tag list for filters / autocomplete
curl -X GET 'https://shortfreeurl.com/api/tags' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"

Bundles & posts

GET /api/bundles — Get bundles
curl -X GET 'https://shortfreeurl.com/api/bundles' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/bundles — Create or update bundles

Body fields: domainId, heading, items, description, logo, background, theme, socials, path

curl -X POST 'https://shortfreeurl.com/api/bundles' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domainId":"…","heading":"…","items":"…","description":"…"}'
DELETE /api/bundles/:id — Delete bundles by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/bundles/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/bundles/:id — Get bundles by ID

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/bundles/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/bundles/:id — Create or update bundles by ID

Path parameters: id

Body fields: theme, socials, items, heading

curl -X POST 'https://shortfreeurl.com/api/bundles/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"theme":"…","socials":"…","items":"…","heading":"…"}'
GET /api/posts — Get posts
curl -X GET 'https://shortfreeurl.com/api/posts' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/posts — Create or update posts

Body fields: domainId, title, slug, cover, body, tags, seoTitle, seoDescription, noindex, status, publishAt

curl -X POST 'https://shortfreeurl.com/api/posts' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domainId":"…","title":"…","slug":"…","cover":"…"}'
DELETE /api/posts/:id — Delete posts by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/posts/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/posts/:id — Get posts by ID

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/posts/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/posts/:id — Create or update posts by ID

Path parameters: id

Body fields: slug, tags, seoTitle, seoDescription, noindex, publishAt

curl -X POST 'https://shortfreeurl.com/api/posts/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"slug":"…","tags":"…","seoTitle":"…","seoDescription":"…"}'

Bulk operations

GET /api/bulk/export.csv — The Bulk Edit layout as a CSV, for editing offline.

Query parameters: domainId

curl -X GET 'https://shortfreeurl.com/api/bulk/export.csv' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/bulk/import — Run the import

Body fields: domainId, text, rows, mapping

curl -X POST 'https://shortfreeurl.com/api/bulk/import' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domainId":"…","text":"…","rows":"…","mapping":"…"}'
GET /api/bulk/jobs — Get bulk jobs
curl -X GET 'https://shortfreeurl.com/api/bulk/jobs' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/bulk/jobs/:id/errors.csv — Get bulk jobs by ID errors.csv

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/bulk/jobs/:id/errors.csv' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/bulk/migration/bitly — Bitly migration
curl -X GET 'https://shortfreeurl.com/api/bulk/migration/bitly' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/bulk/migration/bitly — Create or update bulk migration bitly

Body fields: sourceDomain, domainId, enabled

curl -X POST 'https://shortfreeurl.com/api/bulk/migration/bitly' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"sourceDomain":"…","domainId":"…","enabled":"…"}'
POST /api/bulk/preview — Preview an uploaded file (column mapping UI)

Body fields: text

curl -X POST 'https://shortfreeurl.com/api/bulk/preview' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…"}'
GET /api/bulk/sheet — Bulk sheets — in-app grid (v2) load & apply

Query parameters: domainId, mode

curl -X GET 'https://shortfreeurl.com/api/bulk/sheet' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/bulk/sheet/apply — Create or update bulk sheet apply

Body fields: domainId, rows

curl -X POST 'https://shortfreeurl.com/api/bulk/sheet/apply' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domainId":"…","rows":"…"}'
GET /api/bulk/sheet/google — Google-Sheets-backed modes (v1) — returns the sheet contract

Query parameters: mode

curl -X GET 'https://shortfreeurl.com/api/bulk/sheet/google' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/bulk/template.csv — Get bulk template.csv

Query parameters: kind

curl -X GET 'https://shortfreeurl.com/api/bulk/template.csv' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/bulk/templates — Templates & column metadata
curl -X GET 'https://shortfreeurl.com/api/bulk/templates' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"

QR codes

POST /api/qr/ai — AI QR artwork

Body fields: object, prompt, style, strength, data

curl -X POST 'https://shortfreeurl.com/api/qr/ai' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"object":"…","prompt":"…","style":"…","strength":"…"}'
GET /api/qr/preview — =================================================================== QR CODES ===================================================================

Query parameters: data, text, theme, fg, bg, eye, radius, finder, dots, ecl, size, label, logo, margin, format

curl -X GET 'https://shortfreeurl.com/api/qr/preview' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/qr/publish — Publish QR: permanent, embeddable image URL

Body fields: linkId, data, style, format

curl -X POST 'https://shortfreeurl.com/api/qr/publish' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"linkId":"…","data":"…","style":"…","format":"…"}'
GET /api/qr/published — Get qr published
curl -X GET 'https://shortfreeurl.com/api/qr/published' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/qr/published/:id — Delete qr published by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/qr/published/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/qr/themes — Get qr themes
curl -X GET 'https://shortfreeurl.com/api/qr/themes' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"

Statistics

GET /api/statistics/clickstream — Get statistics clickstream

Query parameters: domainId, linkId, limit, offset, format

curl -X GET 'https://shortfreeurl.com/api/statistics/clickstream' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/statistics/domain/:id — Domain statistics

Path parameters: id

Query parameters: period, startDate, endDate, interval, column, limit, offset, tz

curl -X GET 'https://shortfreeurl.com/api/statistics/domain/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/statistics/domain/:id — Domain statistics

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/domain/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /api/statistics/domain/:id/by_interval — Statistics data by interval

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/domain/:id/by_interval' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /api/statistics/domain/:id/last_clicks — List of raw clicks

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/domain/:id/last_clicks' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
GET /api/statistics/domain/:id/link_clicks — Link clicks

Path parameters: id

Query parameters: period, startDate, endDate, interval, column, limit, offset, tz

curl -X GET 'https://shortfreeurl.com/api/statistics/domain/:id/link_clicks' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/statistics/domain/:id/link_clicks — Link clicks

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/domain/:id/link_clicks' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /api/statistics/domain/:id/paths — Most popular links in a time interval

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/domain/:id/paths' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
DELETE /api/statistics/domain/:id/statistics — Clear domain statistics

Path parameters: id

Query parameters: confirm

curl -X DELETE 'https://shortfreeurl.com/api/statistics/domain/:id/statistics' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/statistics/domain/:id/top — Top values ordered by clicks

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/domain/:id/top' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /api/statistics/domain/:id/top_by_interval — Top values by column and interval

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/domain/:id/top_by_interval' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
GET /api/statistics/link/:id — Link statistics

Path parameters: id

Query parameters: period, startDate, endDate, interval, column, limit, offset, tz

curl -X GET 'https://shortfreeurl.com/api/statistics/link/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/statistics/link/:id — Link statistics

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/link/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /api/statistics/link/:id/by_interval — Statistics data by interval

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/link/:id/by_interval' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /api/statistics/link/:id/top — Top values ordered by clicks

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/api/statistics/link/:id/top' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
GET /api/statistics/overview — Organisation-wide overview (dashboard home cards)

Query parameters: interval

curl -X GET 'https://shortfreeurl.com/api/statistics/overview' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/statistics/share — Get statistics share
curl -X GET 'https://shortfreeurl.com/api/statistics/share' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/statistics/share — Shareable public statistics links

Body fields: domainId, linkId, expiresAt, windowDays

curl -X POST 'https://shortfreeurl.com/api/statistics/share' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domainId":"…","linkId":"…","expiresAt":"…","windowDays":"…"}'
DELETE /api/statistics/share/:id — Delete statistics share by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/statistics/share/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /statistics/click/:clid — One click, in full

Path parameters: clid

curl -X GET 'https://shortfreeurl.com/statistics/click/:clid' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /statistics/clickstream — Get statistics clickstream

Query parameters: domainId, linkId, limit, offset, format

curl -X GET 'https://shortfreeurl.com/statistics/clickstream' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /statistics/domain/:id — Domain statistics

Path parameters: id

Query parameters: period, startDate, endDate, interval, column, limit, offset, tz

curl -X GET 'https://shortfreeurl.com/statistics/domain/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /statistics/domain/:id — Domain statistics

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/domain/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /statistics/domain/:id/by_interval — Statistics data by interval

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/domain/:id/by_interval' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
GET /statistics/domain/:id/clickstream — Get statistics domain by ID clickstream

Path parameters: id

Query parameters: domainId, linkId, limit, offset, format

curl -X GET 'https://shortfreeurl.com/statistics/domain/:id/clickstream' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /statistics/domain/:id/details/:dimension — Get statistics domain by ID details :dimension

Path parameters: id, dimension

Query parameters: interval, series

curl -X GET 'https://shortfreeurl.com/statistics/domain/:id/details/:dimension' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /statistics/domain/:id/export — XLS export of the statistics view

Path parameters: id

Query parameters: interval

curl -X GET 'https://shortfreeurl.com/statistics/domain/:id/export' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /statistics/domain/:id/filter-values — Filter option values (for the filters modal)

Path parameters: id

curl -X GET 'https://shortfreeurl.com/statistics/domain/:id/filter-values' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /statistics/domain/:id/last_clicks — List of raw clicks

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/domain/:id/last_clicks' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
GET /statistics/domain/:id/link_clicks — Link clicks

Path parameters: id

Query parameters: period, startDate, endDate, interval, column, limit, offset, tz

curl -X GET 'https://shortfreeurl.com/statistics/domain/:id/link_clicks' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /statistics/domain/:id/link_clicks — Link clicks

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/domain/:id/link_clicks' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
GET /statistics/domain/:id/paths — Most popular links in a time interval

Path parameters: id

Query parameters: period, startDate, endDate, interval, column, limit, offset, tz

curl -X GET 'https://shortfreeurl.com/statistics/domain/:id/paths' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /statistics/domain/:id/paths — Most popular links in a time interval

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/domain/:id/paths' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
DELETE /statistics/domain/:id/statistics — Clear domain statistics

Path parameters: id

Query parameters: confirm

curl -X DELETE 'https://shortfreeurl.com/statistics/domain/:id/statistics' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /statistics/domain/:id/top — Top values ordered by clicks

Path parameters: id

Query parameters: period, startDate, endDate, interval, column, limit, offset, tz

curl -X GET 'https://shortfreeurl.com/statistics/domain/:id/top' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /statistics/domain/:id/top — Top values ordered by clicks

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/domain/:id/top' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /statistics/domain/:id/top_by_interval — Top values by column and interval

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/domain/:id/top_by_interval' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
GET /statistics/link/:id — Link statistics

Path parameters: id

Query parameters: period, startDate, endDate, interval, column, limit, offset, tz

curl -X GET 'https://shortfreeurl.com/statistics/link/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /statistics/link/:id — Link statistics

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/link/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /statistics/link/:id/by_interval — Statistics data by interval

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/link/:id/by_interval' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'
POST /statistics/link/:id/top — Top values ordered by clicks

Path parameters: id

Body fields: period, startDate, endDate, interval, column, limit, offset, include, exclude, tz

curl -X POST 'https://shortfreeurl.com/statistics/link/:id/top' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","startDate":"…","endDate":"…","interval":"…"}'

Geo data

GET /api/geo/cities — Get geo cities

Query parameters: country, region, q, limit

curl -X GET 'https://shortfreeurl.com/api/geo/cities' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/geo/continents — continents
curl -X GET 'https://shortfreeurl.com/api/geo/continents' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/geo/countries — countries

Query parameters: continent, limit, q

curl -X GET 'https://shortfreeurl.com/api/geo/countries' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/geo/regions — subdivisions (states / provinces / regions)

Query parameters: country, limit, q

curl -X GET 'https://shortfreeurl.com/api/geo/regions' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/geo/resolve — resolve a free-typed value to something the matcher will accept --

Query parameters: value, type, country

curl -X GET 'https://shortfreeurl.com/api/geo/resolve' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"

Registrars

GET /api/registrars — saved connections
curl -X GET 'https://shortfreeurl.com/api/registrars' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/registrars/:id — disconnect

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/registrars/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/registrars/:id/attach — Attach a domain and write its DNS after public hosting is ready. Namecheap bare-domain changes require replaceExisting=true; a subdomain such as go.example.com is recommended.

Path parameters: id

Body fields: hostname, zone, replaceExisting

curl -X POST 'https://shortfreeurl.com/api/registrars/:id/attach' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"hostname":"…","zone":"…","replaceExisting":"…"}'
GET /api/registrars/:id/domains — list the domains inside a connection Domains for one connection. This is the call the dashboard makes straight after an OAuth callback, which is why nothing here asks for a token.

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/registrars/:id/domains' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/registrars/:id/push/:domainId — Re-push DNS records after public hosting is ready. Existing Namecheap record collisions require an explicit replaceExisting=true after review.

Path parameters: id, domainId

Body fields: replaceExisting

curl -X POST 'https://shortfreeurl.com/api/registrars/:id/push/:domainId' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"replaceExisting":"…"}'
POST /api/registrars/connect — Verify a DNS account before encrypted storage. For provider=namecheap, supply user, apiKey and the allowlisted public outbound clientIp; see /docs/namecheap-domain-setup.

Body fields: provider, label, user, apiKey, clientIp

curl -X POST 'https://shortfreeurl.com/api/registrars/connect' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"provider":"…","label":"…","user":"…","apiKey":"…"}'
GET /api/registrars/lookup — live DNS check, provider-agnostic

Query parameters: hostname

curl -X GET 'https://shortfreeurl.com/api/registrars/lookup' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/registrars/providers — what we can connect to
curl -X GET 'https://shortfreeurl.com/api/registrars/providers' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/registrars/records — what the records should look like, for the manual path

Query parameters: hostname

curl -X GET 'https://shortfreeurl.com/api/registrars/records' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"

Free tools

GET /api/tools — Get tools
curl -X GET 'https://shortfreeurl.com/api/tools' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/tools/ab-sample-size-calculator — Create or update tools ab sample size calculator

Body fields: baseline, mde, mdeType, alpha, power, daily, tails

curl -X POST 'https://shortfreeurl.com/api/tools/ab-sample-size-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"baseline":"…","mde":"…","mdeType":"…","alpha":"…"}'
POST /api/tools/ab-significance — Two-proportion z-test — the standard check for an A/B result.

Body fields: aVisitors, aConversions, bVisitors, bConversions

curl -X POST 'https://shortfreeurl.com/api/tools/ab-significance' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"aVisitors":"…","aConversions":"…","bVisitors":"…","bConversions":"…"}'
POST /api/tools/api-error-explainer — Create or update tools api error explainer

Body fields: response, status

curl -X POST 'https://shortfreeurl.com/api/tools/api-error-explainer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"response":"…","status":"…"}'
POST /api/tools/app-links-validator — 6. App links validator

Body fields: json

curl -X POST 'https://shortfreeurl.com/api/tools/app-links-validator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"json":"…"}'
POST /api/tools/app-store-qr — Create or update tools app store qr

Body fields: ios, android, appName

curl -X POST 'https://shortfreeurl.com/api/tools/app-store-qr' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ios":"…","android":"…","appName":"…"}'
POST /api/tools/attribution-model-comparer — attribution-model-comparer

Body fields: journeys, halfLife

curl -X POST 'https://shortfreeurl.com/api/tools/attribution-model-comparer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"journeys":"…","halfLife":"…"}'
POST /api/tools/base-converter — Create or update tools base converter

Body fields: value, from, to

curl -X POST 'https://shortfreeurl.com/api/tools/base-converter' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"value":"…","from":"…","to":"…"}'
POST /api/tools/base64-encoder — Create or update tools base64 encoder

Body fields: text, mode, urlSafe

curl -X POST 'https://shortfreeurl.com/api/tools/base64-encoder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","mode":"…","urlSafe":"…"}'
POST /api/tools/basic-auth-encoder — 14. Basic auth encoder / decoder

Body fields: mode, header, username, password

curl -X POST 'https://shortfreeurl.com/api/tools/basic-auth-encoder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"mode":"…","header":"…","username":"…","password":"…"}'
POST /api/tools/bot-user-agent-checker — Create or update tools bot user agent checker

Body fields: agents

curl -X POST 'https://shortfreeurl.com/api/tools/bot-user-agent-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"agents":"…"}'
POST /api/tools/broken-link-checker — Create or update tools broken link checker

Body fields: urls

curl -X POST 'https://shortfreeurl.com/api/tools/broken-link-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls":"…"}'
POST /api/tools/budget-pacing-calculator — 11. Budget pacing calculator

Body fields: budget, spend, start, end, asOf

curl -X POST 'https://shortfreeurl.com/api/tools/budget-pacing-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"budget":"…","spend":"…","start":"…","end":"…"}'
POST /api/tools/bulk-qr-generator — Create or update tools bulk qr generator

Body fields: urls, format

curl -X POST 'https://shortfreeurl.com/api/tools/bulk-qr-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls":"…","format":"…"}'
POST /api/tools/bulk-url-validator — 3. Bulk URL validator

Body fields: urls

curl -X POST 'https://shortfreeurl.com/api/tools/bulk-url-validator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls":"…"}'
POST /api/tools/campaign-calendar-builder — Create or update tools campaign calendar builder

Body fields: campaigns, convention

curl -X POST 'https://shortfreeurl.com/api/tools/campaign-calendar-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"campaigns":"…","convention":"…"}'
POST /api/tools/campaign-comparison — 21. Campaign comparison

Body fields: nameA, nameB, clicksA, clicksB, conversionsA, conversionsB

curl -X POST 'https://shortfreeurl.com/api/tools/campaign-comparison' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"nameA":"…","nameB":"…","clicksA":"…","clicksB":"…"}'
POST /api/tools/campaign-name-builder — ===================================================================== Campaign maths =====================================================================

Body fields: channel, brand, region, objective, date, variant, separator, order

curl -X POST 'https://shortfreeurl.com/api/tools/campaign-name-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"channel":"…","brand":"…","region":"…","objective":"…"}'
POST /api/tools/campaign-url-batch-builder — 9. Campaign URL batch builder

Body fields: url, sources, mediums, campaign, content

curl -X POST 'https://shortfreeurl.com/api/tools/campaign-url-batch-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","sources":"…","mediums":"…","campaign":"…"}'
POST /api/tools/canonical-checker — Create or update tools canonical checker

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/canonical-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/character-counter — Create or update tools character counter

Body fields: text

curl -X POST 'https://shortfreeurl.com/api/tools/character-counter' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…"}'
POST /api/tools/cidr-calculator — IP helpers (parseCidr and friends) live in util/ipmatch so the admin IP blocklist matches addresses with exactly the same code these tools explain. 16. CIDR calculator

Body fields: cidr

curl -X POST 'https://shortfreeurl.com/api/tools/cidr-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"cidr":"…"}'
POST /api/tools/city-search — 16. City search

Body fields: query, country, region

curl -X POST 'https://shortfreeurl.com/api/tools/city-search' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"query":"…","country":"…","region":"…"}'
POST /api/tools/click-fraud-signals-checker — click-fraud-signals-checker

Body fields: log

curl -X POST 'https://shortfreeurl.com/api/tools/click-fraud-signals-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"log":"…"}'
POST /api/tools/click-goal-planner — 23. Click goal planner

Body fields: target, deadline, start, already, channels

curl -X POST 'https://shortfreeurl.com/api/tools/click-goal-planner' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"target":"…","deadline":"…","start":"…","already":"…"}'
POST /api/tools/cohort-retention-table — cohort-retention-table

Body fields: rows

curl -X POST 'https://shortfreeurl.com/api/tools/cohort-retention-table' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"rows":"…"}'
POST /api/tools/confidence-interval-calculator — 22. Confidence interval calculator

Body fields: visitors, conversions, level

curl -X POST 'https://shortfreeurl.com/api/tools/confidence-interval-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"visitors":"…","conversions":"…","level":"…"}'
POST /api/tools/conversion-calculator — Create or update tools conversion calculator

Body fields: clicks, conversions, spend, revenue

curl -X POST 'https://shortfreeurl.com/api/tools/conversion-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"clicks":"…","conversions":"…","spend":"…","revenue":"…"}'
POST /api/tools/conversion-funnel-calculator — conversion-funnel-calculator

Body fields: stages

curl -X POST 'https://shortfreeurl.com/api/tools/conversion-funnel-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"stages":"…"}'
POST /api/tools/country-language-currency-lookup — Create or update tools country language currency lookup

Body fields: country

curl -X POST 'https://shortfreeurl.com/api/tools/country-language-currency-lookup' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"country":"…"}'
POST /api/tools/country-lookup — 14. Country lookup

Body fields: query, continent

curl -X POST 'https://shortfreeurl.com/api/tools/country-lookup' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"query":"…","continent":"…"}'
POST /api/tools/cpc-cpm-calculator — 11. CPC / CPM calculator

Body fields: spend, impressions, clicks, cpc, cpm, ctr

curl -X POST 'https://shortfreeurl.com/api/tools/cpc-cpm-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"spend":"…","impressions":"…","clicks":"…","cpc":"…"}'
POST /api/tools/cron-explainer — Create or update tools cron explainer

Body fields: cron, timezone

curl -X POST 'https://shortfreeurl.com/api/tools/cron-explainer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"cron":"…","timezone":"…"}'
POST /api/tools/csv-to-json — Create or update tools csv to json

Body fields: text, header, trim, delimiter

curl -X POST 'https://shortfreeurl.com/api/tools/csv-to-json' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","header":"…","trim":"…","delimiter":"…"}'
POST /api/tools/ctr-calculator — Create or update tools ctr calculator

Body fields: impressions, clicks

curl -X POST 'https://shortfreeurl.com/api/tools/ctr-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"impressions":"…","clicks":"…"}'
POST /api/tools/curl-command-builder — Create or update tools curl command builder

Body fields: endpoint, method, base, token, pathValues, body, query

curl -X POST 'https://shortfreeurl.com/api/tools/curl-command-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"endpoint":"…","method":"…","base":"…","token":"…"}'
POST /api/tools/deep-link-builder — 5. Deep link builder

Body fields: host, path, package, scheme, fallback, query

curl -X POST 'https://shortfreeurl.com/api/tools/deep-link-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"host":"…","path":"…","package":"…","scheme":"…"}'
POST /api/tools/dns-checker — DNS checker for short domains

Body fields: domain

curl -X POST 'https://shortfreeurl.com/api/tools/dns-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domain":"…"}'
POST /api/tools/dns-record-builder — Create or update tools dns record builder

Body fields: host, ip, cname, ttl

curl -X POST 'https://shortfreeurl.com/api/tools/dns-record-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"host":"…","ip":"…","cname":"…","ttl":"…"}'
POST /api/tools/duration-calculator — 19. Duration calculator

Body fields: start, end

curl -X POST 'https://shortfreeurl.com/api/tools/duration-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"start":"…","end":"…"}'
POST /api/tools/email-qr — Create or update tools email qr

Body fields: to, subject, body

curl -X POST 'https://shortfreeurl.com/api/tools/email-qr' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"to":"…","subject":"…","body":"…"}'
POST /api/tools/event-qr — Create or update tools event qr

Body fields: title, start, end, location, description

curl -X POST 'https://shortfreeurl.com/api/tools/event-qr' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"title":"…","start":"…","end":"…","location":"…"}'
POST /api/tools/favicon-checker — Create or update tools favicon checker

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/favicon-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/geo-qr — Create or update tools geo qr

Body fields: lat, lon

curl -X POST 'https://shortfreeurl.com/api/tools/geo-qr' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"lat":"…","lon":"…"}'
POST /api/tools/hash-generator — 12. Hash generator

Body fields: text

curl -X POST 'https://shortfreeurl.com/api/tools/hash-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…"}'
POST /api/tools/hmac-signature-tester — 13. HMAC signature tester

Body fields: payload, secret, algo, signature

curl -X POST 'https://shortfreeurl.com/api/tools/hmac-signature-tester' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"payload":"…","secret":"…","algo":"…","signature":"…"}'
POST /api/tools/html-entity-encoder — Create or update tools html entity encoder

Body fields: text, mode, scope

curl -X POST 'https://shortfreeurl.com/api/tools/html-entity-encoder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","mode":"…","scope":"…"}'
POST /api/tools/html-link-extractor — Create or update tools html link extractor

Body fields: html, base

curl -X POST 'https://shortfreeurl.com/api/tools/html-link-extractor' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"html":"…","base":"…"}'
POST /api/tools/http-header-checker — Create or update tools http header checker

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/http-header-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/http-status-lookup — Create or update tools http status lookup

Body fields: code

curl -X POST 'https://shortfreeurl.com/api/tools/http-status-lookup' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"code":"…"}'
POST /api/tools/idempotency-key-generator — Create or update tools idempotency key generator

Body fields: count, format, prefix, items

curl -X POST 'https://shortfreeurl.com/api/tools/idempotency-key-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"count":"…","format":"…","prefix":"…","items":"…"}'
POST /api/tools/ip-in-range-checker — 17. IP in range checker

Body fields: ip, ranges

curl -X POST 'https://shortfreeurl.com/api/tools/ip-in-range-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ip":"…","ranges":"…"}'
POST /api/tools/ip-lookup — Create or update tools ip lookup

Body fields: ip

curl -X POST 'https://shortfreeurl.com/api/tools/ip-lookup' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ip":"…"}'
POST /api/tools/ip-range-country-lookup — Create or update tools ip range country lookup

Body fields: ip

curl -X POST 'https://shortfreeurl.com/api/tools/ip-range-country-lookup' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ip":"…"}'
POST /api/tools/json-formatter — Create or update tools json formatter

Body fields: text, mode, indent

curl -X POST 'https://shortfreeurl.com/api/tools/json-formatter' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","mode":"…","indent":"…"}'
POST /api/tools/jwt-decoder — Create or update tools jwt decoder

Body fields: token

curl -X POST 'https://shortfreeurl.com/api/tools/jwt-decoder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"token":"…"}'
POST /api/tools/link-expander — Create or update tools link expander

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/link-expander' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/link-expiry-planner — 8. Link expiry planner

Body fields: start, days, clicks, graceDays, fallback

curl -X POST 'https://shortfreeurl.com/api/tools/link-expiry-planner' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"start":"…","days":"…","clicks":"…","graceDays":"…"}'
POST /api/tools/link-in-bio-planner — Create or update tools link in bio planner

Body fields: items, maxButtons

curl -X POST 'https://shortfreeurl.com/api/tools/link-in-bio-planner' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"items":"…","maxButtons":"…"}'
POST /api/tools/link-in-bio-preview — Create or update tools link in bio preview

Body fields: items, heading, description, theme

curl -X POST 'https://shortfreeurl.com/api/tools/link-in-bio-preview' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"items":"…","heading":"…","description":"…","theme":"…"}'
POST /api/tools/link-list-deduplicator — 2. Link list deduplicator

Body fields: urls

curl -X POST 'https://shortfreeurl.com/api/tools/link-list-deduplicator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls":"…"}'
POST /api/tools/link-preview-generator — ===================================================================== Metadata and content =====================================================================

Body fields: title, description, image, url, siteName

curl -X POST 'https://shortfreeurl.com/api/tools/link-preview-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"title":"…","description":"…","image":"…","url":"…"}'
POST /api/tools/link-rotation-planner — 6. Link rotation planner

Body fields: destinations, volume, mode

curl -X POST 'https://shortfreeurl.com/api/tools/link-rotation-planner' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"destinations":"…","volume":"…","mode":"…"}'
POST /api/tools/link-safety-checker — Safety checker

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/link-safety-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/markdown-link-extractor — 9. Markdown link extractor

Body fields: markdown

curl -X POST 'https://shortfreeurl.com/api/tools/markdown-link-extractor' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"markdown":"…"}'
POST /api/tools/meta-tags-checker — Create or update tools meta tags checker

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/meta-tags-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/mime-type-lookup — Create or update tools mime type lookup

Body fields: query

curl -X POST 'https://shortfreeurl.com/api/tools/mime-type-lookup' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"query":"…"}'
POST /api/tools/open-graph-checker — Metadata tools

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/open-graph-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/openapi-endpoint-snippet — Create or update tools openapi endpoint snippet

Body fields: endpoint, base, token, pathValues, query, body

curl -X POST 'https://shortfreeurl.com/api/tools/openapi-endpoint-snippet' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"endpoint":"…","base":"…","token":"…","pathValues":"…"}'
POST /api/tools/punycode-converter — Create or update tools punycode converter

Body fields: domain

curl -X POST 'https://shortfreeurl.com/api/tools/punycode-converter' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domain":"…"}'
POST /api/tools/qr-batch-naming-planner — 10. QR batch naming planner

Body fields: event, count, placements, domain, start, date

curl -X POST 'https://shortfreeurl.com/api/tools/qr-batch-naming-planner' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"event":"…","count":"…","placements":"…","domain":"…"}'
POST /api/tools/qr-capacity-planner — Create or update tools qr capacity planner

Body fields: payload, ecl, mode, length

curl -X POST 'https://shortfreeurl.com/api/tools/qr-capacity-planner' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"payload":"…","ecl":"…","mode":"…","length":"…"}'
POST /api/tools/qr-contrast-checker — Create or update tools qr contrast checker

Body fields: foreground, background

curl -X POST 'https://shortfreeurl.com/api/tools/qr-contrast-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"foreground":"…","background":"…"}'
POST /api/tools/qr-debugger — Create or update tools qr debugger

Body fields: data

curl -X POST 'https://shortfreeurl.com/api/tools/qr-debugger' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"data":"…"}'
POST /api/tools/qr-generator — QR tools

Body fields: data, url, text

curl -X POST 'https://shortfreeurl.com/api/tools/qr-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"data":"…","url":"…","text":"…"}'
POST /api/tools/qr-logo-safe-area — 8. QR logo safe area

Body fields: ecl, modules, sizeMm, logoMm

curl -X POST 'https://shortfreeurl.com/api/tools/qr-logo-safe-area' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ecl":"…","modules":"…","sizeMm":"…","logoMm":"…"}'
POST /api/tools/qr-placement-checklist-generator — Create or update tools qr placement checklist generator

Body fields: placement, project

curl -X POST 'https://shortfreeurl.com/api/tools/qr-placement-checklist-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"placement":"…","project":"…"}'
POST /api/tools/qr-scan-distance — Create or update tools qr scan distance

Body fields: distance, modules

curl -X POST 'https://shortfreeurl.com/api/tools/qr-scan-distance' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"distance":"…","modules":"…"}'
POST /api/tools/qr-size-for-distance — 9. QR size for distance

Body fields: distance, unit, modules, payload, condition

curl -X POST 'https://shortfreeurl.com/api/tools/qr-size-for-distance' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"distance":"…","unit":"…","modules":"…","payload":"…"}'
POST /api/tools/query-string-builder — Create or update tools query string builder

Body fields: url, pairs

curl -X POST 'https://shortfreeurl.com/api/tools/query-string-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","pairs":"…"}'
POST /api/tools/querystring-merger — Create or update tools querystring merger

Body fields: url, params, mode

curl -X POST 'https://shortfreeurl.com/api/tools/querystring-merger' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","params":"…","mode":"…"}'
POST /api/tools/rate-limit-calculator — 18. Rate limit calculator

Body fields: limit, per, total, latency, safety

curl -X POST 'https://shortfreeurl.com/api/tools/rate-limit-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"limit":"…","per":"…","total":"…","latency":"…"}'
POST /api/tools/redirect-checker — Create or update tools redirect checker

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/redirect-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/redirect-rule-generator — Create or update tools redirect rule generator

Body fields: pairs, status, host

curl -X POST 'https://shortfreeurl.com/api/tools/redirect-rule-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"pairs":"…","status":"…","host":"…"}'
POST /api/tools/referrer-classifier — Create or update tools referrer classifier

Body fields: referrers

curl -X POST 'https://shortfreeurl.com/api/tools/referrer-classifier' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"referrers":"…"}'
POST /api/tools/regex-tester — Create or update tools regex tester

Body fields: pattern, flags, text, mode, scope

curl -X POST 'https://shortfreeurl.com/api/tools/regex-tester' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"pattern":"…","flags":"…","text":"…","mode":"…"}'
POST /api/tools/region-explorer — 15. Region explorer

Body fields: country, search

curl -X POST 'https://shortfreeurl.com/api/tools/region-explorer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"country":"…","search":"…"}'
POST /api/tools/retention-decay-planner — 13. Retention decay planner

Body fields: day1, decay, threshold, days

curl -X POST 'https://shortfreeurl.com/api/tools/retention-decay-planner' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"day1":"…","decay":"…","threshold":"…","days":"…"}'
POST /api/tools/retry-backoff-planner — retry-backoff-planner

Body fields: base, factor, jitter, attempts, cap

curl -X POST 'https://shortfreeurl.com/api/tools/retry-backoff-planner' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"base":"…","factor":"…","jitter":"…","attempts":"…"}'
POST /api/tools/robots-directive-builder — robots-directive-builder

Body fields: host, policy, sitemap, allowPaths

curl -X POST 'https://shortfreeurl.com/api/tools/robots-directive-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"host":"…","policy":"…","sitemap":"…","allowPaths":"…"}'
POST /api/tools/robots-txt-tester — Create or update tools robots txt tester

Body fields: url, userAgent

curl -X POST 'https://shortfreeurl.com/api/tools/robots-txt-tester' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","userAgent":"…"}'
POST /api/tools/roi-calculator — ===================================================================== Analytics ===================================================================== 10. ROI calculator

Body fields: spend, revenue, cogs, currency

curl -X POST 'https://shortfreeurl.com/api/tools/roi-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"spend":"…","revenue":"…","cogs":"…","currency":"…"}'
POST /api/tools/security-headers-builder — security-headers-builder

Body fields: host, framing, hstsDays, preload, pixels, referrer

curl -X POST 'https://shortfreeurl.com/api/tools/security-headers-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"host":"…","framing":"…","hstsDays":"…","preload":"…"}'
POST /api/tools/short-link-length-optimizer — Create or update tools short link length optimizer

Body fields: domain, style, slug

curl -X POST 'https://shortfreeurl.com/api/tools/short-link-length-optimizer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domain":"…","style":"…","slug":"…"}'
POST /api/tools/signed-link-builder — 15. Signed link builder

Body fields: url, secret, minutes, algo, encoding, params

curl -X POST 'https://shortfreeurl.com/api/tools/signed-link-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","secret":"…","minutes":"…","algo":"…"}'
POST /api/tools/sitemap-url-extractor — 4. Sitemap URL extractor

Body fields: xml

curl -X POST 'https://shortfreeurl.com/api/tools/sitemap-url-extractor' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"xml":"…"}'
POST /api/tools/slug-collision-checker — Create or update tools slug collision checker

Body fields: slugs

curl -X POST 'https://shortfreeurl.com/api/tools/slug-collision-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"slugs":"…"}'
POST /api/tools/slug-generator — Create or update tools slug generator

Body fields: text, title, url

curl -X POST 'https://shortfreeurl.com/api/tools/slug-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","title":"…","url":"…"}'
POST /api/tools/sms-length-calculator — Create or update tools sms length calculator

Body fields: message, longUrl, shortLength, costPerSegment, recipients

curl -X POST 'https://shortfreeurl.com/api/tools/sms-length-calculator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"message":"…","longUrl":"…","shortLength":"…","costPerSegment":"…"}'
POST /api/tools/sms-qr — Create or update tools sms qr

Body fields: phone, message

curl -X POST 'https://shortfreeurl.com/api/tools/sms-qr' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"phone":"…","message":"…"}'
POST /api/tools/social-post-composer — Create or update tools social post composer

Body fields: text, url

curl -X POST 'https://shortfreeurl.com/api/tools/social-post-composer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","url":"…"}'
POST /api/tools/ssl-checker — ===================================================================== Developer / diagnostics =====================================================================

Body fields: domain

curl -X POST 'https://shortfreeurl.com/api/tools/ssl-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domain":"…"}'
POST /api/tools/text-to-bulk-csv — 11. Text to bulk CSV

Body fields: text, tags, slugMode

curl -X POST 'https://shortfreeurl.com/api/tools/text-to-bulk-csv' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","tags":"…","slugMode":"…"}'
POST /api/tools/timestamp-converter — Create or update tools timestamp converter

Body fields: value, timezone

curl -X POST 'https://shortfreeurl.com/api/tools/timestamp-converter' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"value":"…","timezone":"…"}'
POST /api/tools/timezone-difference — 24. Timezone difference

Body fields: tzA, tzB, workStart, workEnd

curl -X POST 'https://shortfreeurl.com/api/tools/timezone-difference' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"tzA":"…","tzB":"…","workStart":"…","workEnd":"…"}'
POST /api/tools/tracking-parameter-stripper — 2. Tracking parameter stripper

Body fields: urls, url

curl -X POST 'https://shortfreeurl.com/api/tools/tracking-parameter-stripper' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls":"…","url":"…"}'
POST /api/tools/twitter-card-validator — Create or update tools twitter card validator

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/twitter-card-validator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/upi-qr — Create or update tools upi qr

Body fields: vpa, name, amount, note

curl -X POST 'https://shortfreeurl.com/api/tools/upi-qr' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"vpa":"…","name":"…","amount":"…","note":"…"}'
POST /api/tools/url-diff — 3. URL diff

Body fields: urlA, urlB

curl -X POST 'https://shortfreeurl.com/api/tools/url-diff' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urlA":"…","urlB":"…"}'
POST /api/tools/url-encoder — ===================================================================== URL mechanics =====================================================================

Body fields: text, mode, scope

curl -X POST 'https://shortfreeurl.com/api/tools/url-encoder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","mode":"…","scope":"…"}'
POST /api/tools/url-extractor — Create or update tools url extractor

Body fields: text

curl -X POST 'https://shortfreeurl.com/api/tools/url-extractor' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…"}'
POST /api/tools/url-normalizer — 1. URL normalizer

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/url-normalizer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/url-parser — Create or update tools url parser

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/url-parser' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/url-shortener — Anonymous URL shortener

Body fields: url, slug

curl -X POST 'https://shortfreeurl.com/api/tools/url-shortener' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","slug":"…"}'
POST /api/tools/url-slug-transliterator — Create or update tools url slug transliterator

Body fields: text, separator

curl -X POST 'https://shortfreeurl.com/api/tools/url-slug-transliterator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"text":"…","separator":"…"}'
POST /api/tools/user-agent-parser — Create or update tools user agent parser

Body fields: ua

curl -X POST 'https://shortfreeurl.com/api/tools/user-agent-parser' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ua":"…"}'
POST /api/tools/utm-audit — Create or update tools utm audit

Body fields: urls

curl -X POST 'https://shortfreeurl.com/api/tools/utm-audit' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls":"…"}'
POST /api/tools/utm-builder — UTM tools

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/utm-builder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/utm-bulk-fixer — 10. UTM bulk fixer

Body fields: urls

curl -X POST 'https://shortfreeurl.com/api/tools/utm-bulk-fixer' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls":"…"}'
POST /api/tools/utm-conflict-finder — 4. UTM conflict finder

Body fields: urls

curl -X POST 'https://shortfreeurl.com/api/tools/utm-conflict-finder' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"urls":"…"}'
POST /api/tools/utm-naming-convention-generator — Create or update tools utm naming convention generator

Body fields: brand, dateFormat, channels

curl -X POST 'https://shortfreeurl.com/api/tools/utm-naming-convention-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"brand":"…","dateFormat":"…","channels":"…"}'
POST /api/tools/utm-parser — Create or update tools utm parser

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/tools/utm-parser' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
POST /api/tools/utm-to-ga4-mapper — Create or update tools utm to ga4 mapper

Body fields: url, source, medium, campaign, content, term

curl -X POST 'https://shortfreeurl.com/api/tools/utm-to-ga4-mapper' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","source":"…","medium":"…","campaign":"…"}'
POST /api/tools/uuid-generator — Create or update tools uuid generator

Body fields: count, shortLength, format

curl -X POST 'https://shortfreeurl.com/api/tools/uuid-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"count":"…","shortLength":"…","format":"…"}'
POST /api/tools/vanity-slug-suggester — 6. Vanity slug suggester

Body fields: brand, campaign, channel

curl -X POST 'https://shortfreeurl.com/api/tools/vanity-slug-suggester' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"brand":"…","campaign":"…","channel":"…"}'
POST /api/tools/vcard-qr — Create or update tools vcard qr
curl -X POST 'https://shortfreeurl.com/api/tools/vcard-qr' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/tools/wcag-contrast-checker — Create or update tools wcag contrast checker

Body fields: foreground, background

curl -X POST 'https://shortfreeurl.com/api/tools/wcag-contrast-checker' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"foreground":"…","background":"…"}'
POST /api/tools/webhook-payload-inspector — Create or update tools webhook payload inspector

Body fields: payload, secret, signature, algorithm

curl -X POST 'https://shortfreeurl.com/api/tools/webhook-payload-inspector' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"payload":"…","secret":"…","signature":"…","algorithm":"…"}'
POST /api/tools/whatsapp-link-generator — Create or update tools whatsapp link generator

Body fields: phone, message

curl -X POST 'https://shortfreeurl.com/api/tools/whatsapp-link-generator' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"phone":"…","message":"…"}'
POST /api/tools/wifi-qr — Create or update tools wifi qr

Body fields: ssid, password, encryption, hidden

curl -X POST 'https://shortfreeurl.com/api/tools/wifi-qr' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ssid":"…","password":"…","encryption":"…","hidden":"…"}'

Account & organisation

POST /api/billing/cancel — Cancel / downgrade
curl -X POST 'https://shortfreeurl.com/api/billing/cancel' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/billing/checkout — Checkout

Body fields: period, plan, coupon, gateway

curl -X POST 'https://shortfreeurl.com/api/billing/checkout' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","plan":"…","coupon":"…","gateway":"…"}'
POST /api/billing/coupon/check — Create or update billing coupon check

Body fields: period, plan, code

curl -X POST 'https://shortfreeurl.com/api/billing/coupon/check' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"period":"…","plan":"…","code":"…"}'
GET /api/billing/gst-report — GST report for Indian accounting
curl -X GET 'https://shortfreeurl.com/api/billing/gst-report' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/billing/invoice/:id — Invoice (HTML, printable to PDF from the browser)

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/billing/invoice/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/billing/pricing — Pricing info (used by the pricing page and the upgrade modal)
curl -X GET 'https://shortfreeurl.com/api/billing/pricing' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/billing/resume — Create or update billing resume
curl -X POST 'https://shortfreeurl.com/api/billing/resume' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/billing/subscription — Get billing subscription
curl -X GET 'https://shortfreeurl.com/api/billing/subscription' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/billing/trial — A paid-plan trial is a real, time-bounded entitlement. It can be used once per organisation and needs no gateway round trip; attachContext returns the workspace to Free as soon as the end date is reached.

Body fields: plan

curl -X POST 'https://shortfreeurl.com/api/billing/trial' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"plan":"…"}'
GET /api/me — Session / bootstrap info for the SPA
curl -X GET 'https://shortfreeurl.com/api/me' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/metadata — Page metadata fetch (used by the create dialog to auto-fill titles)

Body fields: url

curl -X POST 'https://shortfreeurl.com/api/metadata' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…"}'
GET /api/org — =================================================================== ORGANIZATION ===================================================================
curl -X GET 'https://shortfreeurl.com/api/org' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/org — Create or update org

Body fields: s3Enabled, billingCountry

curl -X POST 'https://shortfreeurl.com/api/org' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"s3Enabled":"…","billingCountry":"…"}'
POST /api/org/create — Create or update org create

Body fields: name

curl -X POST 'https://shortfreeurl.com/api/org/create' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"…"}'
GET /api/org/detect — Get org detect
curl -X GET 'https://shortfreeurl.com/api/org/detect' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/org/invites/:id — Delete org invites by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/org/invites/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/org/invites/:id/resend — Create or update org invites by ID resend

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/org/invites/:id/resend' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/org/members/:id — Delete org members by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/org/members/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/org/members/:id/role — Create or update org members by ID role

Path parameters: id

Body fields: role

curl -X POST 'https://shortfreeurl.com/api/org/members/:id/role' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"role":"…"}'
POST /api/org/members/invite — Create or update org members invite

Body fields: email, role, teamId

curl -X POST 'https://shortfreeurl.com/api/org/members/invite' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…","role":"…","teamId":"…"}'
POST /api/org/switch — Create or update org switch

Body fields: orgId

curl -X POST 'https://shortfreeurl.com/api/org/switch' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"orgId":"…"}'
DELETE /api/profile — Delete profile

Body fields: password, confirm

curl -X DELETE 'https://shortfreeurl.com/api/profile' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"password":"…","confirm":"…"}'
POST /api/profile — =================================================================== PROFILE (5 tabs) ===================================================================
curl -X POST 'https://shortfreeurl.com/api/profile' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/profile/avatar — Create or update profile avatar
curl -X POST 'https://shortfreeurl.com/api/profile/avatar' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/profile/email — Create or update profile email

Body fields: email

curl -X POST 'https://shortfreeurl.com/api/profile/email' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…"}'
GET /api/profile/export — GDPR data export
curl -X GET 'https://shortfreeurl.com/api/profile/export' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/profile/phone/send-otp — Create or update profile phone send otp

Body fields: phone

curl -X POST 'https://shortfreeurl.com/api/profile/phone/send-otp' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"phone":"…"}'
POST /api/profile/phone/verify — Create or update profile phone verify

Body fields: code

curl -X POST 'https://shortfreeurl.com/api/profile/phone/verify' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"code":"…"}'
GET /api/teams — =================================================================== TEAMS ===================================================================
curl -X GET 'https://shortfreeurl.com/api/teams' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/teams — Create or update teams

Body fields: name

curl -X POST 'https://shortfreeurl.com/api/teams' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"…"}'
DELETE /api/teams/:id — Delete teams by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/teams/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/teams/:id — Create or update teams by ID

Path parameters: id

Body fields: name, enforce2fa, ownerId, saml

curl -X POST 'https://shortfreeurl.com/api/teams/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"…","enforce2fa":"…","ownerId":"…","saml":"…"}'
POST /api/teams/:id/domains — Create or update teams by ID domains

Path parameters: id

Body fields: domainId, attach

curl -X POST 'https://shortfreeurl.com/api/teams/:id/domains' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domainId":"…","attach":"…"}'
POST /api/teams/:id/members — Create or update teams by ID members

Path parameters: id

Body fields: email, role

curl -X POST 'https://shortfreeurl.com/api/teams/:id/members' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…","role":"…"}'
DELETE /api/teams/:id/members/:userId — Delete teams by ID members :userId

Path parameters: id, userId

curl -X DELETE 'https://shortfreeurl.com/api/teams/:id/members/:userId' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"

Other

POST /api/ai/assistant — Create or update ai assistant

Body fields: message, history

curl -X POST 'https://shortfreeurl.com/api/ai/assistant' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"message":"…","history":"…"}'
POST /api/ai/domains — Create or update ai domains

Body fields: keyword

curl -X POST 'https://shortfreeurl.com/api/ai/domains' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"keyword":"…"}'
POST /api/ai/metadata — Create or update ai metadata

Body fields: url, originalURL, mode

curl -X POST 'https://shortfreeurl.com/api/ai/metadata' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","originalURL":"…","mode":"…"}'
POST /api/ai/slug — AI endpoints

Body fields: url, originalURL, title

curl -X POST 'https://shortfreeurl.com/api/ai/slug' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","originalURL":"…","title":"…"}'
POST /api/ai/tags — Create or update ai tags

Body fields: url, originalURL, title

curl -X POST 'https://shortfreeurl.com/api/ai/tags' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"url":"…","originalURL":"…","title":"…"}'
GET /api/ai/usage — Get ai usage
curl -X GET 'https://shortfreeurl.com/api/ai/usage' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/announcements — =================================================================== Announcements ("What's new") ===================================================================
curl -X GET 'https://shortfreeurl.com/api/announcements' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/anonymous-links/claim — Create or update anonymous links claim

Body fields: token

curl -X POST 'https://shortfreeurl.com/api/anonymous-links/claim' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"token":"…"}'
GET /api/audit — =================================================================== AUDIT LOG ===================================================================

Query parameters: action, userId, from, to, limit, offset, format

curl -X GET 'https://shortfreeurl.com/api/audit' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/auth/2fa/backup-codes — Create or update auth 2fa backup codes
curl -X POST 'https://shortfreeurl.com/api/auth/2fa/backup-codes' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/auth/2fa/disable — Create or update auth 2fa disable

Body fields: password

curl -X POST 'https://shortfreeurl.com/api/auth/2fa/disable' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"password":"…"}'
POST /api/auth/2fa/enable — Create or update auth 2fa enable

Body fields: code

curl -X POST 'https://shortfreeurl.com/api/auth/2fa/enable' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"code":"…"}'
POST /api/auth/2fa/start — Two-factor authentication
curl -X POST 'https://shortfreeurl.com/api/auth/2fa/start' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/auth/change-password — Change password

Body fields: current, password

curl -X POST 'https://shortfreeurl.com/api/auth/change-password' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"current":"…","password":"…"}'
POST /api/auth/forgot — Create or update auth forgot

Body fields: email

curl -X POST 'https://shortfreeurl.com/api/auth/forgot' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…"}'
POST /api/auth/login — Log in

Body fields: email, password, totp, next

curl -X POST 'https://shortfreeurl.com/api/auth/login' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…","password":"…","totp":"…","next":"…"}'
POST /api/auth/magic-link — Create or update auth magic link

Body fields: email

curl -X POST 'https://shortfreeurl.com/api/auth/magic-link' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…"}'
GET /api/auth/passkeys — Passkeys / security keys (WebAuthn registration records)
curl -X GET 'https://shortfreeurl.com/api/auth/passkeys' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/auth/passkeys — Create or update auth passkeys

Body fields: credentialId, publicKey, label, transports

curl -X POST 'https://shortfreeurl.com/api/auth/passkeys' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"credentialId":"…","publicKey":"…","label":"…","transports":"…"}'
DELETE /api/auth/passkeys/:id — Delete auth passkeys by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/auth/passkeys/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/auth/register — Sign up

Body fields: email, password, name, domain_option

curl -X POST 'https://shortfreeurl.com/api/auth/register' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…","password":"…","name":"…","domain_option":"…"}'
POST /api/auth/resend-verification — Create or update auth resend verification
curl -X POST 'https://shortfreeurl.com/api/auth/resend-verification' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/auth/reset — Create or update auth reset

Body fields: token, password

curl -X POST 'https://shortfreeurl.com/api/auth/reset' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"token":"…","password":"…"}'
GET /api/auth/sessions — Sessions
curl -X GET 'https://shortfreeurl.com/api/auth/sessions' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/auth/sessions/:id — Delete auth sessions by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/auth/sessions/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/auth/sessions/revoke-all — Create or update auth sessions revoke all
curl -X POST 'https://shortfreeurl.com/api/auth/sessions/revoke-all' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/auth/webauthn/challenge — Get auth webauthn challenge
curl -X GET 'https://shortfreeurl.com/api/auth/webauthn/challenge' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/compliance — compliance / trust info
curl -X GET 'https://shortfreeurl.com/api/compliance' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/conversions — Get conversions
curl -X GET 'https://shortfreeurl.com/api/conversions' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/conversions — Conversions ingestion (public, no auth — identified by clid)

Body fields: clid, value, source, currency

curl -X POST 'https://shortfreeurl.com/api/conversions' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"clid":"…","value":"…","source":"…","currency":"…"}'
GET /api/conversions/pixel.gif — conversion pixel (1x1 gif) so non-technical users can fire it from a page

Query parameters: clid, value, currency

curl -X GET 'https://shortfreeurl.com/api/conversions/pixel.gif' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/developer-packages — Get developer packages
curl -X GET 'https://shortfreeurl.com/api/developer-packages' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/docs/ask — Create or update docs ask

Body fields: question

curl -X POST 'https://shortfreeurl.com/api/docs/ask' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"question":"…"}'
GET /api/docs/feedback — Get docs feedback

Query parameters: slug

curl -X GET 'https://shortfreeurl.com/api/docs/feedback' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/docs/feedback — Create or update docs feedback

Body fields: slug, token, helpful

curl -X POST 'https://shortfreeurl.com/api/docs/feedback' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"slug":"…","token":"…","helpful":"…"}'
GET /api/export/links — Exports

Query parameters: domainId, q, format

curl -X GET 'https://shortfreeurl.com/api/export/links' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/features/activity — Get features activity

Query parameters: limit, kind, person

curl -X GET 'https://shortfreeurl.com/api/features/activity' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/features/goals — Get features goals

Query parameters: domain_id, domainId

curl -X GET 'https://shortfreeurl.com/api/features/goals' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/features/goals — Create or update features goals

Body fields: domainId, target, deadline, startDate, metric

curl -X POST 'https://shortfreeurl.com/api/features/goals' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domainId":"…","target":"…","deadline":"…","startDate":"…"}'
DELETE /api/features/goals/:id — Delete features goals by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/features/goals/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/features/pins — Get features pins

Query parameters: domain_id, domainId

curl -X GET 'https://shortfreeurl.com/api/features/pins' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/features/pins — Create or update features pins

Body fields: linkId

curl -X POST 'https://shortfreeurl.com/api/features/pins' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"linkId":"…"}'
DELETE /api/features/pins/:id — Delete features pins by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/features/pins/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/features/reports — Get features reports
curl -X GET 'https://shortfreeurl.com/api/features/reports' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/features/reports — Create or update features reports

Body fields: email, frequency, domainId

curl -X POST 'https://shortfreeurl.com/api/features/reports' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"email":"…","frequency":"…","domainId":"…"}'
DELETE /api/features/reports/:id — Delete features reports by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/features/reports/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/features/reports/:id — Create or update features reports by ID

Path parameters: id

Body fields: enabled, frequency, email

curl -X POST 'https://shortfreeurl.com/api/features/reports/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":"…","frequency":"…","email":"…"}'
POST /api/features/reports/:id/run — Create or update features reports by ID run

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/features/reports/:id/run' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/features/utm-presets — Get features utm presets
curl -X GET 'https://shortfreeurl.com/api/features/utm-presets' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/features/utm-presets — Create or update features utm presets

Body fields: name

curl -X POST 'https://shortfreeurl.com/api/features/utm-presets' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"…"}'
DELETE /api/features/utm-presets/:id — Delete features utm presets by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/features/utm-presets/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/features/utm-presets/:id — Create or update features utm presets by ID

Path parameters: id

Body fields: used, name

curl -X POST 'https://shortfreeurl.com/api/features/utm-presets/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"used":"…","name":"…"}'
GET /api/features/views — Get features views
curl -X GET 'https://shortfreeurl.com/api/features/views' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/features/views — Create or update features views

Body fields: name, filters, isDefault

curl -X POST 'https://shortfreeurl.com/api/features/views' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"…","filters":"…","isDefault":"…"}'
DELETE /api/features/views/:id — Delete features views by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/features/views/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/features/views/:id — Create or update features views by ID

Path parameters: id

Body fields: name, filters, isDefault

curl -X POST 'https://shortfreeurl.com/api/features/views/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"name":"…","filters":"…","isDefault":"…"}'
GET /api/integrations — ===================================================================== Hub API (signed in, org-scoped) =====================================================================
curl -X GET 'https://shortfreeurl.com/api/integrations' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/integrations/:provider — Delete integrations :provider

Path parameters: provider

curl -X DELETE 'https://shortfreeurl.com/api/integrations/:provider' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/integrations/:provider/choices — The generic "pick something at the provider" pair, one dialog in the dashboard for every provider that has a choice to make. The older /options and /select above stay for the three that predate it.

Path parameters: provider

curl -X GET 'https://shortfreeurl.com/api/integrations/:provider/choices' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/integrations/:provider/choose — Create or update integrations :provider choose

Path parameters: provider

curl -X POST 'https://shortfreeurl.com/api/integrations/:provider/choose' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/integrations/:provider/connect — Key-based connect: paste fields, or mint a scoped API key.

Path parameters: provider

curl -X POST 'https://shortfreeurl.com/api/integrations/:provider/connect' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/integrations/:provider/connections/:id — Disconnect: revoke at the provider where possible, forget everything here.

Path parameters: provider, id

curl -X DELETE 'https://shortfreeurl.com/api/integrations/:provider/connections/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/integrations/:provider/deliveries — Get integrations :provider deliveries

Path parameters: provider

curl -X GET 'https://shortfreeurl.com/api/integrations/:provider/deliveries' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/integrations/:provider/email-draft — Create or update integrations :provider email draft

Path parameters: provider

Body fields: linkId

curl -X POST 'https://shortfreeurl.com/api/integrations/:provider/email-draft' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"linkId":"…"}'
POST /api/integrations/:provider/import — Create or update integrations :provider import

Path parameters: provider

Body fields: connectionId, token, ids, domainId

curl -X POST 'https://shortfreeurl.com/api/integrations/:provider/import' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"connectionId":"…","token":"…","ids":"…","domainId":"…"}'
GET /api/integrations/:provider/options — Things to pick from at the provider: repositories, databases, properties.

Path parameters: provider

curl -X GET 'https://shortfreeurl.com/api/integrations/:provider/options' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/integrations/:provider/prefs — Choices that are not credentials: events to send, default domain.

Path parameters: provider

Body fields: events, domainId, displayName

curl -X POST 'https://shortfreeurl.com/api/integrations/:provider/prefs' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"events":"…","domainId":"…","displayName":"…"}'
POST /api/integrations/:provider/preview — Create or update integrations :provider preview

Path parameters: provider

Body fields: connectionId, cursor

curl -X POST 'https://shortfreeurl.com/api/integrations/:provider/preview' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"connectionId":"…","cursor":"…"}'
GET /api/integrations/:provider/recipe — Get integrations :provider recipe

Path parameters: provider

curl -X GET 'https://shortfreeurl.com/api/integrations/:provider/recipe' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/integrations/:provider/select — Commit a choice: install the GitHub hook, bind a Notion database, point a domain at a GA4 property.

Path parameters: provider

Body fields: databaseId

curl -X POST 'https://shortfreeurl.com/api/integrations/:provider/select' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"databaseId":"…"}'
POST /api/integrations/:provider/test — A real call to the destination, with the answer.

Path parameters: provider

curl -X POST 'https://shortfreeurl.com/api/integrations/:provider/test' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/integrations/email-links — Get integrations email links

Query parameters: q

curl -X GET 'https://shortfreeurl.com/api/integrations/email-links' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/integrations/google/sheet — ===================================================================== Google Sheets for Bulk Sheets ===================================================================== Create the spreadsheet for a bulk mode on a domain

Body fields: mode, domainId

curl -X POST 'https://shortfreeurl.com/api/integrations/google/sheet' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"mode":"…","domainId":"…"}'
GET /api/integrations/google/sheet/rows — The rows a customer typed into the spreadsheet, ready for /api/bulk/sheet/apply.

Query parameters: mode, domainId

curl -X GET 'https://shortfreeurl.com/api/integrations/google/sheet/rows' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/integrations/slack/command — =================================================================== INTEGRATIONS =================================================================== The hub lives in src/routes/integrations.js. The legacy unsigned Slack
curl -X POST 'https://shortfreeurl.com/api/integrations/slack/command' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/keys — =================================================================== API KEYS ===================================================================
curl -X GET 'https://shortfreeurl.com/api/keys' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/keys — Create or update keys

Body fields: kind, scope, scopeId, description, expiresAt

curl -X POST 'https://shortfreeurl.com/api/keys' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"kind":"…","scope":"…","scopeId":"…","description":"…"}'
DELETE /api/keys/:id — Delete keys by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/keys/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/link-approvals — Get link approvals
curl -X GET 'https://shortfreeurl.com/api/link-approvals' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/link-approvals/:id/decision — Create or update link approvals by ID decision

Path parameters: id

Body fields: decision, note

curl -X POST 'https://shortfreeurl.com/api/link-approvals/:id/decision' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"decision":"…","note":"…"}'
GET /api/link-tools/:tool — Get link tools :tool

Path parameters: tool

curl -X GET 'https://shortfreeurl.com/api/link-tools/:tool' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/link-tools/summary — Routes
curl -X GET 'https://shortfreeurl.com/api/link-tools/summary' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/link-tools/tags/merge — Merging tags is the one fix offered here, so it is the one write: every link carrying a spelling variant gets the canonical tag instead, duplicates folded.

Body fields: to, from

curl -X POST 'https://shortfreeurl.com/api/link-tools/tags/merge' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"to":"…","from":"…"}'
GET /api/link-trash — Get link trash
curl -X GET 'https://shortfreeurl.com/api/link-trash' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/link-trash/:id — Delete link trash by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/link-trash/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/link-trash/:id/restore — Create or update link trash by ID restore

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/link-trash/:id/restore' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/make — Get make
curl -X GET 'https://shortfreeurl.com/api/make' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/monitor/alerts — Get monitor alerts

Query parameters: state, limit

curl -X GET 'https://shortfreeurl.com/api/monitor/alerts' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/alerts/:id/ack — Create or update monitor alerts by ID ack

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/monitor/alerts/:id/ack' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/alerts/ack-all — Create or update monitor alerts ack all
curl -X POST 'https://shortfreeurl.com/api/monitor/alerts/ack-all' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/monitor/alerts/rules — Get monitor alerts rules
curl -X GET 'https://shortfreeurl.com/api/monitor/alerts/rules' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/alerts/rules — Create or update monitor alerts rules
curl -X POST 'https://shortfreeurl.com/api/monitor/alerts/rules' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/alerts/test — Send a test alert through every configured channel and report what each did.
curl -X POST 'https://shortfreeurl.com/api/monitor/alerts/test' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/domains/:id — ===================================================================== Domain monitors =====================================================================

Path parameters: id

Body fields: monitorAll

curl -X POST 'https://shortfreeurl.com/api/monitor/domains/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"monitorAll":"…"}'
POST /api/monitor/domains/:id/check — Create or update monitor domains by ID check

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/monitor/domains/:id/check' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/domains/:id/status-page — status page

Path parameters: id

Body fields: enabled, rotate

curl -X POST 'https://shortfreeurl.com/api/monitor/domains/:id/status-page' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":"…","rotate":"…"}'
GET /api/monitor/insights — ===================================================================== Insights for the statistics page =====================================================================

Query parameters: domain_id, domainId, link_id, linkId, offenders

curl -X GET 'https://shortfreeurl.com/api/monitor/insights' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/monitor/insights/utm-offenders — Get monitor insights utm offenders

Query parameters: domain_id, domainId

curl -X GET 'https://shortfreeurl.com/api/monitor/insights/utm-offenders' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/links/:id — ===================================================================== Link monitors =====================================================================

Path parameters: id

Body fields: enabled

curl -X POST 'https://shortfreeurl.com/api/monitor/links/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":"…"}'
POST /api/monitor/links/:id/check — Create or update monitor links by ID check

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/monitor/links/:id/check' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/monitor/links/:id/history — Get monitor links by ID history

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/monitor/links/:id/history' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/monitor/live — ===================================================================== Live ticker =====================================================================

Query parameters: domain_id, domainId, since

curl -X GET 'https://shortfreeurl.com/api/monitor/live' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/monitor/notifications — ===================================================================== Notifications (the bell) =====================================================================
curl -X GET 'https://shortfreeurl.com/api/monitor/notifications' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/notifications/read — Create or update monitor notifications read

Body fields: ids

curl -X POST 'https://shortfreeurl.com/api/monitor/notifications/read' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ids":"…"}'
GET /api/monitor/overview — ===================================================================== Overview =====================================================================

Query parameters: domain_id, domainId

curl -X GET 'https://shortfreeurl.com/api/monitor/overview' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/monitor/run — Run every due check for this organisation now, without waiting for the scheduler.
curl -X POST 'https://shortfreeurl.com/api/monitor/run' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/onelinks — Create or update onelinks

Body fields: domainId, fallback, ios, android, path, title

curl -X POST 'https://shortfreeurl.com/api/onelinks' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"domainId":"…","fallback":"…","ios":"…","android":"…"}'
GET /api/openapi.json — OpenAPI specification
curl -X GET 'https://shortfreeurl.com/api/openapi.json' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/page-templates — Get page templates
curl -X GET 'https://shortfreeurl.com/api/page-templates' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/pages — Get pages
curl -X GET 'https://shortfreeurl.com/api/pages' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/pages — Create or update pages

Body fields: status

curl -X POST 'https://shortfreeurl.com/api/pages' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"status":"…"}'
DELETE /api/pages/:id — Delete pages by ID

Path parameters: id

curl -X DELETE 'https://shortfreeurl.com/api/pages/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/pages/:id — Create or update pages by ID

Path parameters: id

Body fields: status

curl -X POST 'https://shortfreeurl.com/api/pages/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"status":"…"}'
GET /api/pages/:id/contacts — Get pages by ID contacts

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/pages/:id/contacts' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
DELETE /api/pages/:id/contacts/:contact — Delete pages by ID contacts :contact

Path parameters: id, contact

curl -X DELETE 'https://shortfreeurl.com/api/pages/:id/contacts/:contact' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/pages/domain-access — Get pages domain access
curl -X GET 'https://shortfreeurl.com/api/pages/domain-access' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/pages/domain-trial — Create or update pages domain trial
curl -X POST 'https://shortfreeurl.com/api/pages/domain-trial' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/pages/preview — Create or update pages preview
curl -X POST 'https://shortfreeurl.com/api/pages/preview' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/purchased-domains — Get purchased domains
curl -X GET 'https://shortfreeurl.com/api/purchased-domains' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/purchased-domains/:id/auto-renew — Create or update purchased domains by ID auto renew

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/purchased-domains/:id/auto-renew' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/site-search — Get site search

Query parameters: q

curl -X GET 'https://shortfreeurl.com/api/site-search' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/support/attachments/:id — Attachment download

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/support/attachments/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/support/meta — Meta — everything the new-ticket form needs to draw itself
curl -X GET 'https://shortfreeurl.com/api/support/meta' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/support/tickets — List

Query parameters: status, q, limit, offset

curl -X GET 'https://shortfreeurl.com/api/support/tickets' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/support/tickets — Open a ticket

Body fields: subject, message, category, domainId, linkId

curl -X POST 'https://shortfreeurl.com/api/support/tickets' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"subject":"…","message":"…","category":"…","domainId":"…"}'
GET /api/support/tickets/:id — One ticket, with its thread

Path parameters: id

curl -X GET 'https://shortfreeurl.com/api/support/tickets/:id' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/support/tickets/:id/ai-confirmation — Create or update support tickets by ID ai confirmation

Path parameters: id

Body fields: resolved

curl -X POST 'https://shortfreeurl.com/api/support/tickets/:id/ai-confirmation' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"resolved":"…"}'
POST /api/support/tickets/:id/close — Create or update support tickets by ID close

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/support/tickets/:id/close' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/support/tickets/:id/rate — Rating

Path parameters: id

Body fields: rating, comment

curl -X POST 'https://shortfreeurl.com/api/support/tickets/:id/rate' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"rating":"…","comment":"…"}'
POST /api/support/tickets/:id/reopen — Create or update support tickets by ID reopen

Path parameters: id

curl -X POST 'https://shortfreeurl.com/api/support/tickets/:id/reopen' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/support/tickets/:id/reply — Reply

Path parameters: id

Body fields: message, body

curl -X POST 'https://shortfreeurl.com/api/support/tickets/:id/reply' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"message":"…","body":"…"}'
POST /api/upload — =================================================================== Uploads (logos, covers, favicons, QR logos) ===================================================================

Body fields: prefix

curl -X POST 'https://shortfreeurl.com/api/upload' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"prefix":"…"}'
GET /api/zapier — Zapier / Make discovery endpoints
curl -X GET 'https://shortfreeurl.com/api/zapier' \
  -H "Authorization: Bearer $SHORTFREEURL_API_KEY"

Start Free — no credit card

The free plan includes 1,000 links, 6 custom domains and 50,000 tracked clicks a month, free forever. Choose a free subdomain from six shared domains. Paid plans start at $4 a month when you outgrow it, and you keep everything you have built.