Skip to Content
Retargeting Pixels on every Link 🎉
Link Squeeze LogoLink Squeeze Docs
FeaturesToolsPricingBlog
CTRL K
CTRL K
    • How to Add Custom Domains to Link Squeeze
    • How to Shorten Links Using Link Squeeze
    • How to Shorten Shopify URLs Using Link Squeeze
    • How to Add Google Ads Tag to Link Squeeze
    • How to Add Meta Pixel to Link Squeeze
    • How to Add Retargeting Pixels to links in Link Squeeze
    • How to Create a Custom Audience on Facebook and Instagram
    • Authentication
    • Links
    • Click Analytics
    • Domains
    • Pixels
    • Webhooks
    • Errors & Rate Limits
  • Features
  • Tools
  • Pricing
  • Blog
    • How to Add Custom Domains to Link Squeeze
    • How to Shorten Links Using Link Squeeze
    • How to Shorten Shopify URLs Using Link Squeeze
    • How to Add Google Ads Tag to Link Squeeze
    • How to Add Meta Pixel to Link Squeeze
    • How to Add Retargeting Pixels to links in Link Squeeze
    • How to Create a Custom Audience on Facebook and Instagram
    • Authentication
    • Links
    • Click Analytics
    • Domains
    • Pixels
    • Webhooks
    • Errors & Rate Limits

On This Page

  • Base URL
  • Quick start
  • Reference
  • Conventions
  • Identifiers
  • Requests
  • Responses
  • Pagination
  • Timestamps
  • Errors
  • Rate limits
Question? Give us feedback
API ReferenceLink Squeeze API v1 Reference

Link Squeeze API

The Link Squeeze API is a REST API for everything you can do from the dashboard: create and manage branded short links, add custom domains, attach retargeting pixels, read click analytics, and subscribe to webhooks for link and pixel events.

It speaks JSON, uses standard HTTP verbs and status codes, and is authenticated with a bearer token you generate yourself.

Base URL

https://app.linksqueeze.io/api/v1

Every path in this reference is relative to that base. All requests must be made over HTTPS.

An active plan is required to use the API. Requests from an account without a live subscription, lifetime purchase, or running trial are refused with 402 payment_required, even when the API key itself is valid.

Quick start

Generate an API key from Integrations → API in the dashboard, then create your first link:

curl -X POST https://app.linksqueeze.io/api/v1/links \ -H "Authorization: Bearer $LINKSQUEEZE_API_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "destination_url": "https://example.com/summer-sale", "slug": "summer" }'
{ "data": { "id": "9b1f4e2a-6c3d-4a17-9f2e-7c8d5a1b3e40", "title": "Summer Sale", "destination_url": "https://example.com/summer-sale", "short_url": "sqzly.link/summer", "slug": "summer", "hostname": null, "utm_params": [], "tags": [], "expires_at": null, "pixel_ids": [], "clicks": 0, "status": true, "created_at": "2026-08-28T10:14:02.000000Z", "updated_at": "2026-08-28T10:14:02.000000Z" } }

Reference

Authentication & scopesLinksClick analyticsDomainsPixelsWebhooksErrors & rate limits

Conventions

Identifiers

Every object is addressed by its UUID, which is returned as id. Internal numeric primary keys are never exposed, and paths such as /links/{id} always expect a UUID.

GET /api/v1/links/9b1f4e2a-6c3d-4a17-9f2e-7c8d5a1b3e40

Requests

Send Content-Type: application/json on requests with a body, and Accept: application/json on every request so that errors come back as JSON rather than HTML.

Partial updates use PATCH. Only the fields you send are changed — with one exception on links, described in Updating a link.

Responses

A single object is wrapped in a data key:

{ "data": { "id": "...", "...": "..." } }

Deletes return 204 No Content with an empty body.

Pagination

List endpoints return Laravel’s standard paginated shape — a data array alongside links and meta objects:

{ "data": [{ "id": "..." }], "links": { "first": "https://app.linksqueeze.io/api/v1/links?page=1", "last": "https://app.linksqueeze.io/api/v1/links?page=4", "prev": null, "next": "https://app.linksqueeze.io/api/v1/links?page=2" }, "meta": { "current_page": 1, "from": 1, "last_page": 4, "path": "https://app.linksqueeze.io/api/v1/links", "per_page": 15, "to": 15, "total": 52 } }

Control the page with ?page= and the page size with ?per_page=. The default page size is 15 and the maximum is 100 — a larger value is silently capped rather than rejected.

Results are ordered newest first.

GET /v1/tokens is the one list endpoint that is not paginated. It returns every API key on the account in a single data array.

Timestamps

All timestamps are ISO 8601 in UTC, for example 2026-08-28T10:14:02.000000Z.

Errors

Every error uses the same envelope, with a machine-readable code and a human-readable message:

{ "error": { "code": "validation_error", "message": "The given data was invalid.", "errors": { "destination_url": ["The destination url field must be a valid URL."] } } }

See Errors & rate limits for the full list of codes.

Rate limits

Requests are limited to 60 per minute per API key. Two keys on the same account get independent budgets, and keys are never throttled by other customers sharing an IP address.

Last updated on August 28, 2026
How to Create a Custom Audience on Facebook and InstagramLinks
Link Squeeze LogoLink Squeeze

Branded short links with built-in retargeting pixels for performance marketers.

Product
  • Pricing
  • Sign up
  • Log in
  • Use cases
  • Docs
  • API
  • Blog
Free tools
  • Link shortener
  • UTM builder
  • Link Preview Generator
  • All tools
Legal
  • Privacy policy
  • Terms of service
  • Support
Compare
  • Bitly
  • Rebrandly
  • Short.io
  • Replug
  • Dub
© 2026 Link Squeeze. All rights reserved.Made for marketers who measure everything.