de-AT
Human, then proofread
The market that reads your manuals closely: translation and proofreading against the style guide legal approved.
Send content from your CMS, PIM or repository as segments. TextUnited translates it against your terminology and style rules, then returns the results through the API.
customId: "catalogue-2026.08"
taskId: "release-notes"
targetLanguages: ["de-AT", "pl-PL"]
segments: 12,400
The shape of the integration
| Segments, not files | Send strings from a CMS, PIM, repository or database. A segment can contain HTML. |
| Your identifiers throughout | Set your own customId on the project and on each segment. Your integration never has to map your IDs to ours. |
| Your language rules, already there | Each target language carries its own services, its own team and its own progress, inside the one project you created. |
A note attaches to a segment. 'languageSpecificNotes' sets a different note for each target language, so the German translator reads one instruction and the Polish translator reads another. The character limit, the screenshot reference, the note that this string appears on a button reach the person doing the work rather than staying in the ticket that started the job.
That single call is the integration. Everything after it is your own customId and a webhook.
The smallest possible first step
POST /segments/Translation takes segments and target languages and returns the translations in the same response. It creates no project and schedules nothing. Each translation comes back with your own customId on it, so you map the results to your own content without storing anything of ours.
Point it at a hundred of your own strings and compare the output to what you use now.
You do not have to choose between the two. SetinstantTranslationon a real project and a first pass comes back immediately while the human work continues.
What the segments run against
A model does not know which of three defensible terms your company uses, that legal rejected one of them for one market, or that a reviewer has already corrected this string twice.
| Approved terminology | The term your company settled on, and the ones it rejected. |
| Translation memory | Every sentence your reviewers have already confirmed. |
| Style guides | Register and rules, held as configuration rather than as a PDF. |
TextUnited applies all three while the translation is produced, not to the output afterwards, so they hold when you change model.
Terminology is grouped into domains you define, because the vocabulary of your service manuals is wrong on your marketing site. A narrower guide states only the rules that change at that level. The rules from the wider guides still apply.
The terms and rules stay on your account. Omit the domain and nothing lapses: your account-wide terminology still applies, because the domain narrows which set governs a project rather than switching governance on.
Set per language, not per integration
Most integrations force one answer for the whole payload. Everything goes to a machine, or everything goes to people. You set the services on each target language instead, inside the same project and in the same request.
de-AT
The market that reads your manuals closely: translation and proofreading against the style guide legal approved.
pl-PL
Volume that has to exist in the language but does not need a person on every string.
fr-FR
Where the volume is real and the team is not: adaptive translation against your record, run as a managed project.
You can also change your mind per release. The methodology lives on the target language of a project, not in your integration code — so moving a market from machine to human is a field in the next request, not a sprint.
Set serviceScoring on a target language and every machine-translated segment gets a quality estimate. You configure the threshold rather than passing it: the call asks for a score, and your settings decide what counts as high enough. Above the threshold the segment passes. Below it, a reviser reads the segment before a customer does.
You then stop choosing between reviewing everything and reviewing nothing, and you set the threshold at whatever level you made the decision.
| Per account | Your default for everything. |
| Per domain | Higher where the content carries liability, lower on the internal knowledge base. |
| Per language pair | Higher again where your machine translation is weakest. |
team assigns users to a language project as project manager, translator, proofreader or in-country reviewer, and one person can hold several of those roles. A project created by an API call arrives with its team assigned, so nobody opens the interface to hand out work the calling system already knew about. Each member carries a translation rate and a proofreading rate in the project currency, so an API-created project costs what the same project costs when a person creates it.
How you know where it is
Creating a project returns an acknowledgment. Machine translation lands almost immediately; human work arrives segment by segment, under the IDs you sent. Every translation carries a status, and your integration decides which status it publishes from. Take automatic today for an internal preview and proofread for the storefront when it arrives, from the same project and the same call.
eventUrl tells you when something changed. GET /segments/projects/{id}/progress gives one percentage plus a breakdown per task and language.
[
{
"source": { "customId": "sku-4471.name",
"content": "Telescopic mast, 12 m" },
"translations": [
{ "languageCode": "de-AT",
"content": "Teleskopmast, 12 m",
"status": "proofread",
"comments": [ ... ] }
]
}
]The status filter is the useful part. Ask only for what is proofread and you can publish continuously without waiting for the slowest language in the release.
| Status | Meaning |
| untranslated | No translation exists yet. |
| draft | Someone has started. Not a state to publish from. |
| automatic | Machine output. No person has looked at it. |
| pretranslated | Filled from your translation memory. |
| translated | A person produced it. |
| proofread | A second person checked it. Safe to publish. |
When it comes back wrong
Your own translators and reviewers can be assigned to it, but we also have our own team to help you. They see it where they see everything else, and their corrections stay in your language data. Your system posts a comment onto one segment, by your own segment ID, in one target language or in all of them, so a bug report from a market lands on the string it concerns. When that segment comes back, its comments come with it.
Security and legal
SOC 2 compliant, GDPR ready
AES-256 encryption at rest and in transit.
Hosted on Microsoft Azure
Your data stays in the region you select.
Isolated per tenant
Your language data is never used to train anything outside your account.
Granular RBAC and audit trails
Who did what, to which segment, when.
| Scope is not a parameter | Which company you are is read from the credential, never from the request. Every project and segment lookup is filtered by it server-side. There is no field an integration can get wrong, or a curious engineer can change, that returns another tenant's content. |
| Failures come with a handle | A rejected request returns the business reason in plain text. An unexpected one returns an error signature — a GUID recorded against the server-side log. Quote it to support and the exact request is found, without you reproducing anything or sending us your content. |
The whole surface
This is not a platform you have to learn. Create, update, read back, check progress — the rest exists for the cases you have not hit yet. Paths shown against the segments service; every one that takes an {id} has a custom/{customId} twin.
| Method | Endpoint | Purpose |
| POST | /segments/projects | Create a project from segments and target languages. Returns on acceptance; preparation continues in the background. |
| PUT | /segments/projects | Update in place — identified by the id or customId in the body, not the path. appendContent adds to a task rather than replacing it. |
| GET | /segments/projects | Every segment project in your company. |
| GET | /segments/projects/{id} | One project and its settings. Or /projects/custom/{customId}. |
| GET | /segments/projects/{id}/segments | Source segments with their translations. Filter by ?status= and ?taskId= to take only what is finished. |
| GET | /segments/projects/{id}/progress | Overall percentage, plus a breakdown per task and per target language. |
| POST | /segments/projects/{id}/segments/comments | Comment on a segment — one target language, or all of them. Addressable by your segment customId. |
| POST | /segments/Translation | Instant translation with no project created and nothing persisted. Segments in translations back in the same response. |
| DELETE | /segments/projects/{id} | Remove a project. Also by customId. |
Interactive schema is served from the service itself, so the contract you test against is the one that is deployed rather than a document that drifted from it. Every request accepts Basic or bearer credentials on the same path.
Start with the reference
Most integrations are settled in one conversation: which event on your side creates a project, what happens when quality does not hold, and who needs to know. That is shorter than the code.
| Not a new product | These are the endpoints TextUnited has run on internally for more than ten years — the same interface behind the web application our own customers have been working in that whole time. What changed is that we are opening them directly to clients. You are integrating against something load-bearing, not against a beta that was written to have an API story. |
| No separate API price | API access is part of the OnePlatform plan, and it consumes the word allowance in your subscription exactly as translating a document through the interface does. The same words cost the same whether a person uploads them or your CMS posts them. There is no per-call charge to model and no second contract to negotiate. |
Before the technical call
No. The API takes segments as objects with target languages attached to the project. Content held in a database, a PIM or a repository goes in as it is held.
No. Set your own `customId` on the project and on each segment, then use them for every subsequent call.
Less, because `taskId` determines what a request updates. Send what changed and the project updates in place.
Nothing on top of your plan. API access is included in OnePlatform and consumes the same word allowance as translating through the interface.
More than ten years, internally. These are the endpoints the TextUnited web application itself is built on.
Basic authentication with your company ID and API key, or a JWT bearer token, selected from the `Authorization` header.
For `POST /segments/Translation`, yes — inline. For a project, translations arrive progressively afterwards.
Use the `eventUrl` webhook or `GET /segments/projects/{id}/progress` for progress per task and language.
Yes. Machine, adaptive, human, proofreading, scoring and managed service are each set on the individual target language.
`de-DE` and `de-AT` can run as separate targets, each with its own terminology, style guide and reviewer.
Yes. Segment content is plain text or HTML, so markup from a CMS or documentation build survives the round trip.
No. The request names a `domainId` and a `styleGuideId`; the terms and rules stay on your account.
Yes. It is the same project object, and the same people can be assigned to it.
Close
Posting content to a model and getting content back was never the hard part, and you already know that. Read the reference, and bring the case where it stops being simple.