Streams data into BigQuery one record at a time without needing to run a load job.
HTTP request
POST https://bigquery.googleapis.com/bigquery/v2/projects/{projectId}/datasets/{datasetId}/tables/{tableId}/insertAll
The URL uses gRPC Transcoding syntax.
Path parameters
| Parameters | |
|---|---|
projectId | 
                
                   
 Required. Project ID of the destination.  | 
              
datasetId | 
                
                   
 Required. Dataset ID of the destination.  | 
              
tableId | 
                
                   
 Required. Table ID of the destination.  | 
              
Request body
The request body contains data with the following structure:
| JSON representation | 
|---|
{ "kind": string, "skipInvalidRows": boolean, "ignoreUnknownValues": boolean, "templateSuffix": string, "rows": [ { "insertId": string, "json": { object } } ], "traceId": string }  | 
                
| Fields | |
|---|---|
kind | 
                  
                     
 Optional. The resource type of the response. The value is not checked at the backend. Historically, it has been set to "bigquery#tableDataInsertAllRequest" but you are not required to set it.  | 
                
skipInvalidRows | 
                  
                     
 Optional. Insert all valid rows of a request, even if invalid rows exist. The default value is false, which causes the entire request to fail if any invalid rows exist.  | 
                
ignoreUnknownValues | 
                  
                     
 Optional. Accept rows that contain values that do not match the schema. The unknown values are ignored. Default is false, which treats unknown values as errors.  | 
                
templateSuffix | 
                  
                     
 Optional. If specified, treats the destination table as a base template, and inserts the rows into an instance table named "{destination}{templateSuffix}". BigQuery will manage creation of the instance table, using the schema of the base template table. See https://cloud.google.com/bigquery/streaming-data-into-bigquery#template-tables for considerations when working with templates tables.  | 
                
rows[] | 
                  
                     
  | 
                
rows[].insertId | 
                  
                     
 Insertion ID for best-effort deduplication. This feature is not recommended, and users seeking stronger insertion semantics are encouraged to use other mechanisms such as the BigQuery Write API.  | 
                
rows[].json | 
                  
                     
 Data for a single row.  | 
                
traceId | 
                  
                     
 Optional. Unique request trace id. Used for debugging purposes only. It is case-sensitive, limited to up to 36 ASCII characters. A UUID is recommended.  | 
                
Response body
Describes the format of a streaming insert response.
If successful, the response body contains data with the following structure:
| JSON representation | 
|---|
{
  "kind": string,
  "insertErrors": [
    {
      "index": integer,
      "errors": [
        {
          object ( | 
                  
| Fields | |
|---|---|
kind | 
                    
                       
 Returns "bigquery#tableDataInsertAllResponse".  | 
                  
insertErrors[] | 
                    
                       
 Describes specific errors encountered while processing the request.  | 
                  
insertErrors[].index | 
                    
                       
 The index of the row that error applies to.  | 
                  
insertErrors[].errors[] | 
                    
                       
 Error information for the row indicated by the index property.  | 
                  
Authorization scopes
Requires one of the following OAuth scopes:
https://www.googleapis.com/auth/bigqueryhttps://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/bigquery.insertdata
For more information, see the Authentication Overview.