---
title: "Discard a people import"
method: DELETE
path: "/api/v1/imports/people/{importId}"
---

# Discard a people import

`DELETE /api/v1/imports/people/{importId}`

## Request

- Base URL: `https://memchats.com`
- URL: `https://memchats.com/api/v1/imports/people/{importId}`
- Auth: HTTP bearer

The "Discard" of the "import in progress" card. `needs_name` and `failed`: deleted for good (the R2 crops and originals no row cites, then the state). `done`: only hides the card, the saved person is untouched. `processing`: 409, a running import cannot be stopped from here (a dead one is first marked `interrupted` and can then be discarded). Another user's import answers 404 like a missing one.

## Path parameters

- `importId` string, uuid, required

## Response `200`

Discarded; the final status

- PeopleImportStatus: What the people import client polls. Small on purpose: one Redis read per poll.
  - `importId` string, uuid, required
  - `status` 'processing' | 'needs_name' | 'done' | 'failed', required
  - `phase` 'reading' | 'saving' | 'suggesting': Only while processing: reading the screenshots, saving the person and the chat, or preparing the first proposal. Absent on servers before 2026-10-03.
  - `images` object[], required
    - `index` integer
    - `status` 'pending' | 'processing' | 'done' | 'failed'
    - `class` 'dating_profile' | 'chat' | 'other': What the image turned out to be, once read.
  - `nameCandidates` object[]: Present from needs_name on: the chips of "¿Cómo se llama?". Empty when no name was visible.
    - `name` string
    - `source` 'chat_header' | 'profile_name' | 'signature' | 'mention'
    - `confidence` number
  - `result` object: Present when status is done.
    - `contactId` integer
    - `conversationId` integer, nullable: Null for a dating import without chat screenshots.
    - `kind` 'dating' | 'conversation'
    - `target` 'dating' | 'conversation': The screen to land on.
    - `contactName` string
    - `relationshipType` string
    - `inserted` integer
    - `suggestionStatus` 'generated' | 'pending' | 'skipped_demo_limit' | 'skipped_quota' | 'skipped_no_content' | 'skipped_her_turn' | 'failed': `pending`: the proposal outlived the wait of the processing screen and is still being written; it lands in the contact's Alma thread (conversation) or on GET /contacts/{id}/dating (dating) when done, and the stored status is updated. `failed` only means the generation failed. `skipped_her_turn` (dating): his message is the last one and it is too soon to write again; nothing was generated or spent, see `herTurn`.
    - `herTurn` object: Only with `skipped_her_turn`. Both null when the screenshots showed no time (no hours are invented).
      - `hoursSinceLastMessage` integer, nullable
      - `reviveAfter` string, date-time, nullable
    - `suggestion` object: The first proposal, already generated. dating: {kind, text, intent (open|reply|revive|propose_date, decided by whose turn it is), charLimit, situation, rationale, language, variants?} where `variants` are 2 or 3 drafts of distinct tone ({text, tone: direct|playful|curious}) from the same call, the first equal to `text`. conversation: {kind, entryId, title, body, suggestedReply}, stored as an entry of the contact's Alma thread.
  - `error` object
    - `code` string
    - `message` string

## Other responses

- `404`: Import not found
- `409`: Still processing, or a name is being saved at the same moment

---

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