Memulai penerjemahan latar belakang secara massal untuk dokumen yang telah dipublikasikan dari suatu skema ke dalam bahasa target.
Antrekan penerjemahan latar belakang untuk semua dokumen yang telah dipublikasikan dari satu atau beberapa skema komponen ke dalam sekumpulan bahasa target. Hasilnya di-upsert ke dalam tabel translations setiap kali penerjemahan selesai.
Endpoint: POST /translation
Auth: Bearer JWT (WorkOS)
{
"websiteId": "<uuid>",
"schemaNames": ["post", "hero"],
"languages": ["fr", "es", "de"]
}
| Kolom | Tipe | Wajib | Catatan |
|---|---|---|---|
websiteId | uuid | ya | Situs web yang berisi dokumen sumber. |
schemaNames | string[] | ya* | Skema komponen yang akan diterjemahkan. Nama duplikat dihapus. |
schemaName | string | ya* | Alternatif lama untuk mengirimkan satu skema. |
languages | string[] | ya | Kode bahasa target yang didukung. Kode duplikat dihapus. |
* Berikan schemaNames atau schemaName.
Hanya dokumen yang telah dipublikasikan dengan konten publikasi yang tidak null yang akan dipertimbangkan.
{
"job_id": "<uuid>",
"website_id": "<uuid>",
"schema_name": null,
"schema_names": ["post", "hero"],
"languages": ["fr", "es", "de"],
"status": "queued",
"documents_processed": 12,
"translations_scheduled": 30,
"translations_skipped": 6,
"translations_completed": 0,
"translations_failed": 0,
"reused": false,
"created_at": "2026-07-15T18:00:00Z",
"updated_at": "2026-07-15T18:00:00Z"
}
Mengembalikan:
202 Accepted ketika penerjemahan diantrekan200 OK ketika setiap penerjemahan sudah diperbarui| Kolom | Deskripsi |
|---|---|
job_id | Pengenal yang digunakan untuk mengambil progres pekerjaan. |
status | Status pekerjaan saat ini. |
documents_processed | Jumlah dokumen sumber yang memenuhi syarat dan ditemukan. |
translations_scheduled | Jumlah pasangan dokumen-bahasa yang diantrekan. |
translations_skipped | Jumlah yang dilewati karena hash sumbernya masih terbaru. |
translations_completed | Jumlah yang berhasil diterjemahkan. |
translations_failed | Jumlah yang gagal. |
reused | Menunjukkan apakah respons merujuk pada pekerjaan aktif yang sudah ada. |
Status pekerjaan yang mungkin adalah:
preparingqueuedrunningcompletedcompleted_with_errorsfailedSetiap pasangan dokumen-bahasa menyimpan hash SHA-256 dari konten dokumen sumber yang telah dipublikasikan.
Penerjemahan dilewati ketika hash sumber yang tersimpan cocok dengan konten publikasi saat ini. Dengan demikian, endpoint dapat dipanggil berulang kali tanpa menerjemahkan ulang konten yang tidak berubah.
Jika konten publikasi berubah saat pekerjaan yang setara sedang aktif, layanan menolak permintaan baru tersebut. Kirimkan kembali setelah pekerjaan aktif selesai.
Penerjemahan berjalan secara asinkron setelah respons awal.
completed_with_errors.curl -X POST '{TRANSLATION_API_URL}/translation' \
-H 'Authorization: Bearer <workos-jwt>' \
-H 'Content-Type: application/json' \
-d '{
"websiteId": "<uuid>",
"schemaNames": ["post", "hero"],
"languages": ["fr", "es"]
}'
400 Bad Request — skema atau bahasa tidak ada, bahasa tidak didukung, atau batch melebihi batas yang dikonfigurasi401 Unauthorized — token bearer tidak ada atau tidak valid409 Conflict — pekerjaan yang cocok sedang aktif, tetapi konten sumber yang dipublikasikan berubah500 Internal Server Error — dokumen sumber tidak dapat disiapkan atau operasi basis data gagalAmbil progres terbaru untuk suatu pekerjaan penerjemahan.
Endpoint: GET /translation-jobs/{job_id}
Auth: Bearer JWT (WorkOS)
Respons menggunakan objek pekerjaan yang sama seperti yang dikembalikan oleh POST /translation, dengan status dan jumlah progres yang diperbarui.
{
"job_id": "<uuid>",
"website_id": "<uuid>",
"schema_name": null,
"schema_names": ["post", "hero"],
"languages": ["fr", "es"],
"status": "running",
"documents_processed": 12,
"translations_scheduled": 24,
"translations_skipped": 0,
"translations_completed": 16,
"translations_failed": 1,
"reused": false,
"created_at": "2026-07-15T18:00:00Z",
"updated_at": "2026-07-15T18:01:30Z"
}
curl '{TRANSLATION_API_URL}/translation-jobs/<job-id>' \
-H 'Authorization: Bearer <workos-jwt>'
401 Unauthorized — token bearer tidak ada atau tidak valid404 Not Found — pekerjaan tidak ada atau tidak lagi disimpanPekerjaan penerjemahan saat ini disimpan di memori. Status pekerjaan hilang ketika layanan penerjemahan dimulai ulang, dan penerapan multi-instance memerlukan perutean yang melekat.