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.
Links
GET /api/links — Link list
Query parameters: domainId, limit, offset, q, folderId, tag, sort, dir
curl -X GET 'https://shortfreeurl.com/api/links' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links — Create a short link
Body fields: path, slug, original_url, title, description, tags, folder_id, cloaking, password_contact, note, expires_at, expired_url, ttl, clicks_limit, utm_source, utm_medium, utm_campaign, utm_term, utm_content, android_url, iphone_url, android_package, android_action, android_component, split_urls, rotation, redirect_type, skip_qs, url_policy, archived, geo_rules, integration_ga, integration_gtm, integration_fb, integration_adroll, tracking_settings, tracking_code, og, twitter, app_links, qr_style, permissions, bundle_id, routing_rules, app_deep_link, referrer_rules, returning_rule, click_alerts, bot_policy, password, encrypt, domainId
curl -X POST 'https://shortfreeurl.com/api/links' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"path":"…","slug":"…","original_url":"…","title":"…"}'
DELETE /api/links/:id — Delete a short link
Path parameters: id
curl -X DELETE 'https://shortfreeurl.com/api/links/:id' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/:id — Get link info by link ID
Path parameters: id
curl -X GET 'https://shortfreeurl.com/api/links/:id' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/preview — Read a destination page's title, description, site name and favicon (SSRF-safe, cached 24 h)
Body fields: url
curl -X POST 'https://shortfreeurl.com/api/links/preview' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"url":"…"}'
POST /api/links/suggest — Slug and tag suggestions for a destination (instant heuristics; ai:true refines with the configured provider)
Body fields: url, title, kind, domainId, ai, variant
curl -X POST 'https://shortfreeurl.com/api/links/suggest' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"url":"…","title":"…","kind":"…","domainId":"…"}'
GET /api/links/:id/click-alerts — Recent click alerts for one link
Path parameters: id
curl -X GET 'https://shortfreeurl.com/api/links/:id/click-alerts' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
PATCH /api/links/:id — Update a short link (PATCH)
Path parameters: id
Body fields: original_url, title, description, tags, folder_id, cloaking, password_contact, note, expires_at, expired_url, ttl, clicks_limit, utm_source, utm_medium, utm_campaign, utm_term, utm_content, android_url, iphone_url, android_package, android_action, android_component, split_urls, rotation, redirect_type, skip_qs, url_policy, archived, geo_rules, integration_ga, integration_gtm, integration_fb, integration_adroll, tracking_settings, tracking_code, og, twitter, app_links, qr_style, permissions, bundle_id, routing_rules, app_deep_link, referrer_rules, returning_rule, click_alerts, bot_policy, path, slug, password, encrypt, domainId
curl -X PATCH 'https://shortfreeurl.com/api/links/:id' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"original_url":"…","title":"…","description":"…","tags":"…"}'
POST /api/links/:id — Update a short link
Path parameters: id
Body fields: original_url, title, description, tags, folder_id, cloaking, password_contact, note, expires_at, expired_url, ttl, clicks_limit, utm_source, utm_medium, utm_campaign, utm_term, utm_content, android_url, iphone_url, android_package, android_action, android_component, split_urls, rotation, redirect_type, skip_qs, url_policy, archived, geo_rules, integration_ga, integration_gtm, integration_fb, integration_adroll, tracking_settings, tracking_code, og, twitter, app_links, qr_style, permissions, bundle_id, routing_rules, app_deep_link, referrer_rules, returning_rule, click_alerts, bot_policy, path, slug, password, encrypt, domainId
curl -X POST 'https://shortfreeurl.com/api/links/:id' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"original_url":"…","title":"…","description":"…","tags":"…"}'
PUT /api/links/:id — Update a short link (PUT)
Path parameters: id
curl -X PUT 'https://shortfreeurl.com/api/links/:id' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/:id/approval — Create or update links by ID approval
Path parameters: id
Body fields: note
curl -X POST 'https://shortfreeurl.com/api/links/:id/approval' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"note":"…"}'
POST /api/links/:id/archive — Archive a short link
Path parameters: id
curl -X POST 'https://shortfreeurl.com/api/links/:id/archive' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/:id/country — List country targeting rules
Path parameters: id
curl -X GET 'https://shortfreeurl.com/api/links/:id/country' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/:id/country — Replace country targeting rules
Path parameters: id
Body fields: value, url
curl -X POST 'https://shortfreeurl.com/api/links/:id/country' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"value":"…","url":"…"}'
POST /api/links/:id/destination-schedules — Create or update links by ID destination schedules
Path parameters: id
Body fields: destination, executeAt, timezone
curl -X POST 'https://shortfreeurl.com/api/links/:id/destination-schedules' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"destination":"…","executeAt":"…","timezone":"…"}'
DELETE /api/links/:id/destination-schedules/:scheduleId — Delete links by ID destination schedules :scheduleId
Path parameters: id, scheduleId
curl -X DELETE 'https://shortfreeurl.com/api/links/:id/destination-schedules/:scheduleId' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/:id/duplicate — Create or update links by ID duplicate
Path parameters: id
Body fields: domainId
curl -X POST 'https://shortfreeurl.com/api/links/:id/duplicate' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"domainId":"…"}'
GET /api/links/:id/qr — Get links by ID qr
Path parameters: id
Query parameters: theme, fg, bg, eye, radius, finder, dots, ecl, size, label, utm, format
curl -X GET 'https://shortfreeurl.com/api/links/:id/qr' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/:id/region — List region targeting rules
Path parameters: id
curl -X GET 'https://shortfreeurl.com/api/links/:id/region' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/:id/region — Replace region targeting rules
Path parameters: id
Body fields: value, url
curl -X POST 'https://shortfreeurl.com/api/links/:id/region' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"value":"…","url":"…"}'
POST /api/links/:id/routing-rules — Create or update links by ID routing rules
Path parameters: id
Body fields: rules
curl -X POST 'https://shortfreeurl.com/api/links/:id/routing-rules' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"rules":"…"}'
POST /api/links/:id/unarchive — Unarchive a short link
Path parameters: id
curl -X POST 'https://shortfreeurl.com/api/links/:id/unarchive' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/:id/workflow — Get links by ID workflow
Path parameters: id
curl -X GET 'https://shortfreeurl.com/api/links/:id/workflow' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/bulk — Create short links in bulk
Body fields: links
curl -X POST 'https://shortfreeurl.com/api/links/bulk' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"links":"…"}'
POST /api/links/bulk/action — Bulk actions from the links table
Body fields: ids, payload, action
curl -X POST 'https://shortfreeurl.com/api/links/bulk/action' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"ids":"…","payload":"…","action":"…"}'
POST /api/links/bulk/delete — Create or update links bulk delete
Body fields: action
curl -X POST 'https://shortfreeurl.com/api/links/bulk/delete' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"action":"…"}'
GET /api/links/by-original-url — Get link info by original URL
Query parameters: domainId, originalURL
curl -X GET 'https://shortfreeurl.com/api/links/by-original-url' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/by-original-urls — Get links info by original URL
Query parameters: domainId, originalURL, limit, offset
curl -X GET 'https://shortfreeurl.com/api/links/by-original-urls' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/by-path — Get link info by path
Query parameters: domainId, path
curl -X GET 'https://shortfreeurl.com/api/links/by-path' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/expand — Expand a short link
Query parameters: domain, path
curl -X GET 'https://shortfreeurl.com/api/links/expand' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/folders — Create a folder
curl -X POST 'https://shortfreeurl.com/api/links/folders' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/folders/:domainId — List folders in a domain
Path parameters: domainId
curl -X GET 'https://shortfreeurl.com/api/links/folders/:domainId' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
GET /api/links/folders/:domainId/:folderId — Get folder details
Path parameters: domainId, folderId
curl -X GET 'https://shortfreeurl.com/api/links/folders/:domainId/:folderId' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/multiple — Create or update links multiple
Body fields: ids, link_ids
curl -X POST 'https://shortfreeurl.com/api/links/multiple' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"ids":"…","link_ids":"…"}'
GET /api/links/opengraph/:domainId/:linkId — Get link Open Graph properties
Path parameters: domainId, linkId
curl -X GET 'https://shortfreeurl.com/api/links/opengraph/:domainId/:linkId' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY"
POST /api/links/qr/bulk — Create or update links qr bulk
Body fields: ids, format, style
curl -X POST 'https://shortfreeurl.com/api/links/qr/bulk' \
-H "Authorization: Bearer $SHORTFREEURL_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"ids":"…","format":"…","style":"…"}'
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.

