---
title: "Add Bundle"
method: POST
path: "/projects/{projectId}/bundles"
tags: ["Translations"]
---

# Add Bundle

`POST /projects/{projectId}/bundles`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/projects/{projectId}/bundles`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-api-v2/docs/projects/:projectId/bundles/post.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `project.source.file` (Read and Write).

## Path parameters

- `projectId` integer, required

## Request body

- BundleCreateForm
  - `name` string, required: Defines name
  - `format` string: Defines export file format. If not provided, files will be exported in their original format. __Note:__ Required for strings-based projects
  - `sourcePatterns` string[], required: Source patterns
  - `ignorePatterns` string[]: Ignore patterns
  - `exportPattern` string, nullable: Bundle export pattern. Defines bundle name in resulting translations bundle. **Required** if `format` is specified. If `format` is not specified, uses default pattern based on file structure __Note:__ Can't contain `: * ? " < > |` symbols
  - `isMultilingual` boolean: Export translations in multilingual file
  - `includeProjectSourceLanguage` boolean: Add project source language to bundle
  - `sourceLanguageExportPattern` string: Source language export pattern. Works only when `includeProjectSourceLanguage` is enabled. __Note:__ Can't contain `: * ? " < > |` symbols
  - `includeInContextPseudoLanguage` boolean: Add In-Context pseudo-language to bundle
  - `labelIds` integer[]: Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany) __Note:__ Can't be used when `format` is `null`
  - `excludeLabelIds` integer[]: Label Identifiers. Get via [List Labels](#operation/api.projects.labels.getMany) __Note:__ Can't be used when `format` is `null`
  - `labelMatchRule` 'all' | 'any', nullable: Match rule for labels: - "all" - all labels must be present in string - "any" - any of the labels must be present in string __Note:__ Can only be used when `labelIds` parameter is provided
  - `excludeLabelMatchRule` 'all' | 'any', nullable: Match rule for excluded labels: - "all" - all labels must be present in string - "any" - any of the labels must be present in string __Note:__ Can only be used when `excludeLabelIds` parameter is provided
  - `languageIds` string[], nullable: Language Identifiers. Get via [List Supported Languages](#operation/api.languages.getMany). If provided, bundle will only export specified languages. If not provided, bundle will export all project target languages.

## Response `201`

Bundle was successfully created

- BundleResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` Bundle, required
    - `id` integer
    - `name` string
    - `format` string, nullable
    - `sourcePatterns` string[]
    - `ignorePatterns` string[]
    - `exportPattern` string, nullable
    - `isMultilingual` boolean
    - `includeProjectSourceLanguage` boolean
    - `includeInContextPseudoLanguage` boolean
    - `sourceLanguageExportPattern` string
    - `labelMatchRule` 'all' | 'any', nullable
    - `excludeLabelMatchRule` 'all' | 'any', nullable
    - `labelIds` integer[]
    - `excludeLabelIds` integer[]
    - `languageIds` string[], nullable
    - `webUrl` string
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project with specified id was not found
- `405`: Method Not Allowed

---

[API](https://skmtc.dev/crowdin/apis/crowdin-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-api-v2/revisions/27aae7751699?raw)
