---
title: "Create Draft"
method: POST
path: "/api/jobs/draft"
---

# Create Draft

`POST /api/jobs/draft`

## 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/jobs/draft`
- Auth: HTTP bearer

Mint a NailArtJob in 'draft' status with no inputs yet.

Returned `id` becomes the upload key prefix for the presign route
(`apps/nail-art/{id}/inputs/...`). The frontend then calls
`/api/jobs/{id}/submit` once all inputs are in place.

## Response `201`

Successful Response

- JobDraftResponse: Minimal payload returned by `POST /api/jobs/draft`. The frontend uses the returned `id` to scope subsequent presign calls so input uploads land under `apps/nail-art/{id}/inputs/`. The job stays in 'draft' status — invisible in History — until `/submit` flips it to running with charges + SQS enqueue.
  - `id` string, uuid, required
  - `status` 'draft' | 'pending' | 'running' | 'succeeded' | 'failed'
  - `created_at` string, date-time, required

---

[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)
