|
Documentação
Marcar uma demonstraçãoPlataforma
PlataformaMCPCLIAPI
Workflows
GuiasChangelog

Boas-vindas

  • Visão geral
  • Autenticação
  • Erros e códigos de estado
  • Assinaturas de webhook

Localização

  • Visão geral
  • Criar jobs
  • Bloquear chaves não traduzíveis
  • Acompanhar um grupo de jobs
  • Obter um trabalho
  • Listar tarefas
  • Entrega de webhooks
  • Progresso em tempo real (WebSocket)

Pipeline

  • Visão geral
  • Edição por IA pré-localização
  • Revisão humana
  • avaliação por IA (post-edit)
  • Reformular para soar natural
  • Verificação por retrotradução
  • Configurar o pipeline
  • Observar execuções do pipeline

Provisionamento

  • Visão geral
  • Criar uma tarefa de aprovisionamento
  • Tipos de fonte
  • O que a IA extrai
  • Entrega de webhook
  • Progresso em tempo real (WebSocket)

Síncrono

  • Localize
  • Recognize

Gestão do motor

  • Sugestões do motor

Criar jobs de localização

Crie um grupo de jobs de localização: um único pedido que distribui o seu conteúdo por todos os idiomas de destino que indicar.

Tem uma payload de strings e uma lista de idiomas, e quer traduzi-las todas sem ter de implementar essa distribuição. POST /jobs/localization recebe a payload completa e até 100 idiomas de destino num único pedido, e devolve 202 Accepted de imediato com um ID de grupo e um job por idioma. Um pedido, todos os idiomas — a plataforma cria os jobs e processa cada um de forma independente.

text
POST /jobs/localization

Esta página cobre a chamada de criação: os parâmetros, o formato do pedido, a resposta 202 e como tornar a chamada segura para repetir. É novo na localização assíncrona? Comece pela Visão geral da API de Localização Assíncrona para perceber o modelo mental. Assim que existir um grupo, acompanhar um grupo de jobs mostra-lhe o que significa o estado de cada idioma.

Autenticação

Passe a sua chave de API no cabeçalho X-API-Key. As chaves têm âmbito de organização e dão acesso a todos os motores da organização. Consulte Authentication para mais detalhes.

Parâmetros#

sourceLocale, targetLocales e data são obrigatórios. Tudo o resto ajusta o comportamento ou torna a chamada mais segura de repetir.

ParâmetroTipoDescrição
sourceLocalestringIdioma de origem BCP-47 (por exemplo, en).
targetLocalesstring[]Idiomas de destino BCP-47 (por exemplo, ["de", "fr", "ja"]). 1–100 por pedido. É criado um job por idioma.
dataobjectConteúdo em chave-valor para traduzir. São permitidos objetos e arrays aninhados a qualquer profundidade.
contextstring (opcional)Contexto geral para esta payload de tradução, como a área do produto, o público ou a finalidade. Aplica-se a todos os jobs criados para o pedido.
hintsobject (opcional)Contexto por chave sob a forma de arrays de breadcrumbs, para desambiguar strings curtas ou reutilizadas.
callbackUrlstring (opcional)URL de webhook HTTPS para este grupo. Substitui a predefinição da organização. HTTP é rejeitado.
idempotencyKeystring (opcional)Chave gerada pelo cliente. Envie o mesmo pedido duas vezes com a mesma chave e é devolvido o grupo existente em vez de um novo. Âmbito por motor.
engineIdstring (opcional)Motor de localização através do qual executar os jobs. Se for omitido, é usado o motor predefinido da organização.
pipelineConfigobject (opcional)Substituições de pipeline por pedido. As fases que omitir herdam da configuração do motor.
lockedKeysstring[] (opcional)Chaves ou padrões glob cujos valores são excluídos da tradução e reintegrados literalmente em outputData. Até 100 padrões. Consulte Bloquear chaves não traduzíveis.

Pedido#

O campo data aceita pares chave-valor simples ou estruturas aninhadas com objetos e arrays a qualquer profundidade. O motor traduz todos os valores string, preserva os valores que não são string (números, booleanos, null) sem alterações e devolve exatamente a estrutura que enviou. Assim, pode passar-lhe o mesmo objeto que a sua aplicação já armazena — sem achatamento, sem reformatação.

json
{
  "sourceLocale": "en",
  "targetLocales": ["de", "fr", "ja"],
  "data": {
    "lesson_title": "Introduction to Machine Learning",
    "lesson_summary": "This lesson covers the fundamentals of ML, including supervised and unsupervised learning."
  },
  "callbackUrl": "https://your-app.com/webhooks/translations",
  "idempotencyKey": "course_101-v3"
}

HTTPS obrigatório

O callbackUrl tem de usar HTTPS. URLs HTTP são rejeitados com um erro 400.

Esta payload aninhada combina texto traduzível com valores que têm de permanecer intactos — id, course_101, difficulty. As strings são traduzidas; o resto é preservado por tipo. Quando também precisar de excluir uma string da tradução (um slug, um URL de recurso, um código enum), indique-a em lockedKeys e ela é reintegrada literalmente no resultado de cada idioma.

Resposta (202 Accepted)#

A chamada devolve imediatamente. Não espera pela tradução — entrega-lhe o ID do grupo e os IDs dos jobs por idioma, e depois a plataforma processa cada job de forma independente em segundo plano.

json
{
  "groupId": "ljg_A1b2C3d4E5f6G7h8",
  "status": "pending",
  "jobs": [
    { "id": "ljb_A1b2C3d4E5f6G7h8", "targetLocale": "de", "status": "queued" },
    { "id": "ljb_B2c3D4e5F6g7H8i9", "targetLocale": "fr", "status": "queued" },
    { "id": "ljb_C3d4E5f6G7h8I9j0", "targetLocale": "ja", "status": "queued" }
  ],
  "createdAt": "2026-03-16T10:30:00.000Z"
}
CampoDescrição
groupIdIdentificador com prefixo ljg_ para o grupo inteiro. Guarde-o — é a referência para o acompanhamento e o progresso em tempo real.
statusEstado do grupo no momento da criação, normalmente pending.
jobsUma entrada por idioma de destino: id (com prefixo ljb_), targetLocale e o status do job.
createdAtCarimbo temporal ISO 8601.

Entram três idiomas, saem três jobs, cada um em queued e pronto a arrancar. O que significa cada estado à medida que os jobs avançam — e o que acontece quando um idioma falha enquanto os outros seguem em frente — está em Track a job group.

Exemplos#

O mesmo pedido em Node e Python. Ambos fazem um único POST e leem o ID do grupo e o número de jobs diretamente de 202.

javascript
const response = await fetch("https://api.lingo.dev/jobs/localization", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.LINGO_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    sourceLocale: "en",
    targetLocales: ["de", "fr", "ja"],
    data: {
      title: "Introduction to Machine Learning",
      steps: [
        { heading: "What is ML?", body: "Machine learning is a subset of AI." },
        { heading: "Supervised Learning", body: "Training with labeled data." },
      ],
    },
    callbackUrl: "https://your-app.com/webhooks/translations",
  }),
});

const { groupId, jobs } = await response.json();
// 202 Accepted – the call returns without waiting for translation.
console.log(groupId);     // "ljg_A1b2C3d4E5f6G7h8"
console.log(jobs.length); // 3 – one queued job per target locale

Torne a chamada segura para repetir#

O local natural para disparar este pedido é um save hook ou um processador de eventos — exatamente o tipo de código que corre duas vezes quando há uma nova tentativa ou chega um evento duplicado. Sem proteção, duas chamadas significam dois grupos de jobs, e o mesmo conteúdo entra na fila de tradução duas vezes.

Passe um idempotencyKey e isso deixa de ser um risco. Envie o mesmo pedido duas vezes com a mesma chave e a plataforma devolve o grupo existente em vez de criar um novo — sem um segundo conjunto de jobs. As chaves têm âmbito por motor, por isso a mesma chave usada com um motor diferente corresponde a um grupo diferente.

Escolha uma chave com significado

Uma boa chave combina a identidade do conteúdo com a versão: {contentId}-v{contentVersion}. O mesmo conteúdo na mesma versão resolve sempre para o mesmo grupo, por isso uma nova tentativa torna-se automaticamente numa operação sem efeito. Incremente a versão quando o conteúdo mudar e obtém um grupo novo.

javascript
const key = `${content.id}-v${content.version}`;

async function submit() {
  const response = await fetch("https://api.lingo.dev/jobs/localization", {
    method: "POST",
    headers: {
      "X-API-Key": process.env.LINGO_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      sourceLocale: "en",
      targetLocales: ["de", "fr", "ja", "ko", "pt-BR"],
      data: { title: content.title, steps: content.steps },
      callbackUrl: "https://your-app.com/webhooks/translations",
      idempotencyKey: key,
    }),
  });
  return (await response.json()).groupId;
}

const first = await submit();
const again = await submit(); // same key – duplicate submission
console.log(first === again); // true – same group returned, no second set of jobs

Este é o único POST que distribui uma payload por todos os idiomas, e é seguro dispará-lo a partir do mesmo caminho de código que faz novas tentativas. Guarde o groupId; é isso que vai usar no acompanhamento e no progresso em tempo real.

Passos seguintes#

Bloquear chaves não traduzíveis
Exclua IDs, slugs, URLs de recursos e códigos enum da tradução com chaves e padrões glob.
Configurar o pipeline
Substitua fases do pipeline por pedido ou defina predefinições ao nível do motor que todos os jobs herdam.
Acompanhar um grupo de jobs
Consulte o estado do grupo e de cada idioma e trate o caso em que um idioma falha enquanto os restantes seguem em frente.

Esta página foi útil?

Max PrilutskiyMax Prilutskiy·Atualizado há 10 dias·7 min de leitura