This page describes how to get batch predictions using BigQuery. Replace the following values: You can create a batch job through the Google Cloud console, the Google Gen AI SDK,
or the REST API. The job and your table must be in the same region. To create a batch prediction job, use the
Before using any of the request data,
make the following replacements:
HTTP method and URL:
Request JSON body:
To send your request, choose one of these options:
Save the request body in a file named
Save the request body in a file named You should receive a JSON response similar to the following.
To learn more, see the
SDK reference documentation.
Set environment variables to use the Gen AI SDK with Vertex AI:
After the job is submitted, you can check the status of your batch job using
API, SDK and Cloud Console. To monitor a batch prediction job, use the
Before using any of the request data,
make the following replacements:
HTTP method and URL:
To send your request, choose one of these options:
Execute the following command:
Execute the following command:
You should receive a JSON response similar to the following.
To learn more, see the
SDK reference documentation.
Set environment variables to use the Gen AI SDK with Vertex AI:
The status of the a given batch job can be any of the following: When a batch prediction task completes, the output is stored in the
BigQuery table that you specified in your request. For succeeded rows, model responses are stored in the Successful example Failed example Request Response1. Prepare your inputs
BigQuery storage input
gcloud iam service-accounts add-iam-policy-binding
command as follows:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/bigquery.user"
* <var>PROJECT_ID</var>: The project that your service account was
created in.
* <var>SERVICE_ACCOUNT_ID</var>: The ID for the service account.
request
column is required, and must be valid JSON. This
JSON data represents your input for the model.request
column must match the structure of a
GenerateContentRequest
.
+ Your input table can have column data types other than
request
. These columns can have BigQuery data types except
for the following: array, struct, range, datetime, and
geography. These columns are ignored for content generation but
included in the output table.
Example input (JSON)
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Give me a recipe for banana bread."
}
]
}
],
"system_instruction": {
"parts": [
{
"text": "You are a chef."
}
]
}
}
2. Submit a batch job
Console
REST
projects.locations.batchPredictionJobs.create
method.
publishers/google/models/gemini-2.0-flash-001
; or the tuned endpoint name, for example,
projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID
,
where MODEL_ID is the model ID of the tuned model.
bq://myproject.mydataset.input_table
. The dataset must be located in the same region as the batch prediction job. Multi-region datasets are not supported.bigquery
. To output to
a Cloud Storage bucket, specify jsonl
.
bigqueryDestination
. For
Cloud Storage, specify gcsDestination
.
outputUri
. For
Cloud Storage, specify outputUriPrefix
.
bq://myproject.mydataset.output_result
. The region of the output
BigQuery dataset must be the same as the Vertex AI batch
prediction job.
For Cloud Storage, specify the bucket and directory location such as
gs://mybucket/path/to/output
.
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs
{
"displayName": "my-bigquery-batch-prediction-job",
"model": "MODEL_PATH",
"inputConfig": {
"instancesFormat": "bigquery",
"bigquerySource":{
"inputUri" : "INPUT_URI"
}
},
"outputConfig": {
"predictionsFormat": "OUTPUT_FORMAT",
"DESTINATION": {
"OUTPUT_URI_FIELD_NAME": "OUTPUT_URI"
}
}
}
curl
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/batchPredictionJobs"PowerShell
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/batchPredictionJobs" | Select-Object -Expand ContentPython
Install
pip install --upgrade google-genai
# 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
3. Monitor the job status and progress
Console
REST
projects.locations.batchPredictionJobs.get
method and view the CompletionStats
field in the response.
GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID
curl
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID"PowerShell
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/batchPredictionJobs/BATCH_JOB_ID" | Select-Object -Expand ContentPython
Install
pip install --upgrade google-genai
# 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
JOB_STATE_PENDING
: Queue for capacity. The job can be in queue
state up
to 72-hour before entering running
state.JOB_STATE_RUNNING
: The input file was successfully validated and the batch
is currently being run.JOB_STATE_SUCCEEDED
: The batch has been completed and the results are
readyJOB_STATE_FAILED
: the input file has failed the validation process, or
could not be completed within the 24-hour time window after entering
RUNNING
state.JOB_STATE_CANCELLING
: the batch is being cancelledJOB_STATE_CANCELLED
: the batch was cancelled4. Retrieve batch output
response
column.
Otherwise, error details are stored in the status
column for further
inspection.Output example
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "In a medium bowl, whisk together the flour, baking soda, baking powder."
}
]
},
"finishReason": "STOP",
"safetyRatings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE",
"probabilityScore": 0.14057204,
"severity": "HARM_SEVERITY_NEGLIGIBLE",
"severityScore": 0.14270912
}
]
}
],
"usageMetadata": {
"promptTokenCount": 8,
"candidatesTokenCount": 396,
"totalTokenCount": 404
}
}
{"contents":[{"parts":{"text":"Explain how AI works in a few words."},"role":"tester"}]}
Bad Request: {"error": {"code": 400, "message": "Please use a valid role: user, model.", "status": "INVALID_ARGUMENT"}}
Batch prediction for BigQuery
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-29 UTC.