# General Translation Platform: Upsert de prompts personnalisés
URL: https://generaltranslation.com/fr/docs/platform/openapi/reference/context-management/upsert-custom-prompts.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Crée ou met à jour de 1 à 100 prompts ({ customPrompts: [...] }), chacun identifié par son nom et son paramètre régional, en un seul lot atomique. Un champ absent conserve sa valeur enregistrée. null efface un champ nullable ou supprime une entrée de map ; les autres champs refusent null. Dans les lots et les imports, les éléments sont mis en correspondance avec les éléments enregistrés par clé naturelle, les éléments enregistrés absents du lot restent inchangés et rien d'autre n'est supprimé. Une cellule CSV vide est considérée comme absente. Un nom et un paramètre régional répétés au sein d'un même lot entraînent le rejet du lot entier (400). Nécessite org:context:write. Référence de l'API pour l'upsert de prompts personnalisés.

{/* Ce fichier a été généré par Fumadocs. Ne le modifiez pas directement. Pour toute modification, relancez la commande de génération. */}

## Endpoint

`POST https://api.gtx.dev/v2/context-groups/{groupId}/custom-prompts`

**Operation ID:** `upsertContextCustomPrompts`

**Tags:** `Context Management`

**Summary:** Upsert custom prompts

Creates or updates 1–100 prompts (`{ customPrompts: [...] }`), each matched by name and locale, in one atomic batch. An absent field keeps its stored value. `null` clears a nullable field or removes a map entry; other fields reject `null`. In batches and imports, items match stored items by natural key, stored items absent from the batch are untouched, and nothing else is deleted. A blank CSV cell counts as absent. Repeating a name and locale within one batch rejects the whole batch (400). Requires `org:context:write`.

Authentication: required. Send an API key in the `Authorization: Bearer <key>` header when authenticating.

### Parameters

- `groupId` (path, string, required): Context group ID.
- `gt-api-version` (header, "2025-01-01.v0" | "2025-11-03.v1" | "2026-02-18.v1" | "2026-03-06.v1", optional): API contract version. Defaults to the oldest supported version.

### Request body (required)

Body (`application/json`, object):
- `customPrompts` (object[], required): 1–100 prompts, matched by name and locale; a name and locale may appear once.
  - `name` (string, required)
  - `locale` (string | null, required): Locale the prompt applies to; null applies it to every locale.
  - `value` (string, required)
  - `description` (string | null): null clears the description.

### Responses

**200**: Custom prompts written
Response body (`application/json`, object):
- `committed` (true, required)
- `counts` (object, required)
  - `created` (integer, required)
  - `updated` (integer, required)
  - `unchanged` (integer, required)

**400**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**401**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**403**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**404**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**413**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**429**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**500**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

Complete OpenAPI 3.1 specification: https://generaltranslation.com/openapi.yaml

OpenAPI schema: [openapi.json](https://generaltranslation.com/openapi.json)

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
