Add labels to an inbox message
Adds one or more mutable labels to a message. Labels carry agent
workflow state such as spam, needs_review, or processed.
Labels are not the same as the send-time tags on outbound
messages: tags are immutable and propagate to Email Detail Records
and Mission Control for billing attribution, while labels are mailbox
state that never reaches the reporting contract.
The operation is an idempotent set union — adding a label the message already carries is a no-op and still returns 200. Labels are case-sensitive, and message labels are independent of thread labels.
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.emailInboxes.messages.labels.create('inbox_id', 'message_id', {
labels: [],
});
console.log(response.data);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.email_inboxes.messages.labels.create(
inbox_id="inbox_id",
message_id="message_id",
labels=[],
)
print(response.data)package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
label, err := client.EmailInboxes.Messages.Labels.New(
context.TODO(),
"inbox_id",
"message_id",
telnyx.EmailInboxeMessageLabelNewParams{
Labels: "labels",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", label.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.emailInboxes.messages.labels.LabelCreateParams;
import java.util.List;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
LabelCreateParams params = LabelCreateParams.builder()
.labels(List.of())
.build();
var response = client.emailInboxes().messages().labels().create("inbox_id", "message_id", params);
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.email_inboxes.messages.labels.create("inbox_id", "message_id", labels: [])
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->emailInboxes->messages->labels->create(
'inbox_id',
'message_id',
labels: [],
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx email-inboxes:messages:labels create \
--api-key 'My API Key' \
--inbox-id inbox_id \
--message-id message_id \
--labels labelscurl --request POST \
--url https://api.telnyx.com/v2/email_inboxes/{inbox_id}/messages/{message_id}/labels \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"labels": [
"spam",
"urgent"
]
}
'{
"data": {
"id": "55555555-5555-5555-5555-555555555555",
"record_type": "email_message",
"direction": "inbound",
"status": "received",
"inbox_id": "11111111-1111-1111-1111-111111111111",
"thread_id": "33333333-3333-3333-3333-333333333333",
"message_id": "<message@example.com>",
"in_reply_to": "<earlier@example.com>",
"references": [
"<earlier@example.com>"
],
"from": {
"email": "alice@example.com",
"name": "Alice"
},
"to": [
{
"email": "agent@inbox.example.test"
}
],
"cc": [],
"bcc": [],
"reply_to": [],
"subject": "Project update",
"text_body_url": null,
"html_body_url": null,
"reply_text": "Thanks, I will send it today.",
"has_quoted_text": true,
"headers": {},
"inline_files": [],
"attachments": [],
"labels": [
"spam",
"urgent"
],
"read_at": null,
"received_at": "2026-07-15T12:30:00Z",
"sent_at": null,
"created_at": "2026-07-15T12:30:00Z",
"updated_at": "2026-07-15T12:30:00Z"
}
}{
"errors": [
{
"code": "10006",
"title": "Not authorized",
"detail": "Invalid API key",
"meta": {
"url": "https://developers.telnyx.com/docs/overview/errors/10006"
}
}
]
}{
"errors": [
{
"code": "10001",
"title": "Not Found",
"detail": "The requested resource was not found"
}
]
}{
"errors": [
{
"code": "10015",
"title": "Validation Failed",
"detail": "subject can't be blank",
"source": {
"pointer": "/data/attributes/subject"
}
}
]
}{
"errors": [
{
"code": "10016",
"title": "Service Unavailable",
"detail": "Inbox labels are temporarily unavailable. Please try again later."
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Email inbox UUID.
Inbound message UUID.
Body
Labels to add or remove. Both operations are idempotent set operations, so a retried request converges instead of failing.
One or more labels. Each label is a freeform, case-sensitive string of at most 255 characters; a message or thread may carry at most 50 labels. The telnyx: prefix is a reserved system namespace and is rejected on customer writes.
1 - 50 elements1 - 255Response
The updated message, including its current label set.
Show child attributes
Show child attributes
Was this page helpful?
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.emailInboxes.messages.labels.create('inbox_id', 'message_id', {
labels: [],
});
console.log(response.data);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.email_inboxes.messages.labels.create(
inbox_id="inbox_id",
message_id="message_id",
labels=[],
)
print(response.data)package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
label, err := client.EmailInboxes.Messages.Labels.New(
context.TODO(),
"inbox_id",
"message_id",
telnyx.EmailInboxeMessageLabelNewParams{
Labels: "labels",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", label.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.emailInboxes.messages.labels.LabelCreateParams;
import java.util.List;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
LabelCreateParams params = LabelCreateParams.builder()
.labels(List.of())
.build();
var response = client.emailInboxes().messages().labels().create("inbox_id", "message_id", params);
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.email_inboxes.messages.labels.create("inbox_id", "message_id", labels: [])
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->emailInboxes->messages->labels->create(
'inbox_id',
'message_id',
labels: [],
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx email-inboxes:messages:labels create \
--api-key 'My API Key' \
--inbox-id inbox_id \
--message-id message_id \
--labels labelscurl --request POST \
--url https://api.telnyx.com/v2/email_inboxes/{inbox_id}/messages/{message_id}/labels \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"labels": [
"spam",
"urgent"
]
}
'{
"data": {
"id": "55555555-5555-5555-5555-555555555555",
"record_type": "email_message",
"direction": "inbound",
"status": "received",
"inbox_id": "11111111-1111-1111-1111-111111111111",
"thread_id": "33333333-3333-3333-3333-333333333333",
"message_id": "<message@example.com>",
"in_reply_to": "<earlier@example.com>",
"references": [
"<earlier@example.com>"
],
"from": {
"email": "alice@example.com",
"name": "Alice"
},
"to": [
{
"email": "agent@inbox.example.test"
}
],
"cc": [],
"bcc": [],
"reply_to": [],
"subject": "Project update",
"text_body_url": null,
"html_body_url": null,
"reply_text": "Thanks, I will send it today.",
"has_quoted_text": true,
"headers": {},
"inline_files": [],
"attachments": [],
"labels": [
"spam",
"urgent"
],
"read_at": null,
"received_at": "2026-07-15T12:30:00Z",
"sent_at": null,
"created_at": "2026-07-15T12:30:00Z",
"updated_at": "2026-07-15T12:30:00Z"
}
}{
"errors": [
{
"code": "10006",
"title": "Not authorized",
"detail": "Invalid API key",
"meta": {
"url": "https://developers.telnyx.com/docs/overview/errors/10006"
}
}
]
}{
"errors": [
{
"code": "10001",
"title": "Not Found",
"detail": "The requested resource was not found"
}
]
}{
"errors": [
{
"code": "10015",
"title": "Validation Failed",
"detail": "subject can't be blank",
"source": {
"pointer": "/data/attributes/subject"
}
}
]
}{
"errors": [
{
"code": "10016",
"title": "Service Unavailable",
"detail": "Inbox labels are temporarily unavailable. Please try again later."
}
]
}