Languages
Language management endpoints.
Base path: /api/v1/languages
List Languages
Required permission: languages:read
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page |
int | 1 |
Page number |
per_page |
int | 20 |
Items per page |
code |
string | — | Filter by language code (case-insensitive) |
name |
string | — | Filter by language name (case-insensitive) |
is_active |
boolean | — | Filter by active status |
Response 200 OK
{
"data": [
{
"id": "uuid",
"code": "en",
"name": "English",
"is_default": true,
"is_active": true,
"created_at": "2026-01-01T00:00:00Z",
"updated_at": null
}
],
"pagination": {
"total": 3,
"page": 1,
"per_page": 20,
"pages": 1,
"has_next": false,
"has_prev": false
}
}
Get Active Languages
Returns only active languages. No pagination — intended for use in dropdowns and selectors.
Required permission: languages:read
Response 200 OK
Create Language
Required permission: languages:create
Request body
| Field | Type | Required | Constraints |
|---|---|---|---|
code |
string | ✅ | 2–10 characters |
name |
string | ✅ | 2–100 characters |
is_default |
bool | ❌ | Default: false |
is_active |
bool | ❌ | Default: true |
Response 201 Created — full LanguageResponse object.
Info
If this is the first language created, it is automatically set as default regardless of the is_default field.
If is_default is true, all other languages lose their default status.
Errors
| Status | Description |
|---|---|
409 |
Language code already exists |
Get Language
Required permission: languages:read
Response 200 OK — full LanguageResponse object.
Errors
| Status | Description |
|---|---|
404 |
Language not found |
Update Language
Required permission: languages:update
Request body — all fields optional
Response 200 OK — updated LanguageResponse object.
Errors
| Status | Description |
|---|---|
400 |
Cannot deactivate the default language |
404 |
Language not found |
Set Default Language
Sets a language as the system default. Only one language can be default at a time.
Required permission: languages:update
Response 200 OK — updated LanguageResponse object.
Errors
| Status | Description |
|---|---|
400 |
Language is already the default |
400 |
Cannot set inactive language as default |
404 |
Language not found |
Delete Language
Soft-deletes a language.
Required permission: languages:delete
Response 204 No Content
Errors
| Status | Description |
|---|---|
400 |
Cannot delete the default language |
404 |
Language not found |