List threads across every inbox in the account
Lists thread summaries for the whole account, newest first, using stable
cursor pagination. An agent operating many inboxes gets every
conversation in one call instead of one call per inbox. Each thread
carries its own inbox_id so a reply can be routed back to the right
inbox. Use filter[inbox_id] (repeatable) to narrow the result to
specific inboxes. Because a thread ID can be delivered to multiple
inboxes, each result is identified by its (inbox_id, id) pair.
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const response of client.emailThreads.list()) {
console.log(response);
}import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
page = client.email_threads.list()
print(page.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"),
)
emailThreads, err := client.EmailThreads.List(context.TODO())
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", emailThreads.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
var page = client.emailThreads().list();
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
page = telnyx.email_threads.list
puts(page)<?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 {
$page = $client->emailThreads->list();
var_dump($page);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx email-threads list \
--api-key 'My API Key'curl --request GET \
--url https://api.telnyx.com/v2/email_threads \
--header 'Authorization: Bearer <token>'{
"data": [
{
"id": "33333333-3333-3333-3333-333333333333",
"record_type": "email_thread",
"inbox_id": "11111111-1111-1111-1111-111111111111",
"subject": "Project update",
"preview": null,
"message_count": 2,
"unread_count": 1,
"last_message_id": "55555555-5555-5555-5555-555555555555",
"last_message_at": "2026-07-15T12:30:00Z",
"created_at": "2026-07-14T10:00:00Z",
"updated_at": "2026-07-15T12:30:00Z",
"labels": [
"needs_review"
]
},
{
"id": "44444444-4444-4444-4444-444444444444",
"record_type": "email_thread",
"inbox_id": "22222222-2222-2222-2222-222222222222",
"subject": "Support request",
"preview": null,
"message_count": 1,
"unread_count": 0,
"last_message_id": "66666666-6666-6666-6666-666666666666",
"last_message_at": "2026-07-15T09:00:00Z",
"created_at": "2026-07-15T09:00:00Z",
"updated_at": "2026-07-15T09:00:00Z",
"labels": []
}
],
"meta": {
"page_size": 25,
"page_cursor": "MjAyNi0wNy0xNVQxMjozMDowMFp8MzMzMzMzMzMtMzMzMy0zMzMzLTMzMzMtMzMzMzMzMzMzMzMz"
}
}{
"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": "Email threads are temporarily unavailable. Please try again later."
}
]
}Authorizations
Telnyx API key supplied as Authorization: Bearer <token>. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.
Query Parameters
Restrict results to one or more inboxes. Repeat the parameter
(filter[inbox_id][]=...&filter[inbox_id][]=...) or pass a
comma-separated list. Omit to list every inbox in the account.
Inboxes outside the account are silently excluded. If the filter
is present, it must contain at least one non-empty UUID.
1Number of results to return. Defaults to 25; maximum is 100.
1 <= x <= 100Opaque cursor returned by the previous page.
Returns only threads carrying this label. Matching is exact and case-sensitive. Thread labels are independent of the labels on the thread's messages.
255Was 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
});
// Automatically fetches more pages as needed.
for await (const response of client.emailThreads.list()) {
console.log(response);
}import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
page = client.email_threads.list()
print(page.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"),
)
emailThreads, err := client.EmailThreads.List(context.TODO())
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", emailThreads.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
var page = client.emailThreads().list();
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
page = telnyx.email_threads.list
puts(page)<?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 {
$page = $client->emailThreads->list();
var_dump($page);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx email-threads list \
--api-key 'My API Key'curl --request GET \
--url https://api.telnyx.com/v2/email_threads \
--header 'Authorization: Bearer <token>'{
"data": [
{
"id": "33333333-3333-3333-3333-333333333333",
"record_type": "email_thread",
"inbox_id": "11111111-1111-1111-1111-111111111111",
"subject": "Project update",
"preview": null,
"message_count": 2,
"unread_count": 1,
"last_message_id": "55555555-5555-5555-5555-555555555555",
"last_message_at": "2026-07-15T12:30:00Z",
"created_at": "2026-07-14T10:00:00Z",
"updated_at": "2026-07-15T12:30:00Z",
"labels": [
"needs_review"
]
},
{
"id": "44444444-4444-4444-4444-444444444444",
"record_type": "email_thread",
"inbox_id": "22222222-2222-2222-2222-222222222222",
"subject": "Support request",
"preview": null,
"message_count": 1,
"unread_count": 0,
"last_message_id": "66666666-6666-6666-6666-666666666666",
"last_message_at": "2026-07-15T09:00:00Z",
"created_at": "2026-07-15T09:00:00Z",
"updated_at": "2026-07-15T09:00:00Z",
"labels": []
}
],
"meta": {
"page_size": 25,
"page_cursor": "MjAyNi0wNy0xNVQxMjozMDowMFp8MzMzMzMzMzMtMzMzMy0zMzMzLTMzMzMtMzMzMzMzMzMzMzMz"
}
}{
"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": "Email threads are temporarily unavailable. Please try again later."
}
]
}