The CountTokens API calculates the number of input tokens before sending a request to the Gemini API.
Use the CountTokens API to prevent requests from exceeding the model context window, and estimate potential costs based on billable characters or tokens.
The CountTokens API can use the same contents
parameter as Gemini API
inference requests.
Supported models
- Gemini 2.5 Flash Image Preview (Preview)
- Gemini 2.5 Flash-Lite
- Gemini 2.0 Flash with image generation (Preview)
- Vertex AI Model Optimizer (Experimental)
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.0 Flash
- Gemini 2.0 Flash-Lite
Parameter list
This class consists of two main properties: role
and parts
. The role
property denotes the individual producing the content, while the parts
property contains multiple elements, each representing a segment of data within a
message.
role
Optional: string
The identity of the entity that creates the message. Set the string to one of the following:
-
user
: This indicates that the message is sent by a real person. For example, a user-generated message. -
model
: This indicates that the message is generated by the model.
The model
value is used to insert messages from the model into the conversation during multi-turn conversations.
For non-multi-turn conversations, this field can be left blank or unset.
parts
part
A list of ordered parts that make up a single message. Different parts may have different IANA MIME types .
Part
A data type containing media that is part of a multi-part Content
message.
text
Optional: string
A text prompt or code snippet.
inline_data
Optional: Blob
Inline data in raw bytes.
file_data
Optional: FileData
Data stored in a file.
Blob
Content blob. If possible this send as text rather than raw bytes.
FileData
URI based data.
mime_type
string
IANA MIME type of the data.
file_uri
string
The Cloud Storage URI to the file storing the data.
system_instruction
This field is for user provided system_instructions
. It is the same
as contents
but with a limited support of the content types.
role
string
IANA MIME type of the data. This field is ignored internally.
parts
Part
Text only. Instructions that users want to pass to the model.
FunctionDeclaration
A structured representation of a function declaration as defined by the OpenAPI 3.0 specification that represents a function the model may generate JSON inputs for.
name
string
The name of the function to call.
description
Optional: string
Description and purpose of the function.
parameters
Optional: Schema
Describes the parameters of the function in the OpenAPI JSON Schema Object format: OpenAPI 3.0 specification .
response
Optional: Schema
Describes the output from the function in the OpenAPI JSON Schema Object format: OpenAPI 3.0 specification .
Examples
Get token count from text prompt
This example counts the tokens of a single text prompt:
REST
To get the token count and the number of billable characters for a prompt by using the Vertex AI API, send aPOST
request to the publisher model
endpoint. Before using any of the request data, make the following replacements:
- LOCATION
: The region to process the request. Available
options include the following:
Click to expand a partial list of available regions
-
us-central1
-
us-west4
-
northamerica-northeast1
-
us-east4
-
us-west1
-
asia-northeast3
-
asia-southeast1
-
asia-northeast1
-
- PROJECT_ID : Your project ID .
- MODEL_ID : The model ID of the multimodal model that you want to use.
- ROLE
:
The role in a conversation associated with the content. Specifying a role is required even in
singleturn use cases.
Acceptable values include the following:
-
USER
: Specifies content that's sent by you.
-
- TEXT : The text instructions to include in the prompt.
HTTP method and URL:
POST https:// LOCATION -aiplatform.googleapis.com/v1/projects/ PROJECT_ID /locations/ LOCATION /publishers/google/models/ MODEL_ID :countTokens
Request JSON body:
{ "contents": [{ "role": " ROLE ", "parts": [{ "text": " TEXT " }] }] }
To send your request, choose one of these options:
curl
Save the request body in a file named request.json
,
and execute the following command:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https:// LOCATION -aiplatform.googleapis.com/v1/projects/ PROJECT_ID /locations/ LOCATION /publishers/google/models/ MODEL_ID :countTokens"
PowerShell
Save the request body in a file named request.json
,
and execute the following command:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https:// LOCATION -aiplatform.googleapis.com/v1/projects/ PROJECT_ID /locations/ LOCATION /publishers/google/models/ MODEL_ID :countTokens" | Select-Object -Expand Content
You should receive a JSON response similar to the following.
Python
Install
pip install --upgrade google-genai
To learn more, see the SDK reference documentation .
Set environment variables to use the Gen AI SDK with Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT = GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION = global export GOOGLE_GENAI_USE_VERTEXAI = True
Go
Learn how to install or update the Go .
To learn more, see the SDK reference documentation .
Set environment variables to use the Gen AI SDK with Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT = GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION = global export GOOGLE_GENAI_USE_VERTEXAI = True
Node.js
Install
npm install @google/genai
To learn more, see the SDK reference documentation .
Set environment variables to use the Gen AI SDK with Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT = GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION = global export GOOGLE_GENAI_USE_VERTEXAI = True
Java
Learn how to install or update the Java .
To learn more, see the SDK reference documentation .
Set environment variables to use the Gen AI SDK with Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT = GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION = global export GOOGLE_GENAI_USE_VERTEXAI = True
Get token count from media prompt
This example counts the tokens of a prompt that uses various media types.
REST
To get the token count and the number of billable characters for a prompt by using the Vertex AI API, send aPOST
request to the publisher model
endpoint. Before using any of the request data, make the following replacements:
- LOCATION
: The region to process the request. Available
options include the following:
Click to expand a partial list of available regions
-
us-central1
-
us-west4
-
northamerica-northeast1
-
us-east4
-
us-west1
-
asia-northeast3
-
asia-southeast1
-
asia-northeast1
-
- PROJECT_ID : .
- MODEL_ID : The model ID of the multimodal model that you want to use.
- ROLE
:
The role in a conversation associated with the content. Specifying a role is required even in
singleturn use cases.
Acceptable values include the following:
-
USER
: Specifies content that's sent by you.
-
- TEXT : The text instructions to include in the prompt.
- FILE_URI
:
The URI or URL of the file to include in the prompt. Acceptable values include the following:
- Cloud Storage bucket URI:
The object must either be publicly readable or reside in
the same Google Cloud project that's sending the request. For
gemini-2.0-flash
andgemini-2.0-flash-lite
, the size limit is 2 GB. - HTTP URL: The file URL must be publicly readable. You can specify one video file, one audio file, and up to 10 image files per request. Audio files, video files, and documents can't exceed 15 MB.
- YouTube video URL: The YouTube video must be either owned by the account that you used to sign in to the Google Cloud console or is public. Only one YouTube video URL is supported per request.
When specifying a
fileURI
, you must also specify the media type (mimeType
) of the file. If VPC Service Controls is enabled, specifying a media file URL forfileURI
is not supported. - Cloud Storage bucket URI:
The object must either be publicly readable or reside in
the same Google Cloud project that's sending the request. For
- MIME_TYPE
:
The media type of the file specified in the
data
orfileUri
fields. Acceptable values include the following:Click to expand MIME types
-
application/pdf
-
audio/mpeg
-
audio/mp3
-
audio/wav
-
image/png
-
image/jpeg
-
image/webp
-
text/plain
-
video/mov
-
video/mpeg
-
video/mp4
-
video/mpg
-
video/avi
-
video/wmv
-
video/mpegps
-
video/flv
-
HTTP method and URL:
POST https:// LOCATION -aiplatform.googleapis.com/v1/projects/ PROJECT_ID /locations/ LOCATION /publishers/google/models/ MODEL_ID :countTokens
Request JSON body:
{ "contents": [{ "role": " ROLE ", "parts": [ { "file_data": { "file_uri": " FILE_URI ", "mime_type": " MIME_TYPE " } }, { "text": " TEXT } ] }] }
To send your request, choose one of these options:
curl
Save the request body in a file named request.json
,
and execute the following command:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https:// LOCATION -aiplatform.googleapis.com/v1/projects/ PROJECT_ID /locations/ LOCATION /publishers/google/models/ MODEL_ID :countTokens"
PowerShell
Save the request body in a file named request.json
,
and execute the following command:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https:// LOCATION -aiplatform.googleapis.com/v1/projects/ PROJECT_ID /locations/ LOCATION /publishers/google/models/ MODEL_ID :countTokens" | Select-Object -Expand Content
You should receive a JSON response similar to the following.
Python
Install
pip install --upgrade google-genai
To learn more, see the SDK reference documentation .
Set environment variables to use the Gen AI SDK with Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT = GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION = global export GOOGLE_GENAI_USE_VERTEXAI = True
Go
Learn how to install or update the Go .
To learn more, see the SDK reference documentation .
Set environment variables to use the Gen AI SDK with Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT = GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION = global export GOOGLE_GENAI_USE_VERTEXAI = True
Node.js
Install
npm install @google/genai
To learn more, see the SDK reference documentation .
Set environment variables to use the Gen AI SDK with Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT = GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION = global export GOOGLE_GENAI_USE_VERTEXAI = True
Java
Learn how to install or update the Java .
To learn more, see the SDK reference documentation .
Set environment variables to use the Gen AI SDK with Vertex AI:
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT = GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION = global export GOOGLE_GENAI_USE_VERTEXAI = True
What's next
- Learn more about the Gemini API .