---
title: "Update a campaign translation"
description: "Update a given translation."
canonical: https://www.charitips.com/docs/api-reference/update-campaign-translation
---

# Update a campaign translation

`PATCH /v1/campaigns/{campaignId}/translations/{campaignTranslationId}`

Update a given translation.

**Authentication**: Bearer access token.

## Parameters

- `campaignId` (string, required)
- `campaignTranslationId` (string, required)

## Body

- `title` (string, 2 to 100 characters): Will be displayed in the campaign page
- `description` (string, 2 to 1000 characters): Will be displayed in the campaign page.
- `message` (string, 1 to 600 characters): Slack campaigns only. Message posted to each participant with their donation. Supports the {{firstName}}, {{lastName}}, {{company}} and {{amount}} variables.
- `reminderMessage` (string, 1 to 600 characters): Slack campaigns only. Message posted to remind the participants who have not chosen a charity yet. Supports the {{firstName}}, {{lastName}}, {{company}} and {{amount}} variables.
- `emailSenderName` (string, 1 to 100 characters): Email campaigns only. Name of the sender of the donation emails.
- `emailSenderPictureUrl` (string, URL): Email campaigns only. Picture of the sender displayed in the donation emails.
- `emailSubject` (string, 1 to 100 characters): Email campaigns only. Subject of the donation emails.
- `emailTemplate` (string, 1 to 1000 characters): Email campaigns only. HTML body of the donation emails. Supports the {{firstName}}, {{lastName}}, {{company}} and {{amount}} variables.
- `emailReplyTo` (string, email address): Email campaigns only. Address the participants reply to.
- `emailDisplayCard` (boolean): Email campaigns only. Whether the donation emails show the donation card. Defaults to true.

## Response 200

- `campaignTranslationId` (string, required)
- `language` (Language, required) One of `fr`, `en`.
- `title` (string)
- `description` (string)
- `logoUrl` (string)
- `message` (string)
- `reminderMessage` (string)
- `emailSenderName` (string)
- `emailSenderPictureUrl` (string)
- `emailSubject` (string)
- `emailTemplate` (string)
- `emailReplyTo` (string)
- `emailDisplayCard` (boolean)
- `campaignId` (string, required)
- `createdAt` (string (date-time), required)
- `updatedAt` (string (date-time), required)

## Errors

- 400 `A field is missing, has the wrong type, or is not part of the request schema.`: `message` lists every problem. Unknown fields are rejected, not ignored: remove them rather than sending extra data. See https://www.charitips.com/docs/api-reference/errors.md.
- 401 `Unauthorized`: The access token is missing, expired or invalid. Create a new one with your client id and secret, send it as `Authorization: Bearer <accessToken>`, then retry once. Sandbox tokens only work on api.sandbox.charitips.com. See https://www.charitips.com/docs/get-started/authentication.md.
- 403 `Account closed`: The account behind these credentials is closed: no token is issued and every call is refused, reads included. Contact Charitips to reopen it. See https://www.charitips.com/docs/api-reference/troubleshooting.md#calls-answer-403-account-not-active-account-not-validated-or-account-closed.
- 403 `Forbidden`: Your credentials cannot perform this action on this resource. An id from another account never answers 403: it is treated as unknown, with a 404 in the path or a 400 `Bad Request` in the body or the query. See https://www.charitips.com/docs/api-reference/errors.md.
- 404 `Not Found`: No resource with this id on your account and environment. An id that belongs to another account answers 404 too when it is in the path. Ids from the sandbox do not exist in production. See https://www.charitips.com/docs/get-started/sandbox.md.

## Example

```bash
curl -X PATCH https://api.sandbox.charitips.com/v1/campaigns/<campaignId>/translations/<campaignTranslationId> \
  -H "Authorization: Bearer $CHARITIPS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "<title>",
    "description": "<description>"
  }'
```

```javascript
const response = await fetch('https://api.sandbox.charitips.com/v1/campaigns/<campaignId>/translations/<campaignTranslationId>', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.CHARITIPS_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "title": "<title>",
    "description": "<description>"
  }),
});
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
const data = await response.json();
```

```python
import os, requests

response = requests.patch(
    "https://api.sandbox.charitips.com/v1/campaigns/<campaignId>/translations/<campaignTranslationId>",
    headers={"Authorization": f"Bearer {os.environ['CHARITIPS_TOKEN']}"},
    json={
      "title": "<title>",
      "description": "<description>"
    },
)
response.raise_for_status()
data = response.json()
```

## Response example (200, placeholder values)

```json
{
  "campaignTranslationId": "<campaignTranslationId>",
  "language": "fr",
  "title": "<title>",
  "description": "<description>",
  "logoUrl": "<logoUrl>",
  "message": "<message>",
  "reminderMessage": "<reminderMessage>",
  "emailSenderName": "<emailSenderName>"
}
```
