---
title: "Import organizations from JSONL file"
method: POST
path: "/api/v1/external/tms/organizations/import"
tags: ["TMS Organizations"]
---

# Import organizations from JSONL file

`POST /api/v1/external/tms/organizations/import`

## Request

- Base URL: `https://api.wove.com`
- URL: `https://api.wove.com/api/v1/external/tms/organizations/import`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/wove/apis/wove-external-api/docs/api/v1/external/tms/organizations/import/post.ts> (a function with typed inputs; its response is checked against the schema)

Upload a JSONL file to bulk import TMS organizations. Each line must be a JSON object
with at least `code` and `name` fields. Processing is asynchronous — returns a job ID
that can be polled for status. A `bulk_upload.completed` or `bulk_upload.failed` webhook
is fired when the job finishes, including row-level stats (totalRows, successfulRows, failedRows).

## Query parameters

- `source` 'cw' | 'gf' | 'lw' | 'ns', required
- `mode` 'replace' | 'merge' | 'skip'

## Request body `multipart/form-data`

- object
  - `file` string, binary, required: JSONL file (max 10MB)

## Response `200`

Import job queued successfully

- object
  - `success` boolean
  - `data` TmsOrganizationImportResponse (unresolved $ref)

## Other responses

- `400`: Invalid source, mode, or file
- `401` (unresolved $ref)
- `403`: Insufficient permissions - requires tms-organizations:write scope

---

[API](https://skmtc.dev/wove/apis/wove-external-api.md) - [All operations](https://skmtc.dev/wove/apis/wove-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wove/apis/wove-external-api/revisions/37290e267e07?raw)
