JavaScript
import Courier from '@trycourier/courier';
const client = new Courier({
apiKey: process.env['COURIER_API_KEY'], // This is the default and can be omitted
});
const notificationContentMutationResponse = await client.notifications.putLocale('localeId', {
id: 'id',
elements: [
{ id: 'elem_1', content: 'Hola {{data.name}}.' },
{ id: 'elem_2', title: 'Bienvenido!' },
],
state: 'DRAFT',
});
console.log(notificationContentMutationResponse.id);import os
from courier import Courier
client = Courier(
api_key=os.environ.get("COURIER_API_KEY"), # This is the default and can be omitted
)
notification_content_mutation_response = client.notifications.put_locale(
locale_id="localeId",
id="id",
elements=[{
"id": "elem_1",
"content": "Hola {{data.name}}.",
}, {
"id": "elem_2",
"title": "Bienvenido!",
}],
state="DRAFT",
)
print(notification_content_mutation_response.id)package main
import (
"context"
"fmt"
"github.com/trycourier/courier-go"
"github.com/trycourier/courier-go/option"
)
func main() {
client := courier.NewClient(
option.WithAPIKey("My API Key"),
)
notificationContentMutationResponse, err := client.Notifications.PutLocale(
context.TODO(),
"localeId",
courier.NotificationPutLocaleParams{
ID: "id",
NotificationLocalePutRequest: courier.NotificationLocalePutRequestParam{
Elements: []courier.NotificationLocalePutRequestElementParam{{
ID: "elem_1",
}, {
ID: "elem_2",
}},
},
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", notificationContentMutationResponse.ID)
}package com.courier.example;
import com.courier.client.CourierClient;
import com.courier.client.okhttp.CourierOkHttpClient;
import com.courier.models.notifications.NotificationContentMutationResponse;
import com.courier.models.notifications.NotificationLocalePutRequest;
import com.courier.models.notifications.NotificationPutLocaleParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
CourierClient client = CourierOkHttpClient.fromEnv();
NotificationPutLocaleParams params = NotificationPutLocaleParams.builder()
.id("id")
.localeId("localeId")
.notificationLocalePutRequest(NotificationLocalePutRequest.builder()
.addElement(NotificationLocalePutRequest.Element.builder()
.id("elem_1")
.build())
.addElement(NotificationLocalePutRequest.Element.builder()
.id("elem_2")
.build())
.build())
.build();
NotificationContentMutationResponse notificationContentMutationResponse = client.notifications().putLocale(params);
}
}require "courier"
courier = Courier::Client.new(api_key: "My API Key")
notification_content_mutation_response = courier.notifications.put_locale("localeId", id: "id", elements: [{id: "elem_1"}, {id: "elem_2"}])
puts(notification_content_mutation_response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Courier\Client;
use Courier\Core\Exceptions\APIException;
use Courier\Notifications\NotificationTemplateState;
$client = new Client(apiKey: getenv('COURIER_API_KEY') ?: 'My API Key');
try {
$notificationContentMutationResponse = $client->notifications->putLocale(
'localeId',
id: 'id',
elements: [['id' => 'elem_1'], ['id' => 'elem_2']],
state: NotificationTemplateState::DRAFT,
);
var_dump($notificationContentMutationResponse);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using TryCourier;
using TryCourier.Models.Notifications;
CourierClient client = new();
NotificationPutLocaleParams parameters = new()
{
ID = "id",
LocaleID = "localeId",
Elements =
[
new("elem_1"), new("elem_2")
],
};
var notificationContentMutationResponse = await client.Notifications.PutLocale(parameters);
Console.WriteLine(notificationContentMutationResponse);courier notifications put-locale \
--api-key 'My API Key' \
--id id \
--locale-id localeId \
--element '{id: elem_1}' \
--element '{id: elem_2}'curl --request PUT \
--url https://api.courier.com/notifications/{id}/locales/{localeId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"elements": [
{
"id": "elem_1",
"content": "Hola {{data.name}}."
},
{
"id": "elem_2",
"title": "Bienvenido!"
}
],
"state": "DRAFT"
}
'{
"id": "nt_01kx4h2jdafq8bk9aftxak4b40",
"version": "2022-01-01",
"elements": [
{
"id": "elem_1",
"checksum": "abc123"
},
{
"id": "elem_2",
"checksum": "def456"
}
],
"state": "DRAFT"
}{
"type": "invalid_request_error",
"message": "elements: Required"
}{
"type": "invalid_request_error",
"message": "Notification template nt_01kx4kepxgfq9ty3r3wyf61n5t not found"
}Notification Templates
Put Notification Locale
Set locale-specific content overrides for a notification template. Each element override must reference an existing element by ID. Only supported for V2 (elemental) templates.
PUT
/
notifications
/
{id}
/
locales
/
{localeId}
JavaScript
import Courier from '@trycourier/courier';
const client = new Courier({
apiKey: process.env['COURIER_API_KEY'], // This is the default and can be omitted
});
const notificationContentMutationResponse = await client.notifications.putLocale('localeId', {
id: 'id',
elements: [
{ id: 'elem_1', content: 'Hola {{data.name}}.' },
{ id: 'elem_2', title: 'Bienvenido!' },
],
state: 'DRAFT',
});
console.log(notificationContentMutationResponse.id);import os
from courier import Courier
client = Courier(
api_key=os.environ.get("COURIER_API_KEY"), # This is the default and can be omitted
)
notification_content_mutation_response = client.notifications.put_locale(
locale_id="localeId",
id="id",
elements=[{
"id": "elem_1",
"content": "Hola {{data.name}}.",
}, {
"id": "elem_2",
"title": "Bienvenido!",
}],
state="DRAFT",
)
print(notification_content_mutation_response.id)package main
import (
"context"
"fmt"
"github.com/trycourier/courier-go"
"github.com/trycourier/courier-go/option"
)
func main() {
client := courier.NewClient(
option.WithAPIKey("My API Key"),
)
notificationContentMutationResponse, err := client.Notifications.PutLocale(
context.TODO(),
"localeId",
courier.NotificationPutLocaleParams{
ID: "id",
NotificationLocalePutRequest: courier.NotificationLocalePutRequestParam{
Elements: []courier.NotificationLocalePutRequestElementParam{{
ID: "elem_1",
}, {
ID: "elem_2",
}},
},
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", notificationContentMutationResponse.ID)
}package com.courier.example;
import com.courier.client.CourierClient;
import com.courier.client.okhttp.CourierOkHttpClient;
import com.courier.models.notifications.NotificationContentMutationResponse;
import com.courier.models.notifications.NotificationLocalePutRequest;
import com.courier.models.notifications.NotificationPutLocaleParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
CourierClient client = CourierOkHttpClient.fromEnv();
NotificationPutLocaleParams params = NotificationPutLocaleParams.builder()
.id("id")
.localeId("localeId")
.notificationLocalePutRequest(NotificationLocalePutRequest.builder()
.addElement(NotificationLocalePutRequest.Element.builder()
.id("elem_1")
.build())
.addElement(NotificationLocalePutRequest.Element.builder()
.id("elem_2")
.build())
.build())
.build();
NotificationContentMutationResponse notificationContentMutationResponse = client.notifications().putLocale(params);
}
}require "courier"
courier = Courier::Client.new(api_key: "My API Key")
notification_content_mutation_response = courier.notifications.put_locale("localeId", id: "id", elements: [{id: "elem_1"}, {id: "elem_2"}])
puts(notification_content_mutation_response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Courier\Client;
use Courier\Core\Exceptions\APIException;
use Courier\Notifications\NotificationTemplateState;
$client = new Client(apiKey: getenv('COURIER_API_KEY') ?: 'My API Key');
try {
$notificationContentMutationResponse = $client->notifications->putLocale(
'localeId',
id: 'id',
elements: [['id' => 'elem_1'], ['id' => 'elem_2']],
state: NotificationTemplateState::DRAFT,
);
var_dump($notificationContentMutationResponse);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using TryCourier;
using TryCourier.Models.Notifications;
CourierClient client = new();
NotificationPutLocaleParams parameters = new()
{
ID = "id",
LocaleID = "localeId",
Elements =
[
new("elem_1"), new("elem_2")
],
};
var notificationContentMutationResponse = await client.Notifications.PutLocale(parameters);
Console.WriteLine(notificationContentMutationResponse);courier notifications put-locale \
--api-key 'My API Key' \
--id id \
--locale-id localeId \
--element '{id: elem_1}' \
--element '{id: elem_2}'curl --request PUT \
--url https://api.courier.com/notifications/{id}/locales/{localeId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"elements": [
{
"id": "elem_1",
"content": "Hola {{data.name}}."
},
{
"id": "elem_2",
"title": "Bienvenido!"
}
],
"state": "DRAFT"
}
'{
"id": "nt_01kx4h2jdafq8bk9aftxak4b40",
"version": "2022-01-01",
"elements": [
{
"id": "elem_1",
"checksum": "abc123"
},
{
"id": "elem_2",
"checksum": "def456"
}
],
"state": "DRAFT"
}{
"type": "invalid_request_error",
"message": "elements: Required"
}{
"type": "invalid_request_error",
"message": "Notification template nt_01kx4kepxgfq9ty3r3wyf61n5t not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Notification template ID (nt_ prefix).
Locale code (e.g., es, fr, pt-BR).
Body
application/json
Request body for setting locale-specific content overrides. Each element override must include the target element ID.
Response
Locale overrides applied.
Shared mutation response for PUT content, PUT element, and PUT locale operations. Contains the template ID, content version, per-element checksums, and resulting state.
⌘I