# TextSetu > TextSetu — the translation management platform for localizing your product across every language. ## Docs - [TextSetu](https://docs.textsetu.com/index.md): The shared workspace where translators, reviewers, and developers manage every string — with approvals, a glossary, translation memory, quality checks, and 40+ import/export formats. - [Introduction](https://docs.textsetu.com/docs/introduction.md): What TextSetu is, who it's for, and how the platform fits together. - [Getting Started](https://docs.textsetu.com/docs/getting-started.md): From a brand-new account to your first translated key, in about ten minutes. - [Core Concepts](https://docs.textsetu.com/docs/concepts.md): The building blocks of TextSetu: organizations, projects, keys, values, glossary, and translation memory. - [Organizations & Teams](https://docs.textsetu.com/docs/guides/organizations-and-teams.md): Create an organization, invite people, and group them into teams. - [Roles & Permissions](https://docs.textsetu.com/docs/guides/roles-and-permissions.md): Role-based access control across organizations, projects, and teams. - [Projects](https://docs.textsetu.com/docs/guides/projects.md): Create and configure a project — the product surface you localize. - [Translating](https://docs.textsetu.com/docs/guides/translating.md): The translation grid: rows, columns, statuses, suggestions, and plurals. - [AI Translation](https://docs.textsetu.com/docs/guides/ai-translation.md): Draft translations automatically with Claude, GPT, Gemini, or DeepSeek using a reusable AI engine. - [Approval Workflow](https://docs.textsetu.com/docs/guides/approval-workflow.md): Gate translation changes so nothing goes live until a reviewer signs off. - [Branches](https://docs.textsetu.com/docs/guides/branches.md): Work on an isolated copy of a project's translations, then review and merge. - [History & Rollback](https://docs.textsetu.com/docs/guides/history-and-rollback.md): Every value keeps a full change history you can inspect and roll back. - [Glossary](https://docs.textsetu.com/docs/guides/glossary.md): Keep terminology consistent with approved terms, rules, and QA warnings. - [Translation Memory (TM)](https://docs.textsetu.com/docs/guides/translation-memory.md): Reuse previously translated segments so you translate each sentence once. - [Quality Checks (QA)](https://docs.textsetu.com/docs/guides/quality-checks.md): Automatic checks that flag likely translation mistakes before they ship. - [Import & Export](https://docs.textsetu.com/docs/guides/import-export.md): Bootstrap a project from existing files and pull finished translations back out. - [Webhooks](https://docs.textsetu.com/docs/guides/webhooks.md): Signed HTTP callbacks that tell your systems the moment something changes. - [App Store](https://docs.textsetu.com/docs/guides/integrations.md): Connect TextSetu to the tools your team already uses. - [GitHub Sync](https://docs.textsetu.com/docs/guides/github-sync.md): Keep a TextSetu project and a GitHub repository in step, automatically. - [Analytics & Activity](https://docs.textsetu.com/docs/guides/analytics-and-activity.md): Dashboards for where things stand, and activity logs for what happened. - [Settings Reference](https://docs.textsetu.com/docs/reference/settings.md): Every setting in TextSetu, grouped by where it lives, with defaults and effects. - [Supported File Formats](https://docs.textsetu.com/docs/reference/file-formats.md): The 40+ import and export formats TextSetu supports, listed by platform. - [Glossary of Terms](https://docs.textsetu.com/docs/reference/glossary-of-terms.md): A quick reference to the vocabulary used throughout TextSetu. - [Frequently Asked Questions](https://docs.textsetu.com/docs/reference/faq.md): Common questions about accounts, translating, workflow, and the API. - [TextSetu API](https://docs.textsetu.com/api/introduction.md): Authentication, scopes, conventions, and errors for the TextSetu REST API. - [MCP Server](https://docs.textsetu.com/api/mcp.md): Connect Claude, Cursor, VS Code, and other MCP clients to your translations. - [List supported formats](https://docs.textsetu.com/api/reference/meta/list-supported-formats.md): List every import/export file format the platform supports, with its id, name, file extensions, and whether it can carry multiple languages in one file. Use the returned `id` as the `format` in import/export calls — see the [file formats reference](/docs/reference/file-formats). Requires the `read`… - [Get project metadata](https://docs.textsetu.com/api/reference/projects/get-project-metadata.md): Fetch a project's core settings — name, source language, key separator, and whether approval is required. Useful for resolving the key separator before creating keys, or the source language before exporting. - [List project languages](https://docs.textsetu.com/api/reference/languages/list-project-languages.md): List the languages configured on the project, including which one is the source language. Each entry resolves its display label from the org language catalog. - [Add a language (manage)](https://docs.textsetu.com/api/reference/languages/add-a-language-manage.md): Add a language to the project. Standard codes resolve to the shared global language; a non-standard code is created as an org custom language. Requires the `manage` scope — adding a language is a project-management operation, above ordinary `write`. PATs need the PROJECT_MANAGE permission — see [rol… - [Per-language completeness](https://docs.textsetu.com/api/reference/stats/per-language-completeness.md): Return the project's total key count plus, for each language, how many keys are translated, missing, and the completion percentage. Pass `?branch=` to compute the stats against a branch overlay instead of main — see the [branching guide](/docs/guides/branches). - [List / search keys (paginated)](https://docs.textsetu.com/api/reference/translations/list-search-keys-paginated.md): Return a paginated page of a project's translation keys, each with its values across every language. Combine the query params to search by name or source text, filter by tag / status / outdated, and sort. Pass `?branch=` to read a branch's overlay instead of main — see the [branching guide](/docs/gu… - [Create a key (write)](https://docs.textsetu.com/api/reference/translations/create-a-key-write.md): Add a new key to the project. You may seed its values in one call via the `values` map. On a protected main branch, target a branch with `?branch=` instead — direct main writes are rejected. - [Get a key](https://docs.textsetu.com/api/reference/translations/get-a-key.md): Fetch a single key by id, with its values across all languages. With `?branch=` the branch overlay is returned and keys deleted on the branch are reported as not found. - [Delete a key (write)](https://docs.textsetu.com/api/reference/translations/delete-a-key-write.md): Permanently remove a key and all of its values. On a branch (`?branch=`) the deletion is staged as part of the branch diff and only takes effect on merge. On a protected main branch, direct deletes are rejected — target a branch. - [Update a key (write)](https://docs.textsetu.com/api/reference/translations/update-a-key-write.md): Partial update — omitted fields are left unchanged. On a branch (`?branch=`) the change is staged as a metadata delta rather than applied to main. - [Upsert a translation value (write)](https://docs.textsetu.com/api/reference/translations/upsert-a-translation-value-write.md): Set the translation for one key in one language, creating the value if it doesn't exist. If the project requires approval, a write by a non-approver lands as `pending_review`; approvers' writes are auto-approved — see the [approval workflow](/docs/guides/approval-workflow). Pass `?branch=` to stage… - [Import source/translation files (write)](https://docs.textsetu.com/api/reference/importexport/import-sourcetranslation-files-write.md): Additive import of parsed files. With `?branch=`, values are staged on the branch (no approval workflow) and plural forms are flattened to their `other` form (branch values are single-string). - [Export translations as per-language files](https://docs.textsetu.com/api/reference/importexport/export-translations-as-per-language-files.md): Render the project's translations to files in the chosen format — one file per language, with each file's contents base64-encoded in `contentBase64`. Use `?languages=` to export a subset and `?status=approved` to ship only approved strings; `?branch=` exports a branch's overlay. See the [import/expo… - [List branches](https://docs.textsetu.com/api/reference/branches/list-branches.md): List the project's translation branches, each with a diff summary against main. Requires branching to be enabled on the project — see the [branching guide](/docs/guides/branches). - [Create a branch (write)](https://docs.textsetu.com/api/reference/branches/create-a-branch-write.md): Create a new branch off main. Branch edits are staged as an overlay and only reach main on merge — see the [branching guide](/docs/guides/branches). - [Get a branch (with diff summary)](https://docs.textsetu.com/api/reference/branches/get-a-branch-with-diff-summary.md): Fetch a single branch by id, including its computed diff summary (keys added/deleted, values modified, languages added/deleted) against main. - [Delete a branch (write)](https://docs.textsetu.com/api/reference/branches/delete-a-branch-write.md): Permanently delete a branch and discard all of its staged (unmerged) changes. This is a hard delete and cannot be undone; main is unaffected. - [List merge conflicts on a branch](https://docs.textsetu.com/api/reference/branches/list-merge-conflicts-on-a-branch.md): List the merge conflicts recorded for a branch. Conflicts are populated by [starting a merge](/docs/guides/branches); an unresolved conflict blocks completing the merge. - [Resolve merge conflicts (write)](https://docs.textsetu.com/api/reference/branches/resolve-merge-conflicts-write.md): Record a resolution for one or more conflicts on this branch. Each resolution picks `main`, `branch`, or a `custom` value. Resolutions are scoped to this branch — a conflict id from another branch is rejected. `customValue` is used only when `resolution` is `custom` (an omitted customValue resolves… - [Start a merge — detect conflicts (write)](https://docs.textsetu.com/api/reference/branches/start-a-merge-—-detect-conflicts-write.md): Begin merging the branch into main. This recomputes and records conflicts against main's current state and reports how many changes will auto-merge. Resolve any returned conflicts, then call merge/complete — see the [branching guide](/docs/guides/branches). - [Complete a merge — apply the branch to main (write)](https://docs.textsetu.com/api/reference/branches/complete-a-merge-—-apply-the-branch-to-main-write.md): Apply the branch's changes to main and mark the branch merged. All conflicts must be resolved first — otherwise the request fails with 409. Returns a count of what was written to main. See the [branching guide](/docs/guides/branches). - [Look up glossary terms](https://docs.textsetu.com/api/reference/glossary/look-up-glossary-terms.md): Find the glossary terms that occur in one or more source strings, with their approved translations. Batched: pass every source string and every target language in one call. - [Check a translation against the glossary](https://docs.textsetu.com/api/reference/glossary/check-a-translation-against-the-glossary.md): Terminology QA for a proposed translation. Reports where a required term is missing, a forbidden or deprecated term was used, or a do-not-translate term was translated. - [List glossaries](https://docs.textsetu.com/api/reference/glossary/list-glossaries.md): List every glossary in the organization, each with its term and language counts. Use this to discover glossary ids for the management endpoints — see the [glossary guide](/docs/guides/glossary). - [Create a glossary](https://docs.textsetu.com/api/reference/glossary/create-a-glossary.md): Create a new glossary in the organization. Its `scope`, approval workflow, and QA severities can be set here or updated later. Add languages and terms in follow-up calls. - [Get a glossary](https://docs.textsetu.com/api/reference/glossary/get-a-glossary.md): Fetch a single glossary's settings and metadata by id. - [Delete a glossary](https://docs.textsetu.com/api/reference/glossary/delete-a-glossary.md): Permanently delete the glossary and all of its terms, translations, and language configuration. This cannot be undone. - [Update a glossary](https://docs.textsetu.com/api/reference/glossary/update-a-glossary.md): Partial update of a glossary's settings — omitted fields are left unchanged. Disabling `approvalRequired` also clears `approvalBypassAdmins`, which is meaningless without it. - [List glossary languages](https://docs.textsetu.com/api/reference/glossary/list-glossary-languages.md): List the languages configured on the glossary, each with its display label. - [Add a glossary language](https://docs.textsetu.com/api/reference/glossary/add-a-glossary-language.md): Add a target language to the glossary so terms can carry a translation in it. The language code is adopted into the org catalog if it isn't already present. - [List glossary terms](https://docs.textsetu.com/api/reference/glossary/list-glossary-terms.md): Return a paginated page of the glossary's terms, each with its per-language translations. Combine the query params to search by text, filter by language, status, or usage, and sort. - [Create a term](https://docs.textsetu.com/api/reference/glossary/create-a-term.md): Add a term to the glossary. Optionally supply `translations` as a `languageCode -> value` map. When the glossary requires approval, values you cannot approve are recorded as proposals — see the [glossary guide](/docs/guides/glossary). - [Get a term](https://docs.textsetu.com/api/reference/glossary/get-a-term.md): Fetch a single glossary term by id, with its per-language translations. - [Delete a term](https://docs.textsetu.com/api/reference/glossary/delete-a-term.md): Permanently remove a term and all of its translations from the glossary. - [Update a term](https://docs.textsetu.com/api/reference/glossary/update-a-term.md): Partial update of a term's metadata (text, notes, usage status, flags) — omitted fields are left unchanged. Use the translation endpoint to change values. - [Set a term translation](https://docs.textsetu.com/api/reference/glossary/set-a-term-translation.md): Upsert the translation of a term in one language, creating it if absent. When the glossary requires approval and you cannot approve, the value is stored as a proposal rather than applied — see the [approval workflow](/docs/guides/approval-workflow). - [Get fuzzy TM matches](https://docs.textsetu.com/api/reference/translation-memory/get-fuzzy-tm-matches.md): Fuzzy-match source strings against the translation memories that apply to this project, returning scored suggestions. Batched: pass every source string and every target language in one call. - [Concordance search](https://docs.textsetu.com/api/reference/translation-memory/concordance-search.md): Free-text search across the project's translation memories — *how has this word or phrase been translated before?* — returning the full segments that contain it. - [Pre-translate from TM](https://docs.textsetu.com/api/reference/translation-memory/pre-translate-from-tm.md): Apply TM matches to the project's untranslated strings in bulk (leverage). Runs asynchronously — poll the returned `jobId`. - [Get pre-translate job status](https://docs.textsetu.com/api/reference/translation-memory/get-pre-translate-job-status.md): Poll the progress of a pre-translate job started via `POST /tm/pretranslate`. Reports live progress and, on completion, how many values were written or skipped. - [List translation memories](https://docs.textsetu.com/api/reference/translation-memory/list-translation-memories.md): List every translation memory in the organization, each with its entry and language counts. This is a management endpoint — call it with a personal access token; project-scoped tokens are refused. - [Create a translation memory](https://docs.textsetu.com/api/reference/translation-memory/create-a-translation-memory.md): Create a new translation memory in the organization. `minMatchPercentage` (default 75, floor 40) is the threshold below which fuzzy matches from this TM are not surfaced. `penalties` deducts points for case / whitespace / trailing punctuation differences on otherwise-identical sources. - [Get a translation memory](https://docs.textsetu.com/api/reference/translation-memory/get-a-translation-memory.md): Fetch a single translation memory by id, including its match settings and penalties. - [Delete a translation memory](https://docs.textsetu.com/api/reference/translation-memory/delete-a-translation-memory.md): Permanently delete the TM together with all of its entries, translations, and project assignments. This cannot be undone. - [Update a translation memory](https://docs.textsetu.com/api/reference/translation-memory/update-a-translation-memory.md): Partial update — omitted fields are left unchanged. Set `rebaseSourceData: true` when changing `sourceLanguage` to also move existing entry data onto the new source. - [List TM languages](https://docs.textsetu.com/api/reference/translation-memory/list-tm-languages.md): List the target languages configured on this translation memory. - [Add a TM language](https://docs.textsetu.com/api/reference/translation-memory/add-a-tm-language.md): Add a target language to the translation memory so entries can store translations in it. - [List TM entries](https://docs.textsetu.com/api/reference/translation-memory/list-tm-entries.md): Return a paginated page of the TM's source entries, each with its per-language translations. Filter by source text, language, or translation status and sort as needed. - [Create a TM entry](https://docs.textsetu.com/api/reference/translation-memory/create-a-tm-entry.md): Add a source entry to the TM. Optionally supply `translations` as a `languageCode -> value` map to seed translations in one call. When the TM requires approval, values you cannot approve are recorded as proposals. - [Get a TM entry](https://docs.textsetu.com/api/reference/translation-memory/get-a-tm-entry.md): Fetch a single TM entry by id, with its translations across all languages. - [Delete a TM entry](https://docs.textsetu.com/api/reference/translation-memory/delete-a-tm-entry.md): Permanently remove a TM entry and all of its translations. - [Update a TM entry](https://docs.textsetu.com/api/reference/translation-memory/update-a-tm-entry.md): Update an entry's source text and/or context. Partial — omitted fields are left unchanged. To edit a translation value, use the entry-translation endpoint instead. - [Set a TM entry translation](https://docs.textsetu.com/api/reference/translation-memory/set-a-tm-entry-translation.md): Upsert the translation of an entry in one language, creating it if absent. When the TM requires approval and you cannot approve, the value is stored as a proposal on `proposedValue` rather than replacing the live value. - [Get the project's AI engine](https://docs.textsetu.com/api/reference/ai/get-the-projects-ai-engine.md): Report which AI engine this project resolves to (its explicit binding, else the org default) and whether AI translation is currently available. Use this before starting a run to confirm AI is set up and to learn how writes will land (`reviewPath`). - [Translate with AI (write)](https://docs.textsetu.com/api/reference/ai/translate-with-ai-write.md): Machine-translate the project's candidate keys into one or more target languages with the resolved engine. Runs asynchronously — poll the returned `jobId`. - [Get AI translation job status](https://docs.textsetu.com/api/reference/ai/get-ai-translation-job-status.md): Poll the progress of a run started via `POST /ai/translations`. Reports live progress and, on completion, how many values were written, skipped, or failed. - [List subscribable event types](https://docs.textsetu.com/api/reference/webhooks/list-subscribable-event-types.md): The catalog of events an endpoint can subscribe to, with a short description of when each fires. - [List webhook endpoints](https://docs.textsetu.com/api/reference/webhooks/list-webhook-endpoints.md): Every webhook endpoint registered on the project. - [Create a webhook endpoint](https://docs.textsetu.com/api/reference/webhooks/create-a-webhook-endpoint.md): Register an HTTPS URL to receive the events you subscribe it to. TextSetu generates a signing secret and returns it once. - [Get a webhook endpoint](https://docs.textsetu.com/api/reference/webhooks/get-a-webhook-endpoint.md): Fetch a single endpoint's configuration and health. - [Delete a webhook endpoint](https://docs.textsetu.com/api/reference/webhooks/delete-a-webhook-endpoint.md): Remove the endpoint. Its delivery history is removed with it; export anything you need first. - [Update a webhook endpoint](https://docs.textsetu.com/api/reference/webhooks/update-a-webhook-endpoint.md): Change the URL, description, event subscription, or enabled state. The signing secret is untouched — use the rotate endpoint for that. - [Rotate the signing secret](https://docs.textsetu.com/api/reference/webhooks/rotate-the-signing-secret.md): Issue a new signing secret. The previous secret keeps working for a grace period so you can roll over without dropping deliveries. - [Send a test event](https://docs.textsetu.com/api/reference/webhooks/send-a-test-event.md): Queue a `ping` event so you can confirm the endpoint is reachable and your signature verification works before relying on it. - [List webhook deliveries (paginated)](https://docs.textsetu.com/api/reference/webhooks/list-webhook-deliveries-paginated.md): The delivery log — every attempt to send an event to an endpoint, with its outcome. Filter by endpoint, event type, or status. - [Get a webhook delivery](https://docs.textsetu.com/api/reference/webhooks/get-a-webhook-delivery.md): A single delivery including the exact payload sent and the endpoint's response. - [Replay a delivery](https://docs.textsetu.com/api/reference/webhooks/replay-a-delivery.md): Re-send a past delivery's original payload — useful after fixing an outage on your side. ## OpenAPI Specs - [textsetu](https://docs.textsetu.com/openapi/textsetu.json)