arrow-left

Only this pageAll pages
gitbookPowered by GitBook
1 of 25

Verified Business APIs

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Webhooks

To help you stay informed about events related to the features in your enterprise plan, you can easily configure Webhooks (also known as HTTP callbacks) directly on our Self-serve platform. This ensures your systems are automatically notified, keeping you seamlessly updated.

circle-info

Webhooks are currently available for two key features: Call Me Back and User Feedback.

circle-check

Should you wish to learn more about how webhooks can benefit your operations, please don't hesitate to contact us at: [email protected]. We'd be happy to assist you!

Deprecated API's

This Page lists all the Deprecated API which should not be used for new customers.

Authentication

This page provides the steps to generate the Key ID and Secret API Key.

hashtag
Generate API Keys

circle-check

API keys are used to ensure the authenticity of interactions between your application and Truecaller for Business APIs.A maximum of 10 tokens can be created every 30 minutes.

  1. Truecaller for Business uses API keys for authenticating API requests.

  2. You can view and manage your API keys from the True caller for Business console.

  3. Click on “Manage API Keys” from the overflow menu beside the account name in the left hand side panel of the console.

  4. Click on the “Create API Key” button.

  5. Enter the Key Name and Description (optional). You can see the access level underneath the description box for all available features.

  6. Click on “Generate”. This will take you to the screen which has the option to copy/save the Key ID and Secret API Key. This file should be downloaded and kept securely.

triangle-exclamation

A total of 5 API Keys can be configured under a customer account at a given point in time.

triangle-exclamation

Customers will not be able to see the secret key and key ID once generated. It is advised that you should copy the secret key and key ID and save it in a safe and secure folder. In case if you have failed to secure the secret key and key ID ,there is an option to regenerate the secret key and key ID using the regenerate option on the Manage API Keys Page

List Number

This API is used to list the business numbers on the Truecaller Portal

circle-check

Replace the {{BaseURL}} with the one mentioned here

triangle-exclamation

The maximum limit to list is 10,000 numbers per feature set.

POST{{BaseURL}}/clients/{clientAccountId}/number_management/feature_sets/{featureSetId}/numbers/publish

circle-check

{clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

{featureSetId}: This can be taken directly from the feature set configuration page on the self serve portal

circle-exclamation

For Authorization Token kindly refer the section followed by API

Headers

Name
Value

Body

Name
Type
Validations
Description

hashtag
Request

Response

Getting Started

Welcome to the API Documentation for our Verified Business Caller ID Solution!

In this you'll find everything you need to seamlessly integrate our APIs into your systems. Our clear, step-by-step guides and detailed references are designed to help you streamline your processes, enhance customer interactions, and drive operational efficiency. Explore the documentation and unlock the full potential of our solution today.

hashtag
API URLs to be used

circle-info

Base URL : https://enterprise-portal-noneu.truecaller.comarrow-up-right

circle-info

Note: The above URL is for API requests only. The corresponding frontend web application URL where you can log in and verify the data is https://business.truecaller.com/signinarrow-up-right

Content-Type

Required

application/json

Authorization

Required

Bearer <token>

phone_numbers

string

NA

Additionally, there’s a separate maximum limit associated with the client account ID.numbers to be added to feature set

Authenticationarrow-up-right
Generate Access Tokenarrow-up-right
{
  "phone_numbers": [
    "911234567891"
  ]
}
{
    "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
    "created_by_email": "[email protected]",
    "phone_type": "verified",
    "new_numbers": [
        "911234567891"
    ],
    "other_phonetype_numbers": [],
    "existing_numbers": [],
    "others_numbers": [],
    "invalid_numbers": [],
    "other_feature_set_numbers": [],
    "status": "pending",
    "migrated_numbers": [],
    "delisted_numbers": [],
    "updated_numbers": []
}
{
    "slug": "forbidden-error",
    "message": "not authorized. please contact your admin."
}

Event Types

We support Call Me Back and User Feedback events for webhooks. Each event has its resources that can be referred from the resource column.

Event
Event Trigger
Resources

Call me back

When a user requests a call me back from the Truecaller App in the scenario of a missed / rejected call

  • Type - Feature for which the webhook is being used.

  • Created At - Event creation time.

  • JSON content - Structure of payload data that is sent to the Business Client.

User Feedback

When a user responds to a campaign based on the type of call, answered or missed / rejected. This response is from the campaign on the Truecaller app.

  • Type: Feature for which the webhook is being used.

  • Created at: event creation time.

  • JSON content: structure of payload data that is sent to the business client.

Configure your systems to consume webhook response by assigning appropriate fields to the below scenarios :

Payload - Call Me Back

#For Customers with Slot Picker

hashtag
Payload - User Feedback

Call Personalisation (Bulk)

Async API to send call personalisation data for a Caller-Receiver combination

circle-check

Replace the {{BaseURL}} with the one mentioned here

POST {{BaseURL}}/clients/{clientAccountId}/dynamic_call_records

circle-check

{clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

Headers

Name
Value

Body

Name
Type
Validations
Description

hashtag
Request

Response

triangle-exclamation

API Rate Limits

  • Truecaller for Business restricts API requests when you exceed the limits entitled to your business.

  • Each token can handle 100 requests per second

  • Maximum of 10 tokens can be created in every 30 minutes

DeList Number

This API is used to delist and remove business numbers from the client account and its feature-set.

circle-check

Replace the {{BaseURL}} with the one mentioned

POST{{BaseURL}}/clients/{clientAccountId}/number_management/feature_sets/{featureSetId}/numbers/delist

Batch Status

Fetch status of records for Batch-ID returned in the Bulk Call Personalisation API.

circle-check

Replace the {{BaseURL}} with the one mentioned

GET {{BaseURL}}/clients/{clientAccountId}/dynamic_call_records

Number Management

Businesses can efficiently automate the management of their Truecaller business numbers using our comprehensive Number Management APIs.

These APIs offer a robust set of features to streamline various tasks, including:

  • Listing Verified Numbers: Register and display your business numbers as verified on the Truecaller platform.

  • Delisting Numbers: Easily remove numbers that are no longer in use, ensuring accuracy and relevance.

  • Retrieving Verified Number Information: Access detailed information about your verified numbers.

  • Managing Feature Sets: Obtain Feature Set IDs to organise and control numbers within specific feature sets.

By leveraging these APIs, businesses can significantly simplify and automate their number ownership and management processes, ensuring that their Truecaller profiles are always accurate and up-to-date.

triangle-exclamation

When you use our APIs to list or delist a number, these operations are asynchronous. This means they don't happen instantly; there's a processing period.

It's important to know that if you try to delist a number and then immediately list the same number while the delisting is still being processed (i.e., it hasn't been fully delisted or failed), your subsequent listing request for that number will be ignored. It won't be picked up for processing until the initial delisting action is complete.

ends_at

integer (int64)

NA

Required The timestamp in milliseconds at which dynamic caller ID should expire. Should not be before the current timestamp. starts_at and ends_at cannot be more than 24 hrs apart

label_id

string

NA

Optional The label ID of the dynamic label to be used as caller id

label_name

string

minLength: 3 maxLength: 40

Required The caller ID name to be displayed. If not present it will default to the label name of the label ID provided.

receiver

string

Format Supported:"91**********" Receiver number should be without the “+” character.

Required The phone no. of the receiver

starts_at

integer (int64)

NA

Required The timestamp in milliseconds at which dynamic caller ID should start reflecting.

starts_at and ends_at cannot be more than 24 hrs apart

Content-Type

Required

application/json

Authorization

Required

Bearer <token>

call_records

object

NA

Call Record object

call_reason

string

minLength: 3 maxLength: 10

Optional

The call reason to be displayed.

caller

string

Format Supported:"91**********"

Caller number should be without the “+” character.

{
    "call_records": [
        {
            "call_reason": "Flower Delivery",
            "caller": "**********",
            "ends_at": 2,
            "label_id": "255297eb-7f13-44f9-967a-f287ff0f5025",
            "label_name": "Flower",
            "receiver": "**********",
            "starts_at": 1
        }
    ]
}

Required The phone no. of the caller

// For Customers with Slot Picker - Scenario 1
// Happy Flow

{
  "event_id": "860a7f4c-6545-40f1-85be-3655edde650f",
  "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
  "event_type": "cmb",
  "created_at": "1753945760",
  "cmb_payload": {
    "business_number": "910987654321",
    "feature_set": "Fresh Flower Delivery",
    "client_number": "911234567890",
    "requested_at": "1753945760",
    "requested_date": "2025-08-02",
    "requested_slot": "Saturday",
    "preferred_from_time": "1754116200",
    "preferred_to_time": "1754118000",
    "is_interested": true,
    "alternate_number": "",
    "cmb_config_name": "CMBName"
  }
}
// For Customers with Slot Picker - Scenario 2
// SIMinfo related issues on device

{
  "event_id": "119be0c3-d23f-4728-8e42-d936c2e8dad6",
  "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
  "event_type": "cmb",
  "created_at": "1753945773",
  "cmb_payload": {
    "business_number": "910987654321",
    "feature_set": "Testfeature",
    "client_number": "Phone number not available",
    "requested_at": "1753945773",
    "requested_date": "2025-08-02",
    "requested_slot": "Friday",
    "preferred_from_time": "1754031600",
    "preferred_to_time": "1754033400",
    "is_interested": true,
    "alternate_number": "911234567898",
    "cmb_config_name": "CMBName"
  }
}
// For Customers with Slot Picker - Scenario 3 
// Customers who are Not Interested 

{
  "event_id": "17c023e6-444c-4938-b09f-69b31aa2e55a",
  "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
  "event_type": "cmb",
  "created_at": "1761719222",
  "cmb_payload": {
    "business_number": "911234567897",
    "feature_set": "New Feature Set-12",
    "client_number": "918765432198",
    "requested_at": "1761719222",
    "requested_date": "NA",
    "requested_slot": "NA",
    "preferred_from_time": null,
    "preferred_to_time": null,
    "is_interested": false,
    "alternate_number": "",
    "cmb_config_name": "CMBName"
  }
}
{
  "event_id": "7719f451-5436-470a-98ba-422b997582f8",
  "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
  "event_type": "user_feedback",
  "created_at": "1753946877",
  "survey_payload": {
    "name": "Flower Quality Check",
    "business_number": "+910987654321",
    "feature_set": "Fresh Flower Delivery",
    "client_number": "911234567890",
    "requested_at": "1753946877",
    "user_responses": [
      {
        "question": "How was the delivery experience?",
        "response": "5"
      },
      {
        "question": "Flower Quality?",
        "response": "Good"
      }
    ]
  }
}
{
    "status": "success",
    "message": "Records Uploaded Successfully. BatchID: 6dabe53b-14a5-44bf-9bab-3dda8b0fee54"
}
{
    "status": "failure",
    "message": "ends_at cannot be older than current time. BatchID: d30ca8f7-ae64-4c30-8700-d63f6b2f1dd6"
}
{
    "slug": "authorization-error",
    "message": "please login again"
}
circle-check

{clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

{featureSetId}: This can be taken directly from the feature set configuration page on the self serve portal

circle-exclamation

For Authorization Token kindly refer the Authenticationarrow-up-right section followed by Generate Access Tokenarrow-up-right API

Headers

Name
Value

Content-Type

Required

application/json

Authorization

Required

Bearer <token>

Body

Name
Type
Validations
Description

phone_numbers

string

minLength: 1 maxLength: 10000

Required.

List of phone numbers to be added to feature set

hashtag
Request

Response

here
circle-check

{clientAccountId} This can be taken directly from the self serve portal under the Manage API Keys Page

hashtag
Query Parameter

Name
Value

batchId

Required

This is received from the Create Dynamic Call Records API response

Headers

Name
Value

Authorization

Required

Bearer <token>

Response

[
    {
        "id": "
{
    "slug": "internal-server-error",
here

Call Personalisation Real-time v2

Real-time synchronous API to personalize calls for a given Caller-Receiver combination

circle-check

Replace the {{BaseURL}} with the one mentioned here

POST {{BaseURL}}/v2/clients/{clientAccountId}/dynamic_call_record

circle-check

{clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

triangle-exclamation

This API can handle 100 requests per second per token.

circle-exclamation

For Authorization Token kindly refer the section followed by API

Headers

Name
Value

Body

Name
Type
Validations
Description

hashtag
Request

Response

Webhook Configuration

circle-exclamation

A total of 5 webhooks can be configured under a customer account at a given point in time.

To configure your webhooks, simply follow these steps:

  1. Access Webhook Management: Click on the overflow menu (usually represented by three dots or lines) and select "Manage Webhooks."

  2. Create a New Webhook: Click on the "Create webhook" button to begin adding a new webhook.

  3. Enter Webhook Details:

    • Webhook Name: Provide a descriptive name for your webhook in the designated field. This name will be used to identify the webhook within the Truecaller for Business console. Please ensure the name is unique at any given time and does not exceed 50 characters.

    • Webhook URL: Enter the endpoint to which Truecaller should send the webhook notifications. For enhanced security, you might consider including a self-generated key as part of your URL (e.g., https://server.yourcompany.com/tcbiz-webhook?key=<yourkey>

  4. Select Event Type: Choose the specific type of webhook event you wish to receive notifications for. Currently, webhooks are available for Call Me Back and User Feedback events. Whenever a response occurs for these enabled features, we will capture it as an event and send it to your configured URL.

    You can review event logs for your webhooks on both the "Manage Webhooks" page and the dedicated "Webhook events" page. Detailed information for each event is available on its respective event details page, with logs retained for the last 30 days.

  5. Finalize Creation: Once all the required details are filled, click "Create." Your webhook will now be successfully set up.

  6. Test Your Webhook : After creation, you can test your webhook to ensure it's functioning correctly.

    • Click on "Test Webhook" next to an existing webhook.

    • Select the event you wish to test (the default is "Call Me Back").

hashtag
Update or Delete Webhook

circle-check

Webhook should respond with status code 2XX and content type should be application/json along with json body

User Feedback

The User Feedback API helps you to download logs for User Feedback campaigns running on the numbers where this feature has been enabled

circle-check

Replace the {{BaseURL}} with the one mentioned here

GET /clients/{clientAccountId}/openapi/feedback_stack/{surveyId}/export_report

circle-check

{clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

Headers

Name
Value

Query Parameter

Name
Type
Description

Response

Call Reason Errors

You can find explanations for errors related to Call Reason in this section.

  1. Invalid input: The issue is with the request payload. Please check if the request body is well-formed, the key names and values are as per the API documentation. Special characters, if any, are not allowed in the call reason. For more details on special characters, refer to this linkarrow-up-right.

  2. Not a Truecaller user: The receiver is not a Truecaller user, or they might have uninstalled the app or switched to a new device that does not have Truecaller installed.

  3. OS not supported: User is on an operating system other than Android. Please note that personalized call reason is only available for Android devices.

  4. App version not supported: User is on a very old version of Android which is not supported now.

  5. Failed to push: This is returned when system is unable to establish a connection with user's device. Reasons can include but are not limited to:

    1. Out of network zone

    2. Bad internet

Call Me Back

The Call Me Back API helps you to download Call Me Back requests for the numbers for which this feature has been enabled.

circle-check

Replace the {{BaseURL}} with the one mentioned

GET /clients/{clientAccountId}/openapi/callback-logs/summary

Webhook Timeouts

Truecaller for Business implements three distinct timeouts for webhooks to ensure reliable and efficient delivery of notifications:

  • Connection Timeout: This timeout governs the duration allowed for establishing the initial connection to your webhook URL's HTTP server.

  • Read Timeout: Once the connection is successfully established, this timeout sets the maximum waiting period for reading data from the HTTP server at any point during the process.

{
  "phone_numbers": [
    "911234567891"
  ]
}
{
    "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
    "phone_type": "",
    "processing_numbers": [],
    "new_numbers": [],
    "other_phonetype_numbers": [],
    "existing_numbers": [
        "911234567891"
    ],
    "others_numbers": [],
    "invalid_numbers": [],
    "other_feature_set_numbers": [],
    "status": "pending"
}
{
    "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
    "phone_type": "",
    "processing_numbers": [],
    "new_numbers": [
        "911234567891"
    ],
    "other_phonetype_numbers": [],
    "existing_numbers": [],
    "others_numbers": [],
    "invalid_numbers": [],
    "other_feature_set_numbers": [],
    "status": "failed"
}
Airplane mode
3ce1e19f-182d-4f04-ae28-422ca9f0bcd4
"
,
"client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
"batch_id": "c951e498-abf3-4e50-ba94-a8065ca743f4",
"caller": "************",
"receiver": "************",
"label_id": "c6d86658-008d-4c08-98fb-2bf2649d59a5",
"label_name": "Flower",
"call_reason": "Flower Delivery",
"starts_at": 1752760800000,
"ends_at": 1752868800000,
"status": "success",
"created_at": "2025-07-17T08:52:55.383Z"
}
]
"message": "500/50011 - Failed to parse token"
}
).
Click "Test URL" to send a test notification.

Authorization

Required

Bearer <token>

from_date

string

Required

API NOT WORKING
{
    "message": "No CMB found for client Id"
}

label_id

string

NA

Optional The label ID of the dynamic label to be used as caller id

dynamic_label_name

string

minLength: 3 maxLength: 40

Required The caller ID name to be displayed. If not present it will default to the label name of the label ID provided.

receiver_number

string

NA

Required The phone no. of the receiver

starts_at

integer (int64)

Epoch timestamp in milliseconds

Required The timestamp in milliseconds at which dynamic caller ID should start reflecting.

starts_at and ends_at cannot be more than 24 hrs apart

Content-Type

Required

application/json

Authorization

Required

Bearer <token>

dynamic_call_reason

string

minLength: 10 maxLength: 100

Optional.

The call reason to be displayed.

caller_number

string

Format Supported:"91**********"

Required The phone no. of the caller

ends_at

integer (int64)

Epoch timestamp in milliseconds

Authenticationarrow-up-right
Generate Access Tokenarrow-up-right

Required The timestamp in milliseconds at which dynamic caller ID should expire. Should not be before the current timestamp. starts_at and ends_at cannot be more than 24 hrs apart

{
    "label_id": "c6d86658-008d-4c08-98fb-2bf2649d59a5",
    "dynamic_label_name": "Flower rasm",
    "dynamic_call_reason": "Flower Delivery",
    "caller_number": "911234567898", 
    "receiver_number": "919234567898",
    "starts_at": 1753088751000,
    "ends_at": 1753103151000
}
{
    "status_info": {
        "status": "success",
        "message": "Record processed successfully"
    }
{
    "status_info": {
        "status": "error",
        "field": "ends_at",
        "message": "Request body is invalid: ends_at cannot be older than current time"
    }
}
circle-check

{clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

Headers

Name
Value

Authorization

Required

Bearer <token>

Query Parameter

Name
Type
Description

from

string

Required Start time in milliseconds

to

string

Required End time in milliseconds

Response

API NOT WORKING
{
    "message": "No CMB found for client Id"
here
Total Webhook Timeout: Beyond the connection and read timeouts, Truecaller for Business also enforces a comprehensive timeout that limits the total execution time for any single webhook call.

The values for each timeout are as follows:

Timeout
Duration

Connection Timeout

20,000 ms

Read Timeout

20,000 ms

Webhook Execution Timeout

60,000 ms

Webhook execution can fail due to timeouts or errors. For each event where webhook call fails, the calls are retried up to 7 times based on the following schedules:

Retry
Time

1

2 minutes after the failure

2

6 minutes after the previous retry

3

30 minutes after the previous retry

4

1 hour after the previous retry

5

5 hours after the previous retry

6

1 day after the previous retry

These details are mentioned in the webhook event page.

Call Personalisation

circle-info

Build secure and personalised calling experiences with end to end authentication of every call. Deliver personalised context and identity with APIs that seamlessly integrate into your existing calling infrastructure.

hashtag
Here are some use cases for Call Personalisation APIs:

  • Enhance your Verified Business identity by making every call secure with call-by-call assurance through an automated signing process.

  • Calling operations done through non-company owned numbers where a permanent identity cannot be listed.

  • Scheduled calling operations that are run daily, where your business wants to add a clean identity and personalised call context for optimal performance.

  • Calls often made from one business number to multiple users.

  • Refreshing your identity on Truecaller easily, if your business has limited calling numbers.

hashtag
Pre-requisites for using Call Personalisation APIs:

  • Android Device Pre-requisite: Please make sure that the settings mentioned in this documentation are followed for the Dynamic Caller Id to work.

  • iOS Device – Live Caller ID Limitation:Dynamic Caller ID is currently not supported on iOS devices. However, Static Caller ID can still be enabled and used on iOS. For settings on iOS, kindly refer

  • Dynamic Label ID: Only “Dynamic Label IDs” can be used in the API request for placing calls.

  • A subscription to a package that includes Call Personalisation APIs.

hashtag
Integration steps:

  • hashtag
    .

  • hashtag

circle-check

If your business is interested in knowing more about Call Personalisation APIs, please reach out to -> [email protected]

Details of Dynamic Label

This API is used to get the details of the Dynamic Labels created on the Truecaller

circle-check

Replace the {{BaseURL}} with the one mentioned here

GET {{BaseURL}}/clients/{clientAccountId}/labels

circle-check

{clientAccountId} This can be taken directly from the self serve portal under the Manage API Keys Page

circle-exclamation

For Authorization Token kindly refer the section followed by API

Headers

Name
Value

Response

Number details

This API is used to get meta-data of listed business numbers.

circle-check

Replace the {{BaseURL}} with the one mentioned

GET{{BaseURL}}/clients/{clientAccountId}/number_management/numbers

Generate Access Token

This API is used to generate an access token using the Key ID and Secret API Key created from the Manage API Keys page

circle-exclamation

Validity of the auth token is 60min ,post that we need to recall the API for fresh auth token value.

circle-check

Replace the {{BaseURL}}

Error scenarios for Webhooks

This page list the errors which we can encounter while using the webhooks.

There are 3 error scenarios for webhooks:

  1. Webhook not found :For each webhook event triggered, we fetch the latest configuration of webhook ( this is needed in case if the webhook url is updated or the config is deleted). If config is deleted, we get webhook_not_found .

  2. Events:

}

Rescheduled error: This state of the event occurs when we are unable to send webhook request ( i.e. we didnt get 200 OK response ) in first attempt, retry logic kicks in.

  • Webhook Deleted: Webhook config is deleted.

  • Webhook Failed: We retry webhook events 7 times, if none of the attempts are successful, admins receive failure email.

  • These dynamic label IDs need to be created in the Truecaller for Business console, after which the dynamic label ID can be copied from the Caller ID page in the console
    Generate Access Tokenarrow-up-right.
  • hashtag
    Create a dynamic label on Truecaller for Business console:

    • Log in to the Truecaller for Business console.

    • Navigate to Business Identity in the left hand side panel.

    • Click on "Identity" and then go to the Caller ID Details section.

    • Click on "Create a Label".

    • Select the caller ID type as Dynamic Caller ID.

    • Add a logo for your dynamic caller ID. The logo should be a PNG file, with dimensions 200x200 and file size less than 2 MB.

    • Add a label name of less than 40 characters for your Dynamic Caller ID.

    • Choose the category for your business from the dropdown after creating a label name.

    • Click on "Create Caller ID' to finish creating your dynamic caller ID.

  • hashtag
    Check the status of pushed records.

  • hashtag
    Hit the dialer and place the call.

  • herearrow-up-right
    herearrow-up-right
    Create an API Key

    7

    2 days after the previous retry

    Authorization

    Required

    Bearer <token>

    Authenticationarrow-up-right
    Generate Access Tokenarrow-up-right
    [
        {
            "id": "255297eb-7f13-44f9-967a-f287ff0f5025",
            "name": "FlowerEra",
            "logo_url": "https://business-priority-media-noneu.truecaller.com/staging/logos/06930f35-4b9c-4144-b748-9ace309c70d2-1751871235271177747.png",
            "category": 10,
            "sub_category": 142,
            "created_by_email": "[email protected]",
            "created_at": "2025-07-07T06:53:55.402122Z",
            "label_type": "dynamic"
        },
        {
            "id": "d3c2ff94-beb4-412f-a7d5-daebf9596cfa",
            "name": "test-label-priority",
            "logo_url": "https://business-priority-media-noneu.truecaller.com/staging/logos/06930f35-4b9c-4144-b748-9ace309c70d2-1739786448319894688.png",
            "category": 1,
            "sub_category": 16,
            "created_by_email": "[email protected]",
            "created_at": "2025-02-17T10:00:48.506685Z",
            "label_type": "dynamic"
        }
    ]
    {
        "slug": "forbidden-error",
        "message": "not authorized. please contact your admin."
    }
    circle-check

    {clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

    hashtag
    Query Parameters

    Name
    Value
    Type

    department_id

    optional, to filter by department

    string

    operation_id

    optional, to filter by operation

    string

    process_id

    optional, to filter by process or subprocess

    string

    feature_set_id

    optional, to filter by feature set

    string

    circle-exclamation

    For Authorization Token kindly refer the Authenticationarrow-up-right section followed by Generate Access Tokenarrow-up-right API

    hashtag
    Header

    Name
    Value

    Authorization

    Required

    Bearer <token>

    Response

    here
    with the one mentioned

    POST {{BaseURL}/clients/{clientAccountId}/token

    circle-check

    {clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

    Headers

    Name
    Value
    Description

    X-Public-Access

    allow

    Required

    Body

    Name
    Type
    Description

    api_key

    string

    Required API key from the Manage API Keys Page

    key_id

    string

    Required Key ID from the Manage API Keys Page

    hashtag
    Request

    Response

    here

    Call Personalization Batch v2 Status

    Each record indicates whether the record was successfully pushed or not.

    circle-check

    Replace the {{BaseURL}} with the one mentioned here

    GET {{BaseURL}}/v2/clients/{clientAccountId}/dynamic_call_records

    circle-check

    {clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

    circle-exclamation

    For Authorization Token kindly refer the section followed by API

    Headers

    Name
    Value

    hashtag
    Query Parameter

    Name
    Value
    Type

    Response

    Call Personalisation Batch v2

    This endpoint pushes the dynamic caller ID details to the respective TC users.

    circle-check

    Replace the {{BaseURL}} with the one mentioned

    POST {{BaseURL}}/v2/clients/{clientAccountId}/dynamic_call_records

    {
        "numbers": [
            {
                "phone_number": "918848628575230",
                "phone_type": "verified",
                "status": "listed",
                "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
                "created_by_email": "[email protected]",
                "department": "TestingSanity",
                "operation": "Collections",
                "process": "SanityProcess",
                "subprocess": "",
                "feature_set_name": "New Feature set",
                "call_me_back": "enabled",
                "created_at": "2025-07-28T09:25:19.557139Z",
                "updated_at": "2025-07-28T09:25:23.644159Z",
                "label_name": "testLabel from fs page"
            },
            {
                "phone_number": "918735783247237",
                "phone_type": "verified",
                "status": "listed",
                "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
                "created_by_email": "[email protected]",
                "department": "TestingSanity",
                "operation": "Collections",
                "process": "SanityProcess",
                "subprocess": "",
                "feature_set_name": "New Feature set",
                "call_me_back": "enabled",
                "created_at": "2025-07-28T09:25:19.557139Z",
                "updated_at": "2025-07-28T09:25:23.671083Z",
                "label_name": "testLabel from fs page"
            }
        ],
        "pagination_information": {
            "total_page_count": 8
        }
    }
    {
        "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
        "phone_type": "",
        "processing_numbers": [],
        "new_numbers": [
            "911234567891"
        ],
        "other_phonetype_numbers": [],
        "existing_numbers": [],
        "others_numbers": [],
        "invalid_numbers": [],
        "other_feature_set_numbers": [],
        "status": "failed"
    }
    {
        "key_id": "aaaee1b1-7a2f-4c0b-8271-4e2b41c1bf01",
        "api_key": "caf1694e-b8a4-4082-82fc-105a0a63eafe"
    }
    {
        "token": "a4p0pZ2x3aEk9TYGxPZldm0qvWQknTXTINPZxNpIZ32yWmiOFtGqv2mEU7nJlQO6",
        "created_at": "2025-07-10T06:59:05.72Z"
    }
    {
        "slug": "invalid-input",
        "message": "api_key is required"
    }

    limit

    optional, Limit per page

    integer

    page

    optional, Current page number

    integer

    Content-Type

    Required

    application/json

    Authorization

    Required

    Bearer <token>

    batchId

    Required

    This is received from the Create Dynamic Call Records API response

    string

    Authenticationarrow-up-right
    Generate Access Tokenarrow-up-right
    {
        "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
        "batch_id": "0ca10281-11a0-4f86-bb27-7452da543cb6",
        "data": [
            {
                "id": "c458227a-a730-4ced-81b4-19c21ea8d97c",
                "caller_number": "************",
                "receiver_number": "************",
                "label_id": "c6d86658-008d-4c08-98fb-2bf2649d59a5",
                "dynamic_label_name": "Centro Bank KYC Department",
                "dynamic_call_reason": "Calling you for KYC Verification",
                "starts_at": 1753246858000,
                "ends_at": 1753362058000,
                "status_info": {
                    "status": "success"
                },
                "created_at": "2025-07-23T09:07:32.21Z"
            }
        ]
    }
    {
        "slug": "authorization-error",
        "message": "please login again"
    }
    circle-check

    {clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

    triangle-exclamation

    This API can handle 60 requests per minute per token.

    circle-exclamation

    For Authorization Token kindly refer the Authenticationarrow-up-right section followed by Generate Access Tokenarrow-up-right API

    Headers

    Name
    Value

    Content-Type

    Required

    application/json

    Authorization

    Required

    Bearer <token>

    Body

    Name
    Type
    Validations
    Description

    call_records

    array of object

    min:1 max: 500

    Required Call record object Maximum batch size is 500 per API Call

    dynamic_call_reason

    string

    minLength: 10 maxLength: 100

    Optional

    The call reason to be displayed.

    caller_number

    string

    NA

    hashtag
    Request

    Response

    here

    Feature-set ID

    This API is used to get feature-set ID to list and delist numbers.

    circle-check

    Replace the {{BaseURL}} with the one mentioned here

    GET{{BaseURL}}/clients/{clientAccountId}/number_management/feature_sets

    circle-check

    {clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

    circle-exclamation

    For Authorization Token kindly refer the section followed by API

    hashtag
    Query Parameters

    Name
    Value
    Type

    hashtag
    Header

    Name
    Value

    Response

    {
      "call_records":[
            {
              "label_id": "c6d86658-008d-4c08-98fb-2bf2649d59a5",
              "dynamic_label_name": "Centro Bank KYC Department",
              "dynamic_call_reason":  "Calling you for KYC Verification",
              "caller_number": "+91**********",
              "receiver_number": "91**********",
              "starts_at": 1753246858000,
              "ends_at": 1753362058000
            }
          ]
    }
    {
        "batch_id": "b72f7a40-ec3a-462f-b528-da0e8dc87e79"
    }
    {
        "slug": "authorization-error",
        "message": "please login again"
    }

    Required The phone no. of the caller

    ends_at

    integer (int64)

    Epoch timestamp in milliseconds

    Required The timestamp in milliseconds at which dynamic caller ID should expire. Should not be before the current timestamp. starts_at and ends_at cannot be more than 24 hrs apart

    label_id

    string

    NA

    Optional The label ID of the dynamic label to be used as caller id

    dynamic_label_name

    string

    minLength: 3 maxLength: 40

    Required The caller ID name to be displayed. If not present it will default to the label name of the label ID provided.

    receiver_number

    string

    NA

    Required The phone no. of the receiver

    starts_at

    integer (int64)

    Epoch timestamp in milliseconds

    Required The timestamp in milliseconds at which dynamic caller ID should start reflecting.

    starts_at and ends_at cannot be more than 24 hrs apart

    page

    optional, Current page number

    integer

    department_id

    optional, to filter by department

    string

    operation_id

    optional, to filter by operation

    string

    process_id

    optional, to filter by process or subprocess

    string

    limit

    optional, Limit per page

    integer

    Authorization

    Required

    Bearer <token>

    Authenticationarrow-up-right
    Generate Access Tokenarrow-up-right
    {
        "feature_sets": [
            {
                "id": "069d2e3a-41e6-41f9-a768-157d7e3bd6b9",
                "name": "prio1",
                "description": "",
                "status": "draft",
                "process_id": "318d5ae4-d2ad-4dc6-898a-861347ce279d",
                "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
                "label_id": "7c7ec202-96cc-4c5f-8b24-23cbc07a2a8a",
                "call_reason_id": "689f6ce5-c03d-4d96-8af8-c8fb9b52510d",
                "video_caller_id": null,
                "business_profile_id": null,
                "call_me_back": false,
                "survey": false,
                "department_id": "8e16b0d3-0953-40d0-9079-2a412363063e",
                "department_name": "QA Test new flow edit",
                "operation_id": "14349208-1e61-4f88-81c5-2f55dfc755db",
                "calling_operation_id": "690aa251-122e-4cbc-87a8-8d270fffb218",
                "calling_operation_name": "Delivery",
                "process_name": "newProcess",
                "sub_process_name": "subPro",
                "created_at": "2025-07-16T10:15:04.800203Z",
                "updated_at": "2025-07-16T10:15:04.800203Z"
            },
            {
                "id": "684de058-3d09-4b05-ba65-3612b5cf616b",
                "name": "New Feature Set-7",
                "description": "",
                "status": "draft",
                "process_id": "510ab615-1dda-4cac-97f3-7975e10a4cd5",
                "client_account_id": "91c173bb-28d8-4030-9722-8663ff9589f3",
                "label_id": "7c7ec202-96cc-4c5f-8b24-23cbc07a2a8a",
                "call_reason_id": "f435f291-6508-4362-84bb-00100f008544",
                "video_caller_id": null,
                "business_profile_id": null,
                "call_me_back": false,
                "survey": false,
                "department_id": "85c87025-35e2-4e68-9257-0517609cfd3d",
                "department_name": "Listingdelisting",
                "operation_id": "358328f9-d99e-49ec-927e-28029efb0dde",
                "calling_operation_id": "0cb2cb40-8c23-44ce-b546-6d9b6b66af88",
                "calling_operation_name": "Sales",
                "process_name": "Listingdelisting",
                "sub_process_name": "",
                "created_at": "2025-07-16T10:12:24.561896Z",
                "updated_at": "2025-07-16T10:12:24.561896Z"
            }
        ],
        "pagination_info": {
            "total_page_count": 2,
            "current_page": 1,
            "page_limit": 50
        }
    }
    {
        "slug": "forbidden-error",
        "message": "not authorized. please contact your admin."
    }

    Call Personalisation Real-time API

    Sync API to send call personalisation data for a Caller-Receiver combination. This is a real-time API

    circle-check

    Replace the {{BaseURL}} with the one mentioned here

    POST {{BaseURL}}/clients/{clientAccountId}/dynamic_call_record

    circle-check

    {clientAccountId} : This can be taken directly from the self serve portal under the Manage API Keys Page

    Headers

    Name
    Value

    Body

    Name
    Type
    Validations
    Description

    hashtag
    Request

    Response

    triangle-exclamation

    API Rate Limits

    • Truecaller for Business restricts API requests when you exceed the limits entitled to your business.

    • Each token can handle 100 requests per second

    • Maximum of 10 tokens can be created in every 30 minutes

    label_id

    string

    NA

    Optional The label ID of the dynamic label to be used as caller id

    label_name

    string

    minLength: 3 maxLength: 40

    Required The caller ID name to be displayed. If not present it will default to the label name of the label ID provided.

    receiver

    string

    Format Supported:"91**********" Receiver number should be without the “+” character.

    Required The phone no. of the receiver

    starts_at

    integer (int64)

    NA

    Required The timestamp in milliseconds at which dynamic caller ID should start reflecting.

    starts_at and ends_at cannot be more than 24 hrs apart

    Content-Type

    Required

    application/json

    Authorization

    Required

    Bearer <token>

    call_reason

    string

    minLength: 3 maxLength: 10

    Optional.

    The call reason to be displayed.

    caller

    string

    Format Supported:"91**********"

    Caller number should be without the “+” character.

    Required The phone no. of the caller

    ends_at

    integer (int64)

    NA

    {
      "call_reason": "Flower Delivery",
      "caller": "91**********",
      "ends_at":1751886000000,
      "label_id": "255297eb-7f13-44f9-967a-f287ff0f5025",
      "label_name": "Delivery",
      "receiver": "91**********",
      "starts_at": 1751879424883
    }

    Required The timestamp in milliseconds at which dynamic caller ID should expire. Should not be before the current timestamp. starts_at and ends_at cannot be more than 24 hrs apart

    {
        "status": "success",
        "message": "Records Uploaded Successfully. BatchID: 6dabe53b-14a5-44bf-9bab-3dda8b0fee54"
    }
    {
        "status": "failure",
        "message": "ends_at cannot be older than current time. BatchID: d30ca8f7-ae64-4c30-8700-d63f6b2f1dd6"
    }
    {
        "slug": "authorization-error",
        "message": "Missing authorization header"
    }