Weblate contributions API
The contributions API from Weblate — 1 operation(s) for contributions.
The contributions API from Weblate — 1 operation(s) for contributions.
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/weblate-contributions-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:
title: Weblate's REST Contributions API
version: ''
x-logo:
url: /static/weblate.svg
description: "\nThe API is accessible on the ``/api/`` URL and it is based on [Django REST framework](https://www.django-rest-framework.org/).\n\nThe OpenAPI specification is available as feature preview, feedback welcome!\n\n## Authorization\n\n<!-- Redoc-Inject: <security-definitions> -->\n\n\n "
license:
name: GNU General Public License v3 or later
url: https://docs.weblate.org/en/latest/contributing/license.html
servers:
- url: 'http:'
description: Weblate
tags:
- name: contributions
paths:
/api/users/{username}/contributions/:
get:
operationId: api_users_contributions_list
description: List translation contributions of a user.
parameters:
- in: query
name: id
schema:
type: integer
- in: query
name: is_active
schema:
type: boolean
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- in: path
name: username
schema:
type: string
pattern: ^[^/]+$
required: true
- in: query
name: username
schema:
type: string
tags:
- contributions
security:
- tokenAuth: []
- bearerAuth: []
- cookieAuth: []
- {}
responses:
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse400'
description: ''
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse401'
examples:
AuthenticationFailed:
value:
type: client_error
errors:
- code: authentication_failed
detail: Incorrect authentication credentials.
attr: null
NotAuthenticated:
value:
type: client_error
errors:
- code: not_authenticated
detail: Authentication credentials were not provided.
attr: null
description: ''
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse403'
examples:
PermissionDenied:
value:
type: client_error
errors:
- code: permission_denied
detail: You do not have permission to perform this action.
attr: null
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse404'
examples:
NotFound:
value:
type: client_error
errors:
- code: not_found
detail: Not found.
attr: null
description: ''
'405':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse405'
examples:
MethodNotAllowed:
value:
type: client_error
errors:
- code: method_not_allowed
detail: Method "get" not allowed.
attr: null
description: ''
'406':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse406'
examples:
NotAcceptable:
value:
type: client_error
errors:
- code: not_acceptable
detail: Could not satisfy the request Accept header.
attr: null
description: ''
'423':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse423'
description: ''
'429':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse429'
examples:
Throttled:
value:
type: client_error
errors:
- code: throttled
detail: Request was throttled.
attr: null
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse500'
examples:
APIException:
value:
type: server_error
errors:
- code: error
detail: A server error occurred.
attr: null
description: ''
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedTranslationList'
description: ''
headers:
X-RateLimit-Limit:
$ref: '#/components/headers/X-RateLimit-Limit'
X-RateLimit-Remaining:
$ref: '#/components/headers/X-RateLimit-Remaining'
X-RateLimit-Reset:
$ref: '#/components/headers/X-RateLimit-Reset'
components:
schemas:
CommitPolicyEnum:
enum:
- 0
- 20
- 30
type: integer
description: '* `0` - Commit all translations regardless of quality
* `20` - Skip translations marked as needing editing
* `30` - Only include approved translations'
Error406:
type: object
properties:
code:
$ref: '#/components/schemas/ErrorCode406Enum'
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
Error400:
type: object
properties:
code:
type: string
description: Error code. The examples list common validation and parse error codes.
examples:
- blank
- date
- datetime
- does_not_exist
- empty
- incorrect_match
- incorrect_type
- invalid
- invalid_choice
- invalid_image
- invalid_list
- make_aware
- max_length
- max_string_length
- max_value
- min_value
- no_match
- no_name
- not_a_list
- 'null'
- null_characters_not_allowed
- overflow
- parse_error
- required
- surrogate_characters_not_allowed
- unique
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
LanguagePlural:
type: object
properties:
id:
type: integer
readOnly: true
source:
allOf:
- $ref: '#/components/schemas/SourceEnum'
title: Plural definition source
minimum: -32768
maximum: 32767
number:
type: integer
maximum: 10
minimum: 1
title: Number of plurals
formula:
type: string
title: Plural formula
type:
type: integer
readOnly: true
title: Plural type
required:
- id
- type
ErrorResponse400TypeEnum:
enum:
- validation_error
- client_error
type: string
description: '* `validation_error` - Validation Error
* `client_error` - Client Error'
MergeStyleEnum:
enum:
- merge
- rebase
- merge_noff
type: string
description: '* `merge` - Merge
* `rebase` - Rebase
* `merge_noff` - Merge without fast-forward'
NewLangEnum:
enum:
- contact
- url
- add
- none
type: string
description: '* `contact` - Contact maintainers
* `url` - Point to translation instructions URL
* `add` - Create new language file
* `none` - Disable adding new translations'
Error423:
type: object
properties:
code:
$ref: '#/components/schemas/ErrorCode423Enum'
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
ErrorCode500Enum:
enum:
- error
type: string
description: '* `error` - Error'
ErrorResponse423:
type: object
properties:
type:
$ref: '#/components/schemas/ServerErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error423'
required:
- errors
- type
PriorityEnum:
enum:
- 60
- 80
- 100
- 120
- 140
type: integer
description: '* `60` - Very high
* `80` - High
* `100` - Medium
* `120` - Low
* `140` - Very low'
SourceEnum:
enum:
- 0
- 1
- 3
- 4
- 5
- 6
- 2
type: integer
description: '* `0` - Default plural
* `1` - gettext plural formula
* `3` - CLDR plural with zero
* `4` - CLDR v38+ plural
* `5` - Android plural
* `6` - Qt Linguist plural
* `2` - Manually entered formula'
ErrorResponse429:
type: object
properties:
type:
$ref: '#/components/schemas/ClientErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error429'
required:
- errors
- type
ServerErrorEnum:
enum:
- server_error
type: string
description: '* `server_error` - Server Error'
LanguageCodeStyleEnum:
enum:
- posix
- posix_lowercase
- bcp
- posix_long
- posix_long_lowercase
- bcp_long
- bcp_legacy
- bcp_lower
- android
- appstore
- googleplay
- linux
- linux_lowercase
type: string
description: '* `` - Default based on the file format
* `posix` - POSIX style using underscore as a separator
* `posix_lowercase` - POSIX style using underscore as a separator, lower cased
* `bcp` - BCP style using hyphen as a separator
* `posix_long` - POSIX style using underscore as a separator, including country code
* `posix_long_lowercase` - POSIX style using underscore as a separator, including country code, lower cased
* `bcp_long` - BCP style using hyphen as a separator, including country code
* `bcp_legacy` - BCP style using hyphen as a separator, legacy language codes
* `bcp_lower` - BCP style using hyphen as a separator, lower cased
* `android` - Android style
* `appstore` - Apple App Store metadata style
* `googleplay` - Google Play metadata style
* `linux` - Linux style
* `linux_lowercase` - Linux style, lower cased'
BlankEnum:
enum:
- ''
Project:
type: object
properties:
name:
type: string
title: Project name
description: Display name
maxLength: 60
slug:
type: string
title: URL slug
description: Name used in URLs and filenames.
maxLength: 60
pattern: ^[-a-zA-Z0-9_]+$
id:
type: integer
readOnly: true
web:
type: string
format: uri
title: Project website
description: Main website of translated project.
maxLength: 200
web_url:
type: string
readOnly: true
url:
type: string
format: uri
readOnly: true
check_flags:
type: string
title: Translation flags
description: Additional comma-separated flags to influence Weblate behavior.
effective_check_flags:
type: string
readOnly: true
components_list_url:
type: string
format: uri
readOnly: true
repository_url:
type: string
format: uri
readOnly: true
statistics_url:
type: string
format: uri
readOnly: true
categories_url:
type: string
format: uri
readOnly: true
changes_list_url:
type: string
format: uri
readOnly: true
languages_url:
type: string
format: uri
readOnly: true
labels_url:
type: string
format: uri
readOnly: true
credits_url:
type: string
format: uri
readOnly: true
lock_url:
type: string
format: uri
readOnly: true
translation_review:
type: boolean
title: Enable reviews
description: Requires dedicated reviewers to approve translations.
source_review:
type: boolean
title: Enable source reviews
description: Requires dedicated reviewers to approve source strings.
commit_policy:
allOf:
- $ref: '#/components/schemas/CommitPolicyEnum'
title: Translation quality filter
description: 'Select which translations should be included when committing changes. More restrictive options will skip translations with potential quality issues.
* `0` - Commit all translations regardless of quality
* `20` - Skip translations marked as needing editing
* `30` - Only include approved translations'
minimum: -2147483648
maximum: 2147483647
workspace:
type:
- string
- 'null'
format: uuid
instructions:
type: string
title: Translation instructions
description: You can use Markdown and mention users by @username.
enable_hooks:
type: boolean
description: Whether to allow updating this repository by remote hooks.
language_aliases:
type: string
description: 'Comma-separated list of language code mappings, for example: en_GB:en,en_US:en'
license:
title: Translation license
type: string
maxLength: 150
examples:
- MIT
- GPL-3.0-or-later
- Apache-2.0
- BSD-3-Clause
- proprietary
inherit_license:
type: boolean
title: Inherit translation license
description: Use the translation license configured in the workspace.
effective_license:
type: string
readOnly: true
agreement:
type: string
title: Contributor license agreement
description: Contributor license agreement which needs to be approved before a user can translate components in this project.
inherit_agreement:
type: boolean
title: Inherit contributor license agreement
description: Use the contributor license agreement configured in the workspace.
effective_agreement:
type: string
readOnly: true
new_lang:
allOf:
- $ref: '#/components/schemas/NewLangEnum'
title: Adding new translation
description: 'How to handle requests for creating new translations.
* `contact` - Contact maintainers
* `url` - Point to translation instructions URL
* `add` - Create new language file
* `none` - Disable adding new translations'
inherit_new_lang:
type: boolean
title: Inherit adding new translations
description: Use the adding new translations setting configured in the workspace.
effective_new_lang:
type: string
readOnly: true
language_code_style:
description: 'Customize language code used to generate the filename for translations created by Weblate.
* `` - Default based on the file format
* `posix` - POSIX style using underscore as a separator
* `posix_lowercase` - POSIX style using underscore as a separator, lower cased
* `bcp` - BCP style using hyphen as a separator
* `posix_long` - POSIX style using underscore as a separator, including country code
* `posix_long_lowercase` - POSIX style using underscore as a separator, including country code, lower cased
* `bcp_long` - BCP style using hyphen as a separator, including country code
* `bcp_legacy` - BCP style using hyphen as a separator, legacy language codes
* `bcp_lower` - BCP style using hyphen as a separator, lower cased
* `android` - Android style
* `appstore` - Apple App Store metadata style
* `googleplay` - Google Play metadata style
* `linux` - Linux style
* `linux_lowercase` - Linux style, lower cased'
oneOf:
- $ref: '#/components/schemas/LanguageCodeStyleEnum'
- $ref: '#/components/schemas/BlankEnum'
inherit_language_code_style:
type: boolean
description: Use the language code style configured in the workspace.
effective_language_code_style:
type: string
readOnly: true
secondary_language:
type:
- integer
- 'null'
description: Additional language to show together with the source language while translating.
inherit_secondary_language:
type: boolean
description: Use the secondary language configured in the workspace.
effective_secondary_language:
type:
- integer
- 'null'
readOnly: true
commit_message:
type: string
title: Commit message when translating
description: You can use template language for various info, please consult the documentation for more details.
inherit_commit_message:
type: boolean
title: Inherit commit message when translating
description: Use the commit message when translating configured in the workspace.
effective_commit_message:
type: string
readOnly: true
add_message:
type: string
title: Commit message when adding translation
description: You can use template language for various info, please consult the documentation for more details.
inherit_add_message:
type: boolean
title: Inherit commit message when adding translation
description: Use the commit message when adding translation configured in the workspace.
effective_add_message:
type: string
readOnly: true
delete_message:
type: string
title: Commit message when removing translation
description: You can use template language for various info, please consult the documentation for more details.
inherit_delete_message:
type: boolean
title: Inherit commit message when removing translation
description: Use the commit message when removing translation configured in the workspace.
effective_delete_message:
type: string
readOnly: true
merge_message:
type: string
title: Commit message when merging translation
description: You can use template language for various info, please consult the documentation for more details.
inherit_merge_message:
type: boolean
title: Inherit commit message when merging translation
description: Use the commit message when merging translation configured in the workspace.
effective_merge_message:
type: string
readOnly: true
addon_message:
type: string
title: Commit message when add-on makes a change
description: You can use template language for various info, please consult the documentation for more details.
inherit_addon_message:
type: boolean
title: Inherit commit message when add-on makes a change
description: Use the commit message when add-on makes a change configured in the workspace.
effective_addon_message:
type: string
readOnly: true
pull_message:
type: string
title: Merge request message
description: You can use template language for various info, please consult the documentation for more details.
inherit_pull_message:
type: boolean
title: Inherit merge request message
description: Use the merge request message configured in the workspace.
effective_pull_message:
type: string
readOnly: true
enforced_2fa:
type: boolean
title: Enforced two-factor authentication
description: Requires contributors to have two-factor authentication configured before being able to contribute.
machinery_settings:
type: string
format: uri
readOnly: true
locked:
type: boolean
readOnly: true
announcements_url:
type: string
format: uri
readOnly: true
required:
- announcements_url
- categories_url
- changes_list_url
- components_list_url
- credits_url
- effective_add_message
- effective_addon_message
- effective_agreement
- effective_check_flags
- effective_commit_message
- effective_delete_message
- effective_language_code_style
- effective_license
- effective_merge_message
- effective_new_lang
- effective_pull_message
- effective_secondary_language
- id
- labels_url
- languages_url
- lock_url
- locked
- machinery_settings
- name
- repository_url
- slug
- statistics_url
- url
- web
- web_url
ClientErrorEnum:
enum:
- client_error
type: string
description: '* `client_error` - Client Error'
ErrorResponse400:
type: object
properties:
type:
$ref: '#/components/schemas/ErrorResponse400TypeEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error400'
required:
- errors
- type
Component:
type: object
properties:
name:
type: string
title: Component name
description: Display name
maxLength: 100
slug:
type: string
title: URL slug
description: Name used in URLs and filenames.
maxLength: 100
pattern: ^[-a-zA-Z0-9_]+$
id:
type: integer
readOnly: true
source_language:
$ref: '#/components/schemas/Language'
project:
allOf:
- $ref: '#/components/schemas/Project'
readOnly: true
vcs:
allOf:
- $ref: '#/components/schemas/VcsEnum'
title: Version control system
description: 'Version control system to use to access your repository containing translations. You can also choose additional integration with third party providers to submit pull/merge requests.
* `gerrit` - Gerrit
* `git` - Git
* `git-force-push` - Git with force push
* `local` - No remote repository
* `mercurial` - Mercurial
* `subversion` - Subversion'
repo:
type: string
maxLength: 300
git_export:
type: string
title: Exported repository URL
description: URL of repository where users can fetch changes from Weblate
maxLength: 220
branch:
type: string
maxLength: 200
push_branch:
type: string
maxLength: 200
filemask:
type: string
title: File mask
description: 'Path of files to translate relative to repository root, use * instead of language code, for example: po/*.po or locale/*/LC_MESSAGES/django.po.'
maxLength: 400
screenshot_filemask:
type: string
title: Screenshot file mask
description: 'Path of screenshots relative to repository root, for example: docs/screenshots/*.png.'
maxLength: 400
template:
type: string
title: Monolingual base language file
description: Filename of translation base file, containing all strings and their source for monolingual translations.
maxLength: 400
edit_template:
type: boolean
title: Edit base file
description: Whether users will be able to edit the base file for monolingual translations.
intermediate:
type: string
title: Intermediate language file
description: Filename of intermediate translation file. In most cases this is a translation file provided by developers and is used when creating actual source strings.
maxLength: 400
new_base:
type: string
title: Template for new translations
description: Filename of file used for creating new translations. For gettext choose .pot file.
maxLength: 400
file_format:
$ref: '#/components/schemas/FileFormatEnum'
file_format_params:
title: File format parameters
license:
title: Translation license
type: string
maxLength: 150
examples:
- MIT
- GPL-3.0-or-later
- Apache-2.0
- BSD-3-Clause
- proprietary
inherit_license:
type: boolean
title: Inherit translation license
description: Use the translation license configured in the category or project.
effective_license:
type: string
readOnly: true
license_url:
type: string
readOnly: true
announcements_url:
type: string
format: uri
readOnly: true
agreement:
type: string
title: Contributor license agreement
description: Contributor license agreement which needs to be approved before a user can translate this component.
inherit_agreement:
type: boolean
title: Inherit contributor license agreement
description: Use the contributor license agreement configured in the category or project.
effective_agreement:
type: string
readOnly: true
web_url:
type: string
readOnly: true
url:
type: string
format: uri
readOnly: true
repository_url:
type: string
format: uri
readOnly: true
translations_url:
type: string
format: uri
readOnly: true
statistics_url:
type: string
format: uri
readOnly: true
lock_url:
type: string
format: uri
readOnly: true
links_url:
type: string
format: uri
readOnly: true
changes_list_url:
type: string
format: uri
readOnly: true
task_url:
type:
- string
- 'null'
format: uri
readOnly: true
credits_url:
type: string
format: uri
readOnly: true
new_lang:
allOf:
- $ref: '#/components/schemas/NewLangEnum'
title: Adding new translation
description: 'How to handle requests for creating new translations.
* `contact` - Contact maintainers
* `url` - Point to translation instructions URL
* `add` - Create new language file
* `none` - Disable adding new translations'
inherit_new_lang:
type: boolean
title: Inherit adding new translations
description: Use the adding new translations setting configured in the category or project.
effective_new_lang:
type: string
readOnly: true
language_code_style:
description: 'Customize language code used to generate the filename for translations created by Weblate.
* `` - Default based on the file format
* `posix` - POSIX style using underscore as a separator
* `posix_lowercase` - POSIX style using underscore as a separator, lower cased
* `bcp` - BCP style using hyphen as a separator
* `posix_long` - POSIX style using underscore as a separator, including country code
* `posix_long_lowercase` - POSIX style using underscore as a separator, including country code, lower cased
* `bcp_long` - BCP style using hyphen as a separator, including country code
* `bcp_legacy` - BCP style using hyphen as a separator, legacy language codes
* `bcp_lower` - BCP style using hyphen as a separator, lower cased
* `android` - Android style
* `appstore` - Apple App Store metadata style
* `googleplay` - Google Play metadata style
* `linux` - Linux style
* `linux_lowercase` - Linux style, lower cased'
oneOf:
- $ref: '#/components/schemas/LanguageCodeStyleEnum'
- $ref: '#/components/schemas/BlankEnum'
inherit_language_code_style:
type: boolean
description: Use the language code style configured in the category or project.
effective_language_code_style:
type: string
readOnly: true
push:
type: string
maxLength: 300
check_flags:
type: string
title: Translation flags
description: Additional comma-separated flags to influence Weblate behavior.
effective_check_flags:
type: string
readOnly: true
priority:
allOf:
- $ref: '#/components/schemas/PriorityEnum'
description: 'Components with higher priority are offered first to translators.
* `60` - Very high
* `80` - High
* `100` - Medium
* `120` - Low
* `140` - Very low'
minimum: -2147483648
maximum: 2147483647
enforced_checks: {}
restricted:
type: boolean
title: Restricted component
description: Restrict access to the component to only those explicitly given permission.
repoweb:
type: string
title: Repository browser
description: Link to repository browser, use {{branch}} for branch, {{filename}} and {{line}} as filename and line placeholders. You might want to strip leading directory by using {{filename|parentdir}}.
maxLength: 200
report_source_bugs:
type: string
title: Source string bug reporting address
description: E-mail address for reports on errors in source strings. Leave empty for no e-mails.
format: email
maxLength: 190
merge_style:
allOf:
- $ref: '#/components/schemas/MergeStyleEnum'
description: 'Define whether Weblate should merge the upstream repository or rebase changes onto it.
* `merge` - Merge
* `rebase` - Rebase
* `merge_noff` - Merge without fast-forward'
commit_message
# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/weblate/refs/heads/main/openapi/weblate-contributions-api-openapi.yml