Planck API reference

A small REST API over the same objects the dashboard uses: links, domains, spaces, pixels and statistics. JSON in, JSON out, one bearer token.

Base URL and authentication

Every endpoint lives under:

https://planck.to/api/v1

Authenticate with the API token from your account settings, as a bearer token:

curl https://planck.to/api/v1/links \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Tokens are 64 characters and can be regenerated at any time, which immediately invalidates the previous one.

Endpoints

An unknown path under /api/v1 returns a JSON 404 rather than an HTML error page.

Method Path Does
GET/linksList your links, paginated.
POST/linksCreate a link, optionally with a QR code.
GET/links/{id}Fetch one link.
PUT/links/{id}Update a link.
DELETE/links/{id}Delete a link.
all five/domainsManage custom domains.
all five/spacesManage spaces, which group links by project or client.
all five/pixelsManage retargeting pixels.
GET/stats/{id}Click statistics for one link.
GET/accountYour account and current plan.

Creating a link

curl -X POST https://planck.to/api/v1/links \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/a-long-destination",
    "domain_id": 1,
    "alias": "spring-sale",
    "create_qr": true
  }'

Accepted fields

Field Type Notes
urlstring, requiredDestination. Up to 2048 characters. Checked against the URL safety rules.
domain_idinteger, requiredA domain you own, or a global one available to your plan.
aliasstringLetters, numbers, dashes and underscores. Up to 255 characters. Generated when omitted.
passwordstringUp to 128 characters. More
space_idintegerMust be a space you own.
pixel_idsarrayRetargeting pixels to fire on redirect.
create_qrbooleanAlso generate a QR code for the link.
disabledbooleanCreate the link without it redirecting yet.
privacyinteger 0-2Who can see the statistics page. Use privacy_password with the restricted options.
expiration_dateYYYY-MM-DDRequires expiration_time.
expiration_timeHH:MMRequires expiration_date.
expiration_clicksintegerStop redirecting after this many clicks.
expiration_urlstringWhere to send visitors after expiry. More
target_typeinteger 0-4Enables targeting by country, platform or language, and rotation.

Response

{
  "id": 1042,
  "alias": "spring-sale",
  "url": "https://example.com/a-long-destination",
  "short_url": "https://planck.to/spring-sale",
  "title": "Spring sale",
  "target_type": 0,
  "disabled": 0,
  "privacy": 0,
  "password": false,
  "expiration_url": null,
  "expiration_clicks": null,
  "clicks": 0,
  "space": null,
  "domain": { "id": 1, "name": "planck.to" },
  "pixels": [],
  "ends_at": null,
  "created_at": "2026-09-20T10:24:11.000000Z",
  "updated_at": "2026-09-20T10:24:11.000000Z"
}

password and privacy_password come back as booleans, never as values.

Listing and filtering

GET /api/v1/links?search=sale&search_by=title&sort_by=clicks&sort=desc&per_page=50
searchFree text.
search_bytitle, alias, url
space_id domain_id pixel_idFilter by related object.
sort_byid, clicks, title, alias, url
sortasc, desc
per_pageOne of 10, 25, 50 or 100. Anything else falls back to the default.

Rate limits

Two limits apply: a short-term throttle of 120 requests per minute, and a monthly allowance that comes from your plan.

Plan Requests per month
Free No programmatic access
Starter 2,000
Professional 10,000
Agency 100,000
Read from the live plan records, so this table cannot drift from what is on sale.

API access is enabled on: Agency.

Errors

Status Meaning
401Missing or invalid token.
403Your plan does not include programmatic access, or the monthly allowance is used up.
404Unknown resource, or one that belongs to another account.
422Validation failed. The body names the fields.
429Too many requests in the last minute.

Errors are JSON and carry a message and a status:

{
  "message": "You don't have access to this feature.",
  "status": 403
}

Ready to grow your business?

No card required. Upgrade only when you outgrow it.

Get Started for Free Compare plans