> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.reka.ai/vision/api-reference/features/trigger-objects/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.reka.ai/_mcp/server. # Trigger Objects POST https://vision-agent.api.reka.ai/v2/videos/{video_id}/features/objects Content-Type: application/json Dispatch object detection and tracking on video chunks. Known issues: - Only detects people (via /person/track). The feature is named "objects" but other BoundingBoxType values (face, text, facecam) are never produced here; filtering get_objects by those types silently returns nothing. - person_id is always null in API responses. The tracker assigns integer tracking IDs per chunk, which are converted to UUID strings before DB storage. The API reader calls int() on those UUIDs, which always fails. - person_id is chunk-scoped, not video-scoped. The tracker resets IDs at each chunk boundary, so the same person gets a different person_id in every chunk — cross-chunk re-identification does not work. Reference: https://docs.reka.ai/vision/api-reference/features/trigger-objects ## Authentication - `X-Api-Key` header (required) — API key authentication via X-Api-Key header - `Authorization` header (bearer token, required) — Bearer token authentication via Authorization header ## Request ### Path parameters - `video_id` (string, required) ### Headers - `X-Enable-Overwrite-Metering` (string, optional, nullable) ### Body (application/json) This endpoint expects an ObjectsTriggerRequest. - `force` (boolean, optional, default: false) - `force_feature_queue` (boolean, optional, default: false) - `person_localization` (PersonLocalizationConfig, optional) ## Response ### 200 Successful Response - `video_id` (string, required) - `feature` (enum, required) - Allowed values: `transcript`, `captions`, `reel_captions`, `embeddings`, `objects`, `scenes`, `audio_events`, `chapters`, `thumbnails` - `status` (enum, required) - Allowed values: `none`, `pending`, `processing`, `ready`, `failed`, `blocked` ## Types ### PersonLocalizationConfig - `max_fps` (integer, optional, default: 15) - `max_failed_frames` (integer, optional, default: 10) - `num_photos_per_person` (integer, optional, default: 3) - `max_objects_per_chunk` (integer, optional, default: 10) - `conf` (double, optional, default: 0.9) - `iou` (double, optional, default: 0.7) ## Examples **Request** ```json {} ``` **Response** ```json { "video_id": "string", "feature": "transcript", "status": "none" } ``` **SDK Code** ```python import requests url = "https://vision-agent.api.reka.ai/v2/videos/video_id/features/objects" payload = {} headers = { "X-Api-Key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://vision-agent.api.reka.ai/v2/videos/video_id/features/objects'; const options = { method: 'POST', headers: {'X-Api-Key': '', 'Content-Type': 'application/json'}, body: '{}' }; 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://vision-agent.api.reka.ai/v2/videos/video_id/features/objects" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("X-Api-Key", "") 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://vision-agent.api.reka.ai/v2/videos/video_id/features/objects") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["X-Api-Key"] = '' 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://vision-agent.api.reka.ai/v2/videos/video_id/features/objects") .header("X-Api-Key", "") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://vision-agent.api.reka.ai/v2/videos/video_id/features/objects', [ 'body' => '{}', 'headers' => [ 'Content-Type' => 'application/json', 'X-Api-Key' => '', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://vision-agent.api.reka.ai/v2/videos/video_id/features/objects"); var request = new RestRequest(Method.POST); request.AddHeader("X-Api-Key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "X-Api-Key": "", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://vision-agent.api.reka.ai/v2/videos/video_id/features/objects")! 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() ``` > One OpenAI-compatible API for Reka models and a curated selection of open models.