List all DIRs across your enterprises
Returns every DIR (Display Identity Record) you own, across all of your enterprises, as a single list. Pagination is JSON:API style (page[number], page[size], max 250). Supports filter[] query params: filter[enterprise_id], filter[status], filter[display_name][contains], filter[call_reason][contains], plus the renewal-window filters filter[expiring_at][gte] / filter[expiring_at][lte]. Sortable by created_at, updated_at, display_name, status (prefix - for descending; default -created_at).
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 dirListResponse of client.dir.list()) {
console.log(dirListResponse.id);
}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.dir.list()
page = page.data[0]
print(page.id)
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"),
)
page, err := client.Dir.List(context.TODO(), telnyx.DirListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.dir.DirListPage;
import com.telnyx.sdk.models.dir.DirListParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
DirListPage page = client.dir().list();
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
page = telnyx.dir.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->dir->list(
filterCallReasonContains: 'filter[call_reason][contains]',
filterDisplayNameContains: 'filter[display_name][contains]',
filterEnterpriseID: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
filterExpiringAtGte: new \DateTimeImmutable('2019-12-27T18:11:19.117Z'),
filterExpiringAtLte: new \DateTimeImmutable('2019-12-27T18:11:19.117Z'),
filterStatus: 'draft',
pageNumber: 1,
pageSize: 20,
sort: 'created_at',
);
var_dump($page);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx dir list \
--api-key 'My API Key'curl --request GET \
--url https://api.telnyx.com/v2/dir \
--header 'Authorization: Bearer <token>'{
"data": [
{
"id": "16635d38-75a6-4481-82e8-69af60e05011",
"enterprise_id": "4a6192a4-573d-446d-b3ce-aff9117272a6",
"display_name": "Acme Plumbing",
"reselling": false,
"certify_brand_is_accurate": true,
"certify_no_shaft_content": true,
"certify_ip_ownership": true,
"authorizer_name": "Sam Owner",
"authorizer_email": "[email protected]",
"logo_url": "https://acmeplumbing.example.com/logo-256.bmp",
"call_reasons": [
{
"reason": "Appointment reminders",
"created_at": "2026-04-26T18:06:51.940749Z"
}
],
"documents": [
{
"document_id": "2a7e8337-e803-4057-a4ae-26c40eb0bc6c",
"document_type": "business_registration",
"description": "Certificate of incorporation."
}
],
"status": "draft",
"rejection_reasons": [
{
"code": "documentation_incomplete",
"title": "Documentation incomplete",
"detail": "Provided documents do not establish business identity.",
"message": "Please re-upload a clearer scan of the certificate."
}
],
"rejected_at": "2023-11-07T05:31:56Z",
"created_at": "2026-04-26T18:06:51.940749Z",
"updated_at": "2026-04-26T18:09:24.785211Z",
"submitted_at": "2026-04-26T18:07:03.716411Z",
"verified_at": "2026-04-26T18:07:29.537926Z",
"expiring_at": "2027-04-26T18:07:29.537981Z",
"delete_requested_at": "2026-04-27T09:12:44.201820Z",
"webhook_url": "https://acmehealthcare.example.com/webhooks/branded-calling"
}
],
"meta": {
"total_pages": 3,
"total_results": 42,
"page_number": 1,
"page_size": 20
}
}Authorizations
Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.
Query Parameters
1-based page number. Out-of-range values return an empty page with correct meta.
x >= 11
Items per page. Maximum 250; values above are clamped to 250.
1 <= x <= 25020
Sort field. Allowed values: created_at, updated_at, display_name, status. Prefix with - for descending. Default -created_at.
created_at, -created_at, updated_at, -updated_at, display_name, -display_name, status, -status Return only DIRs whose expiring_at is at or after this ISO-8601 timestamp. Pairs with the [lte] variant to build renewal-window dashboards.
Return only DIRs whose expiring_at is at or before this ISO-8601 timestamp.
Filter by enterprise ID.
Filter by DIR status. DIR lifecycle status.
draft- newly created; editable; not yet submitted.submitted/in_review- Telnyx is reviewing.verified- approved; phone numbers may be attached.rejected- Telnyx rejected this submission;rejection_reasonsis populated; customer can edit and resubmit.unsuccessful- system-side error during processing; customer can edit and resubmit.suspended- temporarily disabled (e.g. by an active infringement claim).expired- verification expired; customer must resubmit.infringement_claimed- a trademark/impersonation claim is open against this DIR.permanently_rejected- terminal; cannot be resubmitted.delete_requested- you have requested deletion; the DIR still exists and Telnyx is completing the removal (de-registration and cleanup). A verified DIR keeps serving its branded identity, and keeps billing, until the removal finishes.
draft, submitted, in_review, verified, rejected, unsuccessful, suspended, expired, infringement_claimed, permanently_rejected, delete_requested Case-insensitive partial match on display name.
Case-insensitive partial match on call reason.
Response
Paginated list of DIRs across all your enterprises.
Show child attributes
Show child attributes
JSON:API pagination metadata returned with every paginated list response. Page numbering is 1-based. page_size reports the number of items actually returned in data for this page; the requested size is taken from the page[size] query parameter.
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
});
// Automatically fetches more pages as needed.
for await (const dirListResponse of client.dir.list()) {
console.log(dirListResponse.id);
}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.dir.list()
page = page.data[0]
print(page.id)
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"),
)
page, err := client.Dir.List(context.TODO(), telnyx.DirListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.dir.DirListPage;
import com.telnyx.sdk.models.dir.DirListParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
DirListPage page = client.dir().list();
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
page = telnyx.dir.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->dir->list(
filterCallReasonContains: 'filter[call_reason][contains]',
filterDisplayNameContains: 'filter[display_name][contains]',
filterEnterpriseID: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
filterExpiringAtGte: new \DateTimeImmutable('2019-12-27T18:11:19.117Z'),
filterExpiringAtLte: new \DateTimeImmutable('2019-12-27T18:11:19.117Z'),
filterStatus: 'draft',
pageNumber: 1,
pageSize: 20,
sort: 'created_at',
);
var_dump($page);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx dir list \
--api-key 'My API Key'curl --request GET \
--url https://api.telnyx.com/v2/dir \
--header 'Authorization: Bearer <token>'{
"data": [
{
"id": "16635d38-75a6-4481-82e8-69af60e05011",
"enterprise_id": "4a6192a4-573d-446d-b3ce-aff9117272a6",
"display_name": "Acme Plumbing",
"reselling": false,
"certify_brand_is_accurate": true,
"certify_no_shaft_content": true,
"certify_ip_ownership": true,
"authorizer_name": "Sam Owner",
"authorizer_email": "[email protected]",
"logo_url": "https://acmeplumbing.example.com/logo-256.bmp",
"call_reasons": [
{
"reason": "Appointment reminders",
"created_at": "2026-04-26T18:06:51.940749Z"
}
],
"documents": [
{
"document_id": "2a7e8337-e803-4057-a4ae-26c40eb0bc6c",
"document_type": "business_registration",
"description": "Certificate of incorporation."
}
],
"status": "draft",
"rejection_reasons": [
{
"code": "documentation_incomplete",
"title": "Documentation incomplete",
"detail": "Provided documents do not establish business identity.",
"message": "Please re-upload a clearer scan of the certificate."
}
],
"rejected_at": "2023-11-07T05:31:56Z",
"created_at": "2026-04-26T18:06:51.940749Z",
"updated_at": "2026-04-26T18:09:24.785211Z",
"submitted_at": "2026-04-26T18:07:03.716411Z",
"verified_at": "2026-04-26T18:07:29.537926Z",
"expiring_at": "2027-04-26T18:07:29.537981Z",
"delete_requested_at": "2026-04-27T09:12:44.201820Z",
"webhook_url": "https://acmehealthcare.example.com/webhooks/branded-calling"
}
],
"meta": {
"total_pages": 3,
"total_results": 42,
"page_number": 1,
"page_size": 20
}
}