---
title: "Start Tryon Export"
method: POST
path: "/api/tryon/projects/{project_id}/exports"
tags: ["tryon"]
---

# Start Tryon Export

`POST /api/tryon/projects/{project_id}/exports`

## Request

- Base URL: `https://api.tintin-x.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tintin-x.com/api/tryon/projects/{project_id}/exports`
- Auth: HTTP bearer

Kick off an async ZIP export. Returns a ``job_id`` immediately;
client polls ``GET /api/tryon/projects/{id}/exports/{job_id}`` until
``status`` is ``ready`` (or ``failed``) and then downloads from the
presigned URL.

Today only ZIP is supported through this path — the xlsx export at
``/api/tryon/projects/{id}/export.xlsx`` stays synchronous (small
payload, in-process build is fine).

## Path parameters

- `project_id` string, uuid, required

## Request body

- TryonZipExportRequest: Body for ``POST /api/tryon/projects/{id}/exports`` (format=zip). Selection precedence: ``cell_refs`` > ``row_ids`` (× ``cell_keys``) > "all rows × all attachment cells". Caller picks one shape; we don't try to reconcile mixed shapes. ``naming_mode``: - ``subfolder``: ``{column_name}/{row_label}/file.ext`` - ``prefix``: ``{column_name}__{row_label}__file.ext``
  - `row_ids` string[], nullable
  - `cell_keys` string[], nullable
  - `cell_refs` TryonZipCellRef[], nullable
    - `row_id` string, uuid, required
    - `cell_key` string, required
  - `naming_mode` 'subfolder' | 'prefix'

## Response `202`

Successful Response

- TryonExportJobCreatedResponse: Shape returned by ``POST /api/tryon/projects/{id}/exports``.
  - `job_id` string, required
  - `status` 'queued' | 'running' | 'ready' | 'failed', required

## Other responses

- `422`: Validation Error

---

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