> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://ref.scoutos.com/api-sdk/endpoints/documents/update-batch/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://ref.scoutos.com/_mcp/server. # Update multiple documents POST https://api.scoutos.com/v2/collections/{collection_id}/tables/{table_id}/documents/update Content-Type: application/json Reference: https://ref.scoutos.com/api-sdk/endpoints/documents/update-batch ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Path parameters - `collection_id` (string, required) - `table_id` (string, required) ### Query parameters - `job_id` (string, optional, nullable) — The job id responsible for the document creation/update - `sync_id` (string, optional, nullable) — The sync id the job belongs to thats responsible for the document creation/update - `await_completion` (boolean, optional, default: true) — Whether to wait for document creation/update to complete - `mode` (string, optional, nullable, default: merge) — The mode to use for the document creation/update - `merge_fields` (boolean, optional, default: false) — Whether to merge only provided fields into existing document ### Body (application/json) This endpoint expects a documents_update_batch_Request. - `documents_update_batch_Request` ## Response ### 200 Successful Response - `data` (list of Document, required) - `status` (string, optional, nullable) ## Errors ### 422 Unprocessable Entity Error Validation Error - `detail` (list of ValidationError, optional) ## Types ### Document - `document_id` (string, required, nullable) - `created_by` (DocumentCreatedBy, required) - `last_updated_by` (DocumentLastUpdatedBy, required) - `data` (map from string to DocumentData, optional) - `document_data_id` (string, optional, nullable) - `created_at` (datetime, optional) - `last_updated_at` (datetime, optional) - `revision_id` (string, optional, nullable) - `job_id` (string, optional, nullable) - `sync_id` (string, optional, nullable) - `studio_row_id` (string, optional, nullable) - `cells` (map from string to any, optional, nullable) - `search_metadata` (list of Details, optional, nullable) — Present when document was returned from a search query; enables relevance sorting and match highlighting. ### ValidationError - `loc` (list of ValidationErrorLocItems, required) - `msg` (string, required) - `type` (string, required) ### DocumentCreatedBy ### DocumentLastUpdatedBy ### DocumentData ### Details - `vector_distance` (double, optional, nullable) - `bm25_score` (double, optional, nullable) - `hybrid_score` (double, optional, nullable) - `similarity_score` (double, optional, nullable) ### ValidationErrorLocItems ### LegacyIdentity - `type` (enum, required) - Allowed values: `user`, `api_key`, `system` - `details` (LegacyIdentityDetails, required, nullable) ### Actor - `scout_organization_id` (string, required) - `identity` (LegacyIdentity, required) - `actor_identity` (ActorIdentity, required) - `permissions` (list of string, optional) ### LegacyIdentityDetails ### ActorIdentity - `type` (ActorIdentityType, required) - `id` (ActorIdentityId, required) ### UserIdentityDetails - `user_id` (string, required) - `org_id` (string, required) - `scout_organization_id` (string, required) - `email` (map from string to any, required) ### ApiKeyIdentityDetails - `api_key` (map from string to any, optional) ### ActorIdentityType ### ActorIdentityId ## Examples **Request** ```json {} ``` **Response** ```json { "data": [ { "document_id": "doc_987654321", "created_by": { "type": "user", "details": { "api_key": {} } }, "last_updated_by": { "type": "user", "details": { "api_key": {} } }, "data": {}, "document_data_id": "data_123456789", "created_at": "2024-01-15T09:30:00Z", "last_updated_at": "2024-01-15T09:30:00Z", "revision_id": "rev_20240115_001", "job_id": "job_20240115_001", "sync_id": "sync_20240115_001", "studio_row_id": "row_20240115_001", "cells": {} } ], "status": "success" } ``` **SDK Code** ```python import requests url = "https://api.scoutos.com/v2/collections/collection_id/tables/table_id/documents/update" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```typescript import { ScoutClient } from "scoutos"; const client = new ScoutClient({ apiKey: "YOUR_API_KEY" }); await client.documents.updateBatch("collection_id", "table_id", { job_id: "job_id", sync_id: "sync_id", await_completion: true, mode: "mode", merge_fields: true, body: { "key": true } }); ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.scoutos.com/v2/collections/collection_id/tables/table_id/documents/update" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.scoutos.com/v2/collections/collection_id/tables/table_id/documents/update") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.scoutos.com/v2/collections/collection_id/tables/table_id/documents/update") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://api.scoutos.com/v2/collections/collection_id/tables/table_id/documents/update', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.scoutos.com/v2/collections/collection_id/tables/table_id/documents/update"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.scoutos.com/v2/collections/collection_id/tables/table_id/documents/update")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```