# API changelog

What changed in the Clikso API, newest first. New endpoints, new limits, and changes that can affect a working integration.

> **In short:**
>
> This page lists changes to the Clikso API, newest first. Most changes only add things. When a change can affect code that already works, it says so.

## October 2026

### Longer slugs, and slashes in slugs

* `short_code` can now be up to 30 characters on every plan. It was 20. This only allows more.
* On Starter and up, `short_code` can contain `/`, like `acme/launch`. See [Choose your own slug](https://clik.so/docs/guides/create-links#choose-your-own-slug) for the rules.
* On Free, a `short_code` with `/` gets `402 UPGRADE_REQUIRED`. If a workspace moves to Free, its nested links keep working, and you can still update them.

### Workspaces waiting for payment, and paused workspaces

* Every account has one default workspace that's free forever, and each extra workspace needs its own paid plan. A new extra workspace waits for its first payment; an extra workspace is paused when its paid plan ends.
* Two new errors, both `402`: `WORKSPACE_PAYMENT_REQUIRED` and `WORKSPACE_PAUSED`. See [Errors](https://clik.so/docs/errors). Reads and click analytics keep working on a paused workspace, and its short links keep redirecting.
* [Get workspace details](https://clik.so/docs/api/workspace/get-bootstrap) adds `workspaces[].access_state` (`null` for a normal workspace, `awaiting_payment` or `paused`) and `workspaces[].is_default` (`true` when the workspace is its owner's default). This only adds fields.

### AI apps can connect over MCP (12 October 2026)

* Clikso runs an MCP server at `https://app.clik.so/mcp`. Claude, ChatGPT, Gemini, Cursor, VS Code and other AI apps can use it. See [Use Clikso from AI apps](https://clik.so/docs/ai).
* AI apps sign in with OAuth, so they never need an API key. They follow the same plan limits as API keys.
* Nothing changed for API keys. Your integrations keep working as they are.

### Fixes to links, slugs and tags (9 October 2026)

* **Can affect working code.** On [Update a link](https://clik.so/docs/api/links/update-link), `null` now clears `geo_targeting`, `device_targeting`, `ab_testing`, `og_preview` and `qr_metadata`. Before, `null` left them as they were. Leave a field out to keep it.
* Create and update now check four fields. `title` can be up to 60 characters, `description` up to 250, and `expired_redirect_url` up to 2,048. `expires_at` must be a date. A bad value gets `422 VALIDATION_ERROR` with `details.field`, not a `500`.
* [Check a slug](https://clik.so/docs/api/links/check-slug) now says why a slug cannot be used. `reason` is `invalid_format` or `reserved`, with a `message` to show. It is still a `200`, and a taken slug is still a plain `available: false`.
* [Get a tag](https://clik.so/docs/api/tags/get-tag) and [Update a tag](https://clik.so/docs/api/tags/update-tag) return the real `link_count`, not `0`.
* With a key, [Get bootstrap](https://clik.so/docs/api/workspace/get-bootstrap) returns `subscription.subscription_id` as `null`, and pending invitations come without a token.

### Developer docs

* These docs went live at [clik.so/docs](https://clik.so/docs), with an [API reference](https://clik.so/docs/api) for every endpoint a key can call.
* Each page has examples in nine languages and a Markdown copy.

### The API is on every plan

* API keys now work on every plan, including Free.
* A Free workspace can hold 3 keys. Keys you already have keep working, even above that number.

### Click analytics for API keys

* Three new endpoints: [click summary](https://clik.so/docs/api/analytics/get-analytics-summary), [clicks over time](https://clik.so/docs/api/analytics/get-analytics-timeseries) and [raw clicks](https://clik.so/docs/api/analytics/list-clicks).
* They have their own quota per workspace, per minute and per UTC day. On Free that is 5 a minute and 100 a day. See [Limits](https://clik.so/docs/limits).
* The AI analytics chat stays in the dashboard. It is not part of the API.

### Plan features are checked for API keys

* **Can affect working code.** Fields that need a paid plan now return `402 UPGRADE_REQUIRED` when a key sets them on a plan without the feature.
* Starter and up: passwords, tracking pixels and custom social previews.
* Pro and up: country rules, device rules and A/B tests.
* Creating a folder or tag past your plan's count also returns `402`.
* On an update, sending a value the link already has, or clearing a field, always works.

### Link passwords stay in the dashboard

* **Can affect working code.** `GET /links/{id}/password` no longer accepts API keys. It returns `403 API_KEY_NOT_ALLOWED`.
* Links still show `has_password`, and you can still set or clear a password.

## September 2026

### Rate limits by plan

* **Can affect working code.** The per-key limit now depends on the plan: 30 requests a minute on Free, 100 on Starter, 300 on Pro and 500 on Business.
* Over the limit you get `429 RATE_LIMITED` with a `Retry-After` header.

### A cap on API keys per plan

* Each plan now has a limit on how many keys a workspace can hold. It only applies when you create a key.
* Revoked keys do not count toward it.

## Good to know

* Responses only ever gain fields. Your code should ignore fields it does not know.
* Error codes are stable. New codes may be added; existing ones keep their meaning.
* The full contract is the [API reference](https://clik.so/docs/api).

---

Source: https://clik.so/docs/changelog
