> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.termina.ai/api-reference/deal-management/group/batch-lookup-groups/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.termina.ai/_mcp/server. # Batch Lookup Groups POST https://app.termina.ai/api/v1/group/batch-lookup Content-Type: application/json Batch lookup groups by IDs with pagination. Returns only groups the user has membership in. Silently filters out groups without access (no errors for inaccessible groups). Super users can see all groups. Reference: https://docs.termina.ai/api-reference/deal-management/group/batch-lookup-groups ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Servers - `https://app.termina.ai` (Production server, default) - `https://app.termina.dev` (Development server) - `http://localhost:8000` (Local development server) ## Request ### Query parameters - `sort_by` (string, optional, nullable) - `sort_order` (string, optional, default: asc) - `page` (integer, optional, default: 1) - `page_size` (integer, optional, default: 100) ### Body (application/json) This endpoint expects a GetGroupsRequest. - `group_ids` (list of integer, required) — List of group IDs to retrieve ## Response ### 200 Successful Response - `total_count` (integer, required) - `page` (integer, required) - `page_size` (integer, required) - `data` (list of GroupResponse, required) ## Errors ### 422 Unprocessable Entity Error Validation Error - `detail` (list of ValidationError, optional) ## Types ### GroupResponse - `name` (string, required) — The name of the group - `account` (string, required) — The account of the group. Must be a valid domain, URL, or email. The account will be normalized to a canonical form. - `id` (integer, required) - `account_manager` (BaseUserResponse, required, nullable) - `user_count` (integer, required, nullable) - `deal_count` (integer, required, nullable) - `thumbnail_url` (string, optional, nullable) — The thumbnail URL of the group - `analysis_email` (string, optional, nullable) — The email address for analysis to be sent to - `data_api_access` (boolean, optional, nullable) — Whether the group has access to the data API - `chatbot_enabled` (boolean, optional, nullable) — Whether the group has access to the AI chatbot - `created_at` (string, optional) - `updated_at` (string, optional, nullable) - `is_archived` (boolean, optional, nullable) ### ValidationError - `loc` (list of ValidationErrorLocItems, required) - `msg` (string, required) - `type` (string, required) - `input` (any, optional) - `ctx` (ValidationErrorCtx, optional) ### BaseUserResponse - `name` (string, required) — The name of the user - `email` (string, required) — The email address of the user - `id` (integer, required) - `api_key_final_characters` (string, required, nullable) - `thumbnail_url` (string, optional, nullable) — The thumbnail URL of the user - `created_at` (string, optional) - `updated_at` (string, optional, nullable) - `is_archived` (boolean, optional, nullable) - `super_user` (boolean, optional, nullable) ### ValidationErrorLocItems ### ValidationErrorCtx ## Examples **Request** ```json { "group_ids": [ 1, 2, 3 ] } ``` **Response** ```json { "total_count": 1, "page": 1, "page_size": 1, "data": [ { "name": "string", "account": "example.com", "id": 1, "account_manager": { "name": "string", "email": "string", "id": 1, "api_key_final_characters": "string", "thumbnail_url": "string", "created_at": "2024-01-15T09:30:00Z", "updated_at": "2024-01-15T09:30:00Z", "is_archived": true, "super_user": true }, "user_count": 1, "deal_count": 1, "thumbnail_url": "string", "analysis_email": "string", "data_api_access": true, "chatbot_enabled": true, "created_at": "2024-01-15T09:30:00Z", "updated_at": "2024-01-15T09:30:00Z", "is_archived": true } ] } ``` **SDK Code** ```python import requests url = "https://app.termina.ai/api/v1/group/batch-lookup" payload = { "group_ids": [1, 2, 3] } headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://app.termina.ai/api/v1/group/batch-lookup'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{"group_ids":[1,2,3]}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://app.termina.ai/api/v1/group/batch-lookup" payload := strings.NewReader("{\n \"group_ids\": [\n 1,\n 2,\n 3\n ]\n}") 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://app.termina.ai/api/v1/group/batch-lookup") 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 = "{\n \"group_ids\": [\n 1,\n 2,\n 3\n ]\n}" 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://app.termina.ai/api/v1/group/batch-lookup") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{\n \"group_ids\": [\n 1,\n 2,\n 3\n ]\n}") .asString(); ``` ```php request('POST', 'https://app.termina.ai/api/v1/group/batch-lookup', [ 'body' => '{ "group_ids": [ 1, 2, 3 ] }', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://app.termina.ai/api/v1/group/batch-lookup"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"group_ids\": [\n 1,\n 2,\n 3\n ]\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = ["group_ids": [1, 2, 3]] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://app.termina.ai/api/v1/group/batch-lookup")! 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() ```