profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Collection of Pages with ComponentsTypes of ComponentsSetup server sent events (SSE) content refetchInstall Profound CMS as a proxyCEL Scripting in Template BuilderProject ScaffoldingMedia Library

Tanpa kepala

Mulai CepatSplit Screen JSON Component Builder with LLMPenarikan Komponen Zod

REST API

ikhtisar API RESTgetConnect your websitegetGET /routesgetGET /routegetGET /blocksgetGET /blocks/with-cel-cachegetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPOST /translationpatchPATCH /translationsgetGET /usagepostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

POST /translation

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)

Isi permintaan

{
  "websiteId": "<uuid>",
  "schemaNames": ["post", "hero"],
  "languages": ["fr", "es", "de"]
}
KolomTipeWajibCatatan
websiteIduuidyaSitus web yang berisi dokumen sumber.
schemaNamesstring[]ya*Skema komponen yang akan diterjemahkan. Nama duplikat dihapus.
schemaNamestringya*Alternatif lama untuk mengirimkan satu skema.
languagesstring[]yaKode 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.

Respons

{
  "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 diantrekan
  • 200 OK ketika setiap penerjemahan sudah diperbarui
  • pekerjaan aktif yang sudah ada ketika permintaan identik sedang berjalan
KolomDeskripsi
job_idPengenal yang digunakan untuk mengambil progres pekerjaan.
statusStatus pekerjaan saat ini.
documents_processedJumlah dokumen sumber yang memenuhi syarat dan ditemukan.
translations_scheduledJumlah pasangan dokumen-bahasa yang diantrekan.
translations_skippedJumlah yang dilewati karena hash sumbernya masih terbaru.
translations_completedJumlah yang berhasil diterjemahkan.
translations_failedJumlah yang gagal.
reusedMenunjukkan apakah respons merujuk pada pekerjaan aktif yang sudah ada.

Status pekerjaan yang mungkin adalah:

  • preparing
  • queued
  • running
  • completed
  • completed_with_errors
  • failed

Melewati penerjemahan yang masih terbaru

Setiap 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.

Perilaku pemrosesan

Penerjemahan berjalan secara asinkron setelah respons awal.

  • Pekerjaan diproses dengan konkurensi yang dibatasi.
  • Kegagalan sementara dicoba kembali dengan backoff.
  • Hasil yang berhasil disimpan saat selesai.
  • Kegagalan inferensi atau persistensi individual dicatat pada pekerjaan.
  • Pekerjaan yang berhasil sebagian berakhir dengan completed_with_errors.

Contoh

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"]
  }'

Kesalahan

  • 400 Bad Request — skema atau bahasa tidak ada, bahasa tidak didukung, atau batch melebihi batas yang dikonfigurasi
  • 401 Unauthorized — token bearer tidak ada atau tidak valid
  • 409 Conflict — pekerjaan yang cocok sedang aktif, tetapi konten sumber yang dipublikasikan berubah
  • 500 Internal Server Error — dokumen sumber tidak dapat disiapkan atau operasi basis data gagal

Mendapatkan pekerjaan penerjemahan

Ambil progres terbaru untuk suatu pekerjaan penerjemahan.

Endpoint: GET /translation-jobs/{job_id} Auth: Bearer JWT (WorkOS)

Respons

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"
}

Contoh

curl '{TRANSLATION_API_URL}/translation-jobs/<job-id>' \
  -H 'Authorization: Bearer <workos-jwt>'

Kesalahan

  • 401 Unauthorized — token bearer tidak ada atau tidak valid
  • 404 Not Found — pekerjaan tidak ada atau tidak lagi disimpan

Pekerjaan penerjemahan saat ini disimpan di memori. Status pekerjaan hilang ketika layanan penerjemahan dimulai ulang, dan penerapan multi-instance memerlukan perutean yang melekat.

Continue Reading
Previous‹PATCH /dataset/{schema_name}NextPATCH /translations›