openapi: 3.1.0 info: title: Lokalise API v2 description: | Lokalise REST API (APIv2) for the Lokalise translation management system. Resources include projects, keys, translations, files, contributors, languages, tasks, snapshots, branches, glossaries, webhooks, and orders. Authentication is via API token in the `X-Api-Token` header (OAuth 2 also supported). version: "2.0" contact: name: Lokalise Developers url: https://developers.lokalise.com/ license: name: Proprietary url: https://lokalise.com/legal/ servers: - url: https://api.lokalise.com/api2 description: Lokalise API v2 security: - ApiKeyAuth: [] tags: - name: Projects - name: Keys - name: Files paths: /projects: get: tags: [Projects] summary: List all projects operationId: listProjects parameters: - name: filter_team_id in: query schema: { type: integer } - name: filter_names in: query schema: { type: string } - name: include_statistics in: query schema: { type: integer, enum: [0, 1] } - name: include_settings in: query schema: { type: integer, enum: [0, 1] } - name: limit in: query schema: { type: integer } - name: page in: query schema: { type: integer } responses: '200': description: A list of projects content: application/json: schema: { type: object } post: tags: [Projects] summary: Create a project operationId: createProject requestBody: required: true content: application/json: schema: type: object required: [name, team_id] properties: name: { type: string } team_id: { type: integer } description: { type: string } languages: type: array items: { type: object } base_lang_iso: { type: string } project_type: type: string enum: - localization_files - paged_documents - content_integration - marketing - marketing_integrations is_segmentation_enabled: { type: boolean } responses: '200': description: The created project content: application/json: schema: { type: object } /projects/{project_id}: parameters: - name: project_id in: path required: true schema: { type: string } get: tags: [Projects] summary: Retrieve a project operationId: getProject responses: '200': description: The project content: application/json: schema: { type: object } delete: tags: [Projects] summary: Delete a project operationId: deleteProject responses: '200': description: Deletion confirmation content: application/json: schema: { type: object } /projects/{project_id}/keys: parameters: - name: project_id in: path required: true schema: { type: string } get: tags: [Keys] summary: List all keys operationId: listKeys parameters: - name: disable_references in: query schema: { type: integer, enum: [0, 1] } - name: include_comments in: query schema: { type: integer, enum: [0, 1] } - name: include_screenshots in: query schema: { type: integer, enum: [0, 1] } - name: include_translations in: query schema: { type: integer, enum: [0, 1] } - name: filter_tags in: query schema: { type: string } - name: filter_filenames in: query schema: { type: string } - name: filter_keys in: query schema: { type: string } - name: filter_key_ids in: query schema: { type: string } - name: filter_platforms in: query schema: { type: string } - name: filter_untranslated in: query schema: { type: integer, enum: [0, 1] } - name: filter_archived in: query schema: { type: string, enum: [exclude, include, only] } - name: pagination in: query schema: { type: string, enum: [offset, cursor] } - name: limit in: query schema: { type: integer } - name: page in: query schema: { type: integer } - name: cursor in: query schema: { type: string } responses: '200': description: A list of keys content: application/json: schema: { type: object } post: tags: [Keys] summary: Create keys operationId: createKeys requestBody: required: true content: application/json: schema: { type: object } responses: '200': description: Created keys content: application/json: schema: { type: object } /projects/{project_id}/keys/{key_id}: parameters: - name: project_id in: path required: true schema: { type: string } - name: key_id in: path required: true schema: { type: integer } get: tags: [Keys] summary: Retrieve a key operationId: getKey responses: '200': description: A key content: application/json: schema: { type: object } put: tags: [Keys] summary: Update a key operationId: updateKey requestBody: required: true content: application/json: schema: { type: object } responses: '200': description: Updated key content: application/json: schema: { type: object } delete: tags: [Keys] summary: Delete a key operationId: deleteKey responses: '200': description: Deletion result content: application/json: schema: { type: object } /projects/{project_id}/files/upload: parameters: - name: project_id in: path required: true schema: { type: string } post: tags: [Files] summary: Upload a file operationId: uploadFile requestBody: required: true content: application/json: schema: type: object required: [data, filename, lang_iso] properties: data: { type: string, description: Base64-encoded file content } filename: { type: string } lang_iso: { type: string } convert_placeholders: { type: boolean } detect_icu_plurals: { type: boolean } tags: type: array items: { type: string } replace_modified: { type: boolean } apply_tm: { type: boolean } cleanup_mode: { type: boolean } responses: '200': description: Upload accepted content: application/json: schema: { type: object } '202': description: Processing in background content: application/json: schema: { type: object } components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-Api-Token