Urlicer API v1

Changelog

Everything that has changed in v1, and how we treat changes that could break you.

The API is at version 1. Additions (a new endpoint, a new optional field, a new field in a response) arrive without a version bump, so write clients that ignore fields they do not recognise rather than rejecting them.

Anything that could break a working integration gets a new version instead, and v1 keeps answering. Entries below that could have affected an existing client are marked.

2026-08-17

The API is included in every plan, the free one included

It had been a paid feature. The same credential, the same endpoints and no time limit. What differs by plan is throughput, how many keys you may hold at once, and which link features a key may use. Per-minute budgets were re-laddered at the same time, and no plan lost any.

2026-08-16

A taken alias now answers 409 instead of 400

Could affect existing clients

Asking for a custom alias somebody already holds used to be reported as a malformed request, which told clients to give up when the right move is to try a different alias. It is now alias_taken with a 409, and the alias is named in the body. Clients that treated any 400 as fatal keep working; clients that want to retry can now tell the two apart.

2026-08-16

Writes made by a key appear in the workspace audit trail

Creating, updating and deleting through the API is recorded against the key's name rather than a person, since nobody was at a keyboard. Nothing about the API itself changed.

2026-07-22

PATCH /api/v1/links/{code}

Change a link's destination, set or clear an expiry or password, and switch a link off without deleting it. Only the fields present in the body change.

2026-07-22

X-RateLimit-Limit and X-RateLimit-Remaining on every response

Your remaining budget is now readable from any response instead of having to be inferred by running out.

2026-07-21

v1 launched

Create, list, read and delete links, plus bulk creation. Bearer key authentication, per-key rate limiting and the JSON error contract have been in place from this first release.

What will not change under you

  • A short link, once created, keeps resolving until you delete it.
  • A code never changes meaning. We do not reissue a deleted code to somebody else.
  • The error values on the errors page are stable identifiers. The human-readable messages beside them are not, so do not match on those.
  • Times stay unix seconds, in both directions.