---
title: "Import Vendor Export Upload"
method: POST
path: "/api/me/setup/import-export"
tags: ["setup"]
---

# Import Vendor Export Upload

`POST /api/me/setup/import-export`

## Request

- Base URL: `https://app.thinqos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.thinqos.com/api/me/setup/import-export`
- Auth: none declared

Import a ChatGPT or Claude data export into the caller's own Mind.

Accepts the vendor's export zip (only its ``conversations.json`` member is
ever read) or a bare ``conversations.json``. Every conversation is ingested
through the same path a live capture uses, so it lands in the caller's Mind
the same way. Makes zero AI-provider calls.

Small exports (``conversations.json`` at or under
``SYNC_IMPORT_JSON_MEMBER_BYTES``) are imported inline and the response
already carries the final counts. Larger ones run as a background task;
poll ``GET /import-export/{id}`` for the result.

The body is read in ``_UPLOAD_READ_CHUNK_BYTES`` chunks rather than in one
``file.read()`` call, so an over-the-cap upload is rejected as soon as the
running total crosses ``MAX_EXPORT_UPLOAD_BYTES`` instead of after
buffering the whole thing. A present ``Content-Length`` already over the
cap is rejected before any read at all.

## Headers

- `x-impersonate-identity-id` string, nullable

## Response `200`

Successful Response

- ImportExportOut
  - `id` string, uuid, required
  - `status` 'processing' | 'completed' | 'failed', required
  - `vendor` 'openai' | 'anthropic', required
  - `imported` integer
  - `duplicates` integer
  - `skipped` integer
  - `errors` integer
  - `error` string, nullable

## Other responses

- `422`: Validation Error

---

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