Linkwarden Users API
The Users API from Linkwarden — 4 operation(s) for users.
The Users API from Linkwarden — 4 operation(s) for users.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/linkwarden:linkwarden-users-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: Linkwarden OpenAPI Documentation.
version: 1.0.0
title: Introduction Users API
license:
name: GNU Affero General Public License v3.0
url: https://www.gnu.org/licenses/agpl-3.0.html
tags:
- name: Users
paths:
/api/v1/users:
get:
security:
- bearerAuth: []
tags:
- Users
summary: Get a list of users
description: Retrieves a list of users.
operationId: getUsers
responses:
'200':
description: Successfully retrieved a list of users.
content:
application/json:
schema:
type: object
properties:
response:
type: array
items:
type: object
properties:
id:
type: integer
username:
type: string
email:
type:
- string
- 'null'
emailVerified:
type:
- string
- 'null'
subscriptions:
type:
- string
- 'null'
createdAt:
type: string
format: date-time
'401':
$ref: '#/components/responses/Unauthorized'
post:
tags:
- Users
summary: Create a new user
description: Registers a new user.
operationId: createUser
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The user's name.
maxLength: 50
password:
type: string
description: The user's password, must be at least 8 characters long.
minLength: 8
maxLength: 2048
email:
type: string
format: email
description: The user's email address, optional based on environment variables.
username:
type: string
description: The user's username, optional if email is provided.
pattern: ^[a-z0-9_-]{3,50}$
minLength: 3
maxLength: 50
invite:
type: boolean
description: Optional flag for invitations.
responses:
'200':
description: Successfully created the user.
content:
application/json:
schema:
type: object
properties:
response:
type: object
properties:
id:
type: integer
name:
type: string
username:
type: string
email:
type:
- string
- 'null'
emailVerified:
type:
- string
- 'null'
unverifiedNewEmail:
type:
- string
- 'null'
image:
type:
- string
- 'null'
locale:
type: string
parentSubscriptionId:
type:
- string
- 'null'
collectionOrder:
type: array
items:
type: integer
linksRouteTo:
type: string
preventDuplicateLinks:
type: boolean
archiveAsScreenshot:
type: boolean
archiveAsMonolith:
type: boolean
archiveAsPDF:
type: boolean
archiveAsWaybackMachine:
type: boolean
isPrivate:
type: boolean
referredBy:
type:
- string
- 'null'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/users/me:
get:
security:
- bearerAuth: []
tags:
- Users
summary: Get the current authenticated user
operationId: getCurrentUser
responses:
'200':
description: Current user retrieved successfully.
content:
application/json:
schema:
type: object
properties:
response:
type: object
properties:
id:
type: integer
name:
type:
- string
- 'null'
username:
type: string
email:
type:
- string
- 'null'
image:
type: string
locale:
type: string
dashboardSections:
type: array
items:
type: object
subscription:
type: object
parentSubscription:
type: object
hasUnIndexedLinks:
type: boolean
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/users/{id}:
get:
security:
- bearerAuth: []
tags:
- Users
summary: Get a user by ID
description: Returns the authenticated user's account data. Non-admin users may only request their own ID.
operationId: getUser
parameters:
- name: id
in: path
required: true
description: The ID of the user to retrieve.
schema:
type: integer
responses:
'200':
description: User retrieved successfully.
content:
application/json:
schema:
type: object
properties:
response:
type: object
properties:
id:
type: integer
name:
type:
- string
- 'null'
username:
type: string
email:
type:
- string
- 'null'
image:
type: string
locale:
type: string
dashboardSections:
type: array
items:
type: object
subscription:
type: object
parentSubscription:
type: object
hasUnIndexedLinks:
type: boolean
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
security:
- bearerAuth: []
tags:
- Users
summary: Update a user's account details
description: Updates the details of an existing user account.
operationId: updateUser
parameters:
- name: id
in: path
required: true
description: The ID of the user to be updated.
schema:
type: integer
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
maxLength: 50
example: John Doe
email:
type:
- string
- 'null'
format: email
example: john.doe@example.com
username:
type: string
minLength: 3
maxLength: 30
pattern: ^[a-z0-9_-]{3,30}$
example: user1
image:
type:
- string
- 'null'
example: path/to/image.jpg
password:
type:
- string
- 'null'
minLength: 8
maxLength: 2048
newPassword:
type:
- string
- 'null'
minLength: 8
maxLength: 2048
oldPassword:
type:
- string
- 'null'
minLength: 8
maxLength: 2048
archiveAsScreenshot:
type:
- boolean
- 'null'
archiveAsPDF:
type:
- boolean
- 'null'
archiveAsMonolith:
type:
- boolean
- 'null'
archiveAsWaybackMachine:
type:
- boolean
- 'null'
locale:
type:
- string
- 'null'
maxLength: 20
isPrivate:
type:
- boolean
- 'null'
preventDuplicateLinks:
type:
- boolean
- 'null'
collectionOrder:
type:
- array
- 'null'
items:
type: integer
linksRouteTo:
type:
- string
- 'null'
enum:
- ORIGINAL
- CUSTOM
whitelistedUsers:
type:
- array
- 'null'
items:
type: string
maxLength: 50
referredBy:
type:
- string
- 'null'
maxLength: 100
responses:
'200':
description: Successfully updated the user's account details.
content:
application/json:
schema:
type: object
properties:
response:
type: object
properties:
id:
type: integer
example: 1
name:
type: string
example: John Doe
username:
type: string
example: user1
email:
type:
- string
- 'null'
emailVerified:
type:
- string
- 'null'
image:
type: string
example: ''
locale:
type: string
example: en
collectionOrder:
type: array
items:
type: integer
example: []
linksRouteTo:
type: string
example: ORIGINAL
preventDuplicateLinks:
type: boolean
example: false
archiveAsScreenshot:
type: boolean
example: true
archiveAsMonolith:
type: boolean
example: true
archiveAsPDF:
type: boolean
example: true
archiveAsWaybackMachine:
type: boolean
example: false
isPrivate:
type: boolean
example: false
referredBy:
type:
- string
- 'null'
createdAt:
type: string
format: date-time
example: '2024-12-01T22:04:16.492Z'
updatedAt:
type: string
format: date-time
example: '2024-12-01T22:14:05.742Z'
whitelistedUsers:
type: array
items:
type: string
example: []
subscription:
type: object
properties: {}
parentSubscription:
type: object
properties:
user:
type: object
properties: {}
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
delete:
security:
- bearerAuth: []
tags:
- Users
summary: Delete a user account
description: Deletes a user account and all related data.
operationId: deleteUser
parameters:
- name: id
in: path
required: true
description: The ID of the user to be deleted.
schema:
type: integer
responses:
'200':
description: Successfully deleted the user account and all related data.
content:
application/json:
schema:
type: object
properties:
response:
type: string
example: User account and all related data deleted successfully.
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/users/{id}/preference:
put:
security:
- bearerAuth: []
tags:
- Users
summary: Update user reading and theme preferences
operationId: updateUserPreference
parameters:
- name: id
in: path
required: true
description: The ID of the user whose preferences should be updated.
schema:
type: integer
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
theme:
type: string
enum:
- dark
- light
- auto
readableFontFamily:
type: string
maxLength: 100
readableFontSize:
type: string
maxLength: 100
readableLineHeight:
type: string
maxLength: 100
readableLineWidth:
type: string
maxLength: 100
responses:
'200':
description: User preferences updated successfully.
content:
application/json:
schema:
type: object
properties:
response:
type: object
properties:
id:
type: integer
theme:
type: string
readableFontFamily:
type:
- string
- 'null'
readableFontSize:
type:
- string
- 'null'
readableLineHeight:
type:
- string
- 'null'
readableLineWidth:
type:
- string
- 'null'
dashboardSections:
type: array
items:
type: object
subscription:
type: object
parentSubscription:
type: object
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
components:
responses:
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest:
description: Bad request error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
schemas:
ErrorResponse:
type: object
properties:
response:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT