---
title: "Import I18Next"
method: POST
path: "/v1/projects/{project_id}/i18next/import"
tags: ["i18next"]
---

# Import I18Next

`POST /v1/projects/{project_id}/i18next/import`

## Request

- Base URL: `https://api.sonenta.dev`
- URL: `https://api.sonenta.dev/v1/projects/{project_id}/i18next/import`
- Auth: none declared

Import an i18next bundle. Two shapes:

- SINGLE (legacy): {namespace, language, payload} -> ImportReport.
- ONE-SHOT (task 750): {namespaces:[{namespace, translations:{lang: tree}}]}
  -> ImportBundleReport (N namespaces x N languages in a single call).

Creates missing keys + upserts translations (idempotent), enforces the
glossary (#758), resolves matching missing-key events. Shared core with the
MCP surface (app.services.i18next_import.import_bundle).

## Path parameters

- `project_id` string, required

## Request body

- ImportIn
  - `language` string, nullable: BCP-47 language code (single import)
  - `namespace` string, nullable: namespace slug (single import)
  - `payload` object, nullable: Nested or flat i18next JSON tree (single import)
  - `namespaces` NamespaceImport[], nullable: Multi-namespace one-shot import; mutually exclusive with the single fields
    - `namespace` string, required: namespace slug
    - `translations` object, required: language_code -> nested|flat i18next tree for this namespace
  - `version` string, nullable: Version slug; defaults to the production version
  - `status` 'draft' | 'translated': Status applied to each translation row touched by this import

## Response `200`

Successful Response

- union
  - ImportReport: Legacy single-(namespace, language) import report (back-compat).
    - `project_uuid` string, required
    - `language_code` string, required
    - `namespace_slug` string, required
    - `keys_created` integer, required
    - `keys_reused` integer, required
    - `translations_created` integer, required
    - `translations_updated` integer, required
    - `translations_unchanged` integer, required
    - `plural_keys_marked` integer, required
    - `glossary_violation_count` integer
    - `glossary_violations` object[]
  - ImportBundleReport: One-shot multi-namespace/multi-language import report (task 750).
    - `project_uuid` string, required
    - `version_slug` string, nullable, required
    - `keys_created` integer, required
    - `keys_reused` integer, required
    - `translations_created` integer, required
    - `translations_updated` integer, required
    - `translations_unchanged` integer, required
    - `plural_keys_marked` integer, required
    - `units` ImportUnitReport[], required
      - `namespace` string, required
      - `language_code` string, required
      - `keys_created` integer, required
      - `keys_reused` integer, required
      - `translations_created` integer, required
      - `translations_updated` integer, required
      - `translations_unchanged` integer, required
      - `plural_keys_marked` integer, required
    - `errors` object[]
    - `glossary_violation_count` integer
    - `glossary_violations` object[]

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sonenta/apis/sonenta-api.md) · [All operations](https://skmtc.dev/sonenta/apis/sonenta-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sonenta/apis/sonenta-api/revisions/f853ea49fb05?raw)
