Links

Operations around Links management.

Endpoints

GET /api/links
POST /api/links
GET /api/links/:linkId
POST /api/links/:linkId
DELETE /api/links/:linkId

Returns all user links.

Parameters

ParameterTypeDescription
searchstring(optional) Search text.
pagenumber(optional, default 1) Determines page.
pageSizenumber(optional) Determines how many results to return.

Sample response

{
  "data": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "name": "umami",
      "url": "https://www.umami.is",
      "slug": "xxxxxxxx",
      "userId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "teamId": null,
      "createdAt": "2025-10-27T18:49:39.383Z",
      "updatedAt": "2025-10-27T18:49:39.383Z",
      "deletedAt": null
    }
  ],
  "count": 1,
  "page": 1,
  "pageSize": 20
}

POST /api/links

Creates a link.

Parameters

ParameterTypeDescription
namestringThe link's name.
urlstringThe link's destination URL.
slugstringThe link's URL slug (minimum 8 characters).
teamIdstring(optional) The ID of the team the link will be created under.

Request body

{
  "name": "umami",
  "url": "https://www.umami.is",
  "slug": "umami123"
}

Sample response

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "name": "umami",
  "url": "https://www.umami.is",
  "slug": "umami123",
  "userId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "teamId": null,
  "createdAt": "2025-10-27T18:49:39.383Z",
  "updatedAt": "2025-10-27T18:49:39.383Z",
  "deletedAt": null
}

GET /api/links/:linkId

Gets a link by ID.

Sample response

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "name": "umami",
  "url": "https://www.umami.is",
  "slug": "xxxxxxxx",
  "userId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "teamId": null,
  "createdAt": "2025-10-27T18:49:39.383Z",
  "updatedAt": "2025-10-27T18:49:39.383Z",
  "deletedAt": null
}

POST /api/links/:linkId

Updates a link.

Parameters

ParameterTypeDescription
namestring(optional) The link's name.
urlstring(optional) The link's destination URL.
slugstring(optional) The link's URL slug (minimum 8 characters).

Request body

{
  "name": "umami",
  "url": "https://www.umami.is"
}

Sample response

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "name": "umami",
  "url": "https://www.umami.is",
  "slug": "xxxxxxxx",
  "userId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "teamId": null,
  "createdAt": "2025-10-27T18:49:39.383Z",
  "updatedAt": "2025-10-30T23:06:01.824Z",
  "deletedAt": null
}

DELETE /api/links/:linkId

Deletes a link.

Sample response

{
  "ok": true
}