---
title: "Translate stored texts of a dating contact"
method: POST
path: "/api/v1/contacts/{id}/translate"
---

# Translate stored texts of a dating contact

`POST /api/v1/contacts/{id}/translate`

## Request

- Base URL: `https://memchats.com`
- URL: `https://memchats.com/api/v1/contacts/{id}/translate`
- Auth: HTTP bearer

By reference only: her bio, stored messages of this contact (by id) or the saved proposal; free text is not accepted. Cached per contact, text and target language: a text already translated costs no model call, and the limits (30 model calls per hour, a daily cap per plan, the demo's shared generation slots) are only spent on a model call.

## Path parameters

- `id` integer, required

## Request body

- object
  - `target` 'es' | 'en' | 'fr' | 'de' | 'it' | 'pt', required
  - `items` object[], required
    - `kind` 'bio' | 'message' | 'suggestion', required
    - `id` integer: Message id, only for kind=message.
    - `variant` integer: Only for kind=suggestion: which of the saved proposal's variants to translate (default 0, the first).

## Response `200`

One translation per item

- object
  - `target` string
  - `translations` object[]
    - `kind` 'bio' | 'message' | 'suggestion'
    - `id` integer
    - `sourceLanguage` string, nullable
    - `text` string
    - `cached` boolean

## Other responses

- `400`: Invalid request (unsupported target, free text, too many items)
- `404`: Contact not found, or an item that does not belong to it
- `429`: rate_limited, translation_quota or demo_suggestion_limit (see code), with retry-after
- `502`: The model returned nothing usable

---

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