---
title: "Import a person from screenshots (dating profile or chat) in one request"
method: POST
path: "/api/v1/imports/people"
---

# Import a person from screenshots (dating profile or chat) in one request

`POST /api/v1/imports/people`

## Request

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

Multipart. Returns 202 at once; the server reads every image in parallel, classifies each one (dating profile / chat / other), extracts the name, saves the contact and prepares the first proposal. Poll GET /api/v1/imports/people/{importId}. The public demo is allowed: at most 6 images, 3 imports per session, and the proposal spends one of its five generations.

## Headers

- `X-Client-Prepare-Ms` integer
- `X-Client-Platform` string

## Response `202`

Started

- 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

- `400`: Invalid kind, no images or too many (code too_many_images, max)
- `402`: Plan limit (code tier_limit_exceeded, with `limit`)
- `404`: `contactId` is not one of the account's contacts (dating ones for `kind: dating`; code contact_not_found)
- `413`: An image or the whole import is too large
- `415`: Not an image
- `429`: Demo import limit (code demo_import_limit), or the plan monthly screenshots: dating imports spend the dating meter (code dating_quota_exceeded) and conversation imports their own (code conversation_quota_exceeded; Free 60, Plus 300, Pro and Empresa 800), both with `limit`, `used`, `remaining`, `resetsAt`. An import that does not fit is refused whole; admins and demo sessions are not held to it

---

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