Skip to contentSkip to navigationSkip to topbar
Page toolsOn this page
Looking for more inspiration?Visit the

Understanding Conversation Intelligence billing


Conversation Intelligence uses a transparent, character-based billing model that's standardized across all channels.

This guide explains how billing works for Conversation Intelligence, including the pricing models for different types of language operators and how input and output characters are calculated for billing purposes.

(warning)

Transcription is billed separately

Transcription is billed as part of Twilio Voice, not Conversation Intelligence. Conversation Intelligence billing covers only the AI analysis performed by language operators. The conversation transcript is an input to that analysis, but the cost of generating the transcript itself is a Voice charge.


Operator pricing models

operator-pricing-models page anchor

Pricing is applied based on the type of operator used.

Operator typeBilling method
Twilio-authoredBilled at a flat rate based on the combined number of input and output characters.
CustomTwilio bills input and output characters at different rates.

For more information about billing and pricing, or for specific rates per 1,000 characters, see Conversation Intelligence pricing(link takes you to an external page).


How billing is calculated

how-billing-is-calculated page anchor

Billing is calculated per language operator execution, based on the actual volume of data processed by the AI. The total billable volume is the sum of input characters (data sent to the LLM) and output characters (results returned by the LLM).

(information)

Post-upgrade free units for upgraded accounts

All upgraded Twilio accounts receive [Post-upgrade free units (PUFU)] that apply automatically before any charges.

Input characters

input-characters page anchor

Input characters include all data sent to the LLM to generate a response. For pricing predictability, static components are billed once per execution, regardless of the number of internal LLM tool-calling steps, while dynamic components are billed only if a tool is triggered.

Static components

static-components page anchor

Static components are billed once per operator execution:

  1. Conversation transcript: The transcription of the conversation required for the LLM to perform conversational analysis.
  2. User prompt: The instructions to the LLM that you provide for custom operators, or that Twilio provides for Twilio-authored operators. This includes the prompt itself (spaces included), any training examples, and the JSON output format when applicable. If using parameters, this includes the final parameter values substituted into the prompt at execution time.
  3. System prompt: Additional metadata provided by Twilio required for the LLM to execute successfully.
  4. Tool definitions: If Conversation Memory or Enterprise Knowledge is enabled as context, the list of available tools (defined as a JSON schema) is added to input characters.

Dynamic components are billed as they occur during execution:

  • Tool results: If the operator actively uses a tool during execution (for example, retrieving a specific knowledge article), the text of that retrieved content is added to the input character count for that execution.
(information)

Estimating input characters

To estimate input characters per operator execution, sum the characters of your transcript, user prompt, system prompt, and tool definitions (if applicable). For the precise character count of a specific execution, see metadata.system.inputCharacters in GET /OperatorResults responses. Learn more about the operator result metadata.


Output characters are the aggregate characters generated by the LLM across all turns of a single execution. The character count includes:

  • Final response: The text or JSON returned to your application.
  • Tool requests: If the operator calls for customer or business context (for example, searching Enterprise Knowledge), the commands it generates to perform those searches are included in the output count.
(information)

Estimating output characters

To estimate output characters, consider the length of the response you expect from the LLM based on your prompt and use case. For the precise character count of a specific execution, see metadata.system.outputCharacters in GET /OperatorResults responses. Learn more about the operator result metadata.


How billing works end to end

how-billing-works-end-to-end page anchor

The following diagram shows how characters accumulate during a single operator execution and when billing events fire: