Weblate Hooks API
Notification hooks allow external applications to notify Weblate that the VCS repository has been updated. You can use repository endpoints for projects, components and translations to update individual repositories.
Notification hooks allow external applications to notify Weblate that the VCS repository has been updated. You can use repository endpoints for projects, components and translations to update individual repositories.
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-hooks-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 Hooks API
version: ''
x-logo:
url: /static/weblate.svg
description: 'The API is accessible on the ``/api/`` URL and it is based on Django REST framework.
The OpenAPI specification is available as feature preview, feedback welcome!
## Authorization
-->'
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: Hooks
description: 'Notification hooks allow external applications to notify Weblate that the VCS repository has been updated.
You can use repository endpoints for projects, components and translations to update individual repositories.'
paths:
/hooks/{service}/:
post:
operationId: hooks_incoming
description: Process incoming webhook from a code hosting site.
parameters:
- in: path
name: service
schema:
type: string
enum:
- azure
- bitbucket
- forgejo
- gitea
- gitee
- github
- gitlab
- pagure
required: true
tags:
- Hooks
security:
- {}
responses:
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse400'
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: ''
'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/HookResponse'
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'
summary: Hooks incoming
x-summary-source: derived
components:
schemas:
ErrorCode423Enum:
enum:
- repository-locked
- component-locked
- unknown-locked
type: string
description: '* `repository-locked` - Repository Locked
* `component-locked` - Component Locked
* `unknown-locked` - Unknown Locked'
Error406:
type: object
properties:
code:
$ref: '#/components/schemas/ErrorCode406Enum'
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
Error423:
type: object
properties:
code:
$ref: '#/components/schemas/ErrorCode423Enum'
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
ErrorCode404Enum:
enum:
- not_found
type: string
description: '* `not_found` - Not Found'
HookMatch:
type: object
properties:
repository_matches:
type: integer
branch_matches:
type: integer
enabled_hook_matches:
type: integer
required:
- branch_matches
- enabled_hook_matches
- repository_matches
Error500:
type: object
properties:
code:
$ref: '#/components/schemas/ErrorCode500Enum'
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
ErrorResponse404:
type: object
properties:
type:
$ref: '#/components/schemas/ClientErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error404'
required:
- errors
- type
ServerErrorEnum:
enum:
- server_error
type: string
description: '* `server_error` - Server Error'
StatusEnum:
enum:
- success
- failure
type: string
description: '* `success` - success
* `failure` - failure'
ErrorCode405Enum:
enum:
- method_not_allowed
type: string
description: '* `method_not_allowed` - Method Not Allowed'
Error404:
type: object
properties:
code:
$ref: '#/components/schemas/ErrorCode404Enum'
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
ErrorResponse405:
type: object
properties:
type:
$ref: '#/components/schemas/ClientErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error405'
required:
- errors
- type
ClientErrorEnum:
enum:
- client_error
type: string
description: '* `client_error` - Client Error'
ErrorResponse500:
type: object
properties:
type:
$ref: '#/components/schemas/ServerErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error500'
required:
- errors
- type
ErrorResponse400:
type: object
properties:
type:
$ref: '#/components/schemas/ErrorResponse400TypeEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error400'
required:
- errors
- type
ErrorResponse406:
type: object
properties:
type:
$ref: '#/components/schemas/ClientErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error406'
required:
- errors
- type
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
ErrorCode500Enum:
enum:
- error
type: string
description: '* `error` - Error'
ErrorCode406Enum:
enum:
- not_acceptable
type: string
description: '* `not_acceptable` - Not Acceptable'
Error405:
type: object
properties:
code:
$ref: '#/components/schemas/ErrorCode405Enum'
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
HookResponse:
type: object
properties:
message:
type: string
maxLength: 200
status:
$ref: '#/components/schemas/StatusEnum'
match_status:
$ref: '#/components/schemas/HookMatch'
updated_components:
type: array
items:
type: string
format: uri
readOnly: true
required:
- message
- status
- updated_components
ErrorResponse400TypeEnum:
enum:
- validation_error
- client_error
type: string
description: '* `validation_error` - Validation Error
* `client_error` - Client Error'
ErrorResponse423:
type: object
properties:
type:
$ref: '#/components/schemas/ServerErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error423'
required:
- errors
- type
headers:
X-RateLimit-Remaining:
schema:
type: integer
description: Remaining number of requests to perform
required: true
X-RateLimit-Limit:
schema:
type: integer
description: Allowed number of requests to perform
required: true
X-RateLimit-Reset:
schema:
type: integer
description: Number of seconds until the rate-limit window resets
required: true
securitySchemes:
bearerAuth:
type: apiKey
in: header
name: Bearer
description: "Token-based authentication with required prefix `Bearer`.\n\n- Each user has a personal access token which they can get from their respective user profile. These tokens have the `wlu_` prefix.\n- It is possible to create project tokens whose access to the API is limited to operations to their associated project. These tokens have the `wlp_` prefix.\n "
cookieAuth:
type: apiKey
in: cookie
name: sessionid
description: Session-based authentication used when user is signed in.
tokenAuth:
type: apiKey
in: header
name: Token
description: "Token-based authentication with required prefix `Token`.\n\n- Each user has a personal access token which they can get from their respective user profile. These tokens have the `wlu_` prefix.\n- It is possible to create project tokens whose access to the API is limited to operations to their associated project. These tokens have the `wlp_` prefix.\n "
externalDocs:
url: https://docs.weblate.org/en/latest/index.html
description: Official Weblate documentation